-
-
强名称居然无效,程序16进制下改了之后照样能运行(附步骤)
-
发表于:
2011-11-30 15:52
5378
-
强名称居然无效,程序16进制下改了之后照样能运行(附步骤)
真是纠结了。
还是我强名称没有加好啊。
我先sn.exe -k xxx.snk
然后 编译
csc /keyfile:xxx.snk firstsn.cs
生成的exe文件用 sn -Tp是可以看到key什么的
Assembly.GetExecutingAssembly 也是有数据的。
但是我ue改了几个变量字符 程序居然运行正常。
-----------------------------------------------------------------------
重新写下步骤
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\sn.exe -k key.snk
生成了一个 1k大的 key.snk
然后
写了个C#程序
using System;
using System.Reflection;
namespace StrongName
{
class Program
{
static void Main(string[] args)
{
string aa = "11234567890";
Console.Write(aa+"\n");
Assembly ass = Assembly.GetExecutingAssembly();
string str = ass.ToString();
Console.Write(str+"\n");
byte[] pk = ass.GetName().GetPublicKey();
str = "Public Key:";
for (int i = 0; i < pk.GetLength(0);i++ )
{
str += pk[i].ToString("X2");
}
Console.Write(str+"\n");
byte[] pkt = ass.GetName().GetPublicKeyToken();
str = "public KeyToken:";
for (int i = 0; i < pkt.GetLength(0);i++)
{
str+=pkt[i].ToString("X2");
}
Console.Write(str+"\n");
Assembly executingAssembly = Assembly.GetExecutingAssembly();
Console.WriteLine("strong name:"+BitConverter.ToString(executingAssembly.GetName().GetPublicKeyToken()));
Console.Read();
}
}
}
然后
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /keyfile:key.snk firstsn.cs
结果
编译出来了,我ue把一个常量的12345····改了,运行就是没有出错
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!