首页
社区
课程
招聘
[原创]PE简单签名验证实现
2010-11-27 21:20 10540

[原创]PE简单签名验证实现

2010-11-27 21:20
10540
在驱动里一般都要验证调用者的来源,比较方便的方法就是使用签名的方法了,所以实现了一下,我比较菜,密码学知识几乎为0,就知道一些百度百科上的东西,所以算法全部使用谷歌来的代码
重写了文件读写函数,以便实现ring0和ring3通用
……
大致原理如下:
签名
1、查找一个PE里面的间隙,足够用来装128字节的签名信息,如果没有增加区段
2、对PE文件进行SHA512求Hash
3、将那个Hash使用私钥加密后写到间隙里面
验证
1、查找一个PE里面的间隙,足够用来装128字节的签名信息,如果没有增加区段
2、对PE文件进行SHA512求Hash
3、读取签名信息,使用公钥解密,之后对比两个hash是否相等
使用时,签名工具不公开,驱动自带了公钥和验证算法(不带签名算法),自己的程序签上名就好了

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

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (8)
雪    币: 2009
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
天易love 18 2010-11-27 21:55
2
0
对签名验证理解很透彻啊!微软的签名信息藏哪?
雪    币: 76
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xiaobaozi 1 2010-11-27 22:07
3
0
有时候其实无需要,自定义的签名没必要使用很复杂的算法,只要自己知道就行,私钥公钥的也没多大意义。别人根本不需要伪造,只需要Patch一下驱动就行了,神马都是浮云。主要是看针对什么样的人群
雪    币: 2321
活跃值: (4013)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
熊猫正正 9 2010-11-27 23:13
4
0
谢谢LZ共享自己的技术,我也想知道微软的签名信息在哪~~
雪    币: 62
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
creakerzgz 1 2010-11-28 00:08
5
0
好东西,下一个
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Greater 2010-11-29 17:24
6
0
好东西
看看啦
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
cntrump 13 2010-11-29 17:26
7
0
老大再写一个添加水印的吧。
雪    币: 65
活跃值: (118)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
smokewind 1 2010-11-30 15:24
8
0
感谢楼主无私共享技术
雪    币: 291
活跃值: (144)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yzwyq 2010-11-30 20:43
9
0
好东东啊.万份感谢
游客
登录 | 注册 方可回帖
返回