首页
社区
课程
招聘
强名称居然无效,程序16进制下改了之后照样能运行(附步骤)
2011-11-30 15:52 4906

强名称居然无效,程序16进制下改了之后照样能运行(附步骤)

2011-11-30 15:52
4906
真是纠结了。
还是我强名称没有加好啊。
我先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····改了,运行就是没有出错

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 226
活跃值: (1289)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hpphpp 2011-11-30 18:41
2
0
强名称数字签名不能确保每个字节都一样,存在某种概率不能检查出来
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑焰 2011-12-1 16:07
3
0
但是我现在改了很多,就是不报错,真以为强命名加错了
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
chenxiaolu 1 2011-12-1 17:42
4
0
有可能是你安装了某些破解版本的DOTNET软件导致取消了系统的强名验证。
在SDK环境中执行这条命令再试一试:
sn -Vx
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑焰 2011-12-2 08:46
5
0
Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.30729.1
Copyright (c) Microsoft Corporation.  All rights reserved.

执行结果
游客
登录 | 注册 方可回帖
返回