强名称保护
用Vs签强名称我会
SDK中
- sn -k key.snk
- csc keyfile key.snk *.cs
强名称的去除:
- CLR头中的flag项,去除COMIMAGE_FLAGS_STRONGNAMESIGNED标志
- CLR头中的StrongNameSignature, RVA与Size为0
- Assembly表中的Flags项,送去0X0001 (PublickKey标识),通常变后为0X0000(SideBySideCompatible)
- Assembly表中的PublicKey项,指向Blob的偏移,用0填充
利用工具
- Strong Name Remove工具
- Re-Sign工具
代码中读强名称
Assembly e = Assembly.GetExecutingAssembly();
byte[] publicKey = e.GetName().GetPublicKey();
byte[] publicKeyToken = e.GetName().GetPublicKeyToken();