.Net 静态水印

所谓的软件水印就是把程序的版权信息和用户身份信息嵌入到程序中。根据不同阶段将信息嵌入到程序中可以分为静态水印和动态水印,静态水印是将信息写在代码中,而动态水印则是将信息保存在程序的执行状态中,而不是程序源代码本身。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace HelloWorld
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. Console.WriteLine("Plz input the string that you want to calculate :");
  13. string in_string=Console.ReadLine();
  14. Console.WriteLine(Length(in_string));
  15. }
  16. static int Length(string str)
  17. {
  18. return str.Length;
  19. }
  20. }
  21. }

选择工具 IL反汇编程序
导入编译后生成后的.exe文件,并转储
则得到下面的代码

  1. //  Microsoft (R) .NET Framework IL Disassembler.  Version 3.5.30729.1
  2.  
  3.  
  4. // Metadata version: v2.0.50727
  5. .assembly extern mscorlib
  6. {
  7.   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  8.   .ver 2:0:0:0
  9. }
  10. .assembly HelloWorld
  11. {
  12.   .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 0A 48 65 6C 6C 6F 57 6F 72 6C 64 00 00 )    // ...HelloWorld..
  13.   .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 00 00 00 )
  14.   .custom instance void [mscorlib]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 00 00 00 )
  15.   .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 09 4D 69 63 72 6F 73 6F 66 74 00 00 )       // ...Microsoft..
  16.   .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 0A 48 65 6C 6C 6F 57 6F 72 6C 64 00 00 )    // ...HelloWorld..
  17.   .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 1B 43 6F 70 79 72 69 67 68 74 20 C2 A9 20   // ...Copyright ..
  18.                                                                                                   4D 69 63 72 6F 73 6F 66 74 20 32 30 31 30 00 00 ) // Microsoft 2010..
  19.   .custom instance void [mscorlib]System.Reflection.AssemblyTrademarkAttribute::.ctor(string) = ( 01 00 00 00 00 )
  20.   .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 )
  21.   .custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 33 33 38 63 38 39 30 63 2D 38 37 32 66   // ..$338c890c-872f
  22.                                                                                                   2D 34 38 35 32 2D 39 66 37 36 2D 64 32 31 64 66   // -4852-9f76-d21df
  23.                                                                                                   35 31 38 35 66 37 30 00 00 )                      // 5185f70..
  24.   .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 )             // ...1.0.0.0..
  25.   // --- 下列自定义属性会自动添加,不要取消注释 -------
  26.   //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 )
  27.   .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
  28.   .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
  29.                                                                                                              63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  30.   .hash algorithm 0x00008004
  31.   .ver 1:0:0:0
  32. }
  33. .module HelloWorld.exe
  34. // MVID: {A9CAEE52-9DC8-47CB-BB6F-CF5E9CD08A25}
  35. .imagebase 0x00400000
  36. .file alignment 0x00000200
  37. .stackreserve 0x00100000
  38. .subsystem 0x0003       // WINDOWS_CUI
  39. .corflags 0x00000001    //  ILONLY
  40. // Image base: 0x03330000
  41.  
  42. // =============== CLASS MEMBERS DECLARATION ===================
  43. .class private auto ansi beforefieldinit HelloWorld.Program
  44.        extends [mscorlib]System.Object
  45. {
  46.   .method private hidebysig static void  Main(string[] args) cil managed
  47.   {
  48.     .entrypoint
  49.     // 代码大小       31 (0x1f)
  50.     .maxstack  1
  51.     .locals init ([0] string in_string)
  52.     IL_0000:  nop
  53.     IL_0001:  ldstr      "Plz input the string that you want to calculate :"
  54.     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  55.     IL_000b:  nop
  56.     IL_000c:  call       string [mscorlib]System.Console::ReadLine()
  57.     IL_0011:  stloc.0
  58.     IL_0012:  ldloc.0
  59.     IL_0013:  call       int32 HelloWorld.Program::Length(string)
  60.     IL_0018:  call       void [mscorlib]System.Console::WriteLine(int32)
  61.     IL_001d:  nop
  62.     IL_001e:  ret
  63.   } // end of method Program::Main
  64.   .method private hidebysig static int32
  65.           Length(string str) cil managed
  66.   {
  67.     // 代码大小       12 (0xc)
  68.     .maxstack  1
  69.     .locals init ([0] int32 CS$1$0000)
  70.     IL_0000:  nop
  71.     IL_0001:  ldarg.0
  72.     IL_0002:  callvirt   instance int32 [mscorlib]System.String::get_Length()
  73.     IL_0007:  stloc.0
  74.     IL_0008:  br.s       IL_000a
  75.     IL_000a:  ldloc.0
  76.     IL_000b:  ret
  77.   } // end of method Program::Length
  78.   .method public hidebysig specialname rtspecialname
  79.           instance void  .ctor() cil managed
  80.   {
  81.     // 代码大小       7 (0x7)
  82.     .maxstack  8
  83.     IL_0000:  ldarg.0
  84.     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
  85.     IL_0006:  ret
  86.   } // end of method Program::.ctor
  87. } // end of class HelloWorld.Program
  88.  
  89. // =============================================================
  90. // *********** 反汇编完成 ***********************
  91. // 警告: 创建了 Win32 资源文件 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\HelloWorld\HelloWorld\bin\Debug\121.res

在这两行
IL_000a: ldloc.0
IL_000b: ret
这件插入水印信息

  1. /* //水印代码 开始端
  2. IL_000b: .locals init(int32 returnvalue)
  3. IL_000c: stloc returnvalue
  4. IL_000d: ldstr "DEBUG -current value is '{0}'"
  5. IL_000f: ldstr "Copyright BUPTISC"
  6. IL_0010: call void [mscorlib]System.Console::WriteLine(string,object)
  7. IL_0011: ldloc returnvalue
  8. //水印代码 结束端*/


本文固定链接: http://www.ntxz.net/?p=1403 | 周忞 | 吉心的记事本



该日志由 吉心 于2010年11月08日发表在 C# 分类下, 你可以发表评论
在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: .Net 静态水印 | 周忞 | 吉心的记事本
关键字:

.Net 静态水印:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!