180305 逆向-文件完整性校验(1)

1625-5 王子昂 总结《2018年3月5日》 【连续第520天总结】
A. 文件完整性校验(1)
B.

反调试、加密保护等的对抗措施通常是Patch,即修改程序
另一方面,为了防止程序被篡改而产生的病毒破坏、信息改动等
产生了完整性校验的技术

通常使用哈希函数来计算文件的散列值,并保存该值,然后运行时再次哈希,并比对。

磁盘文件校验

CRC算法可以对一段字符串进行CRC-32转换,最后得到一个4字节长的CRC32值。
当要实现完整性校验时,首先将需要校验的文件当做一段字符串,计算该字符串的CRC32值,然后在文件的某个地方(或另一个文件)储存这个CRC32值。
当文件运行的时候,对文件重新进行CRC32计算,再与原储存的CRC32值进行比较,如果文件有改动,则CRC32值会产生变化。

而破解者可以自己计算CRC32值,重新写入程序中,使其改动后的比较也成功。
应对方法是对储存值进行加密,将其通过异或、移位等操作保护起来
或者在程序中的某些算法使用到该储存值,使其无法被更改。但这样做仍然存在记录储存值后Patch的可能,所以必须使算法足够复杂。

内存映像校验

磁盘文件完整性校验虽然可以抵抗破解者直接修改磁盘文件,但对于内存补丁(注入)却毫无效果,因此必须对内存也进行校验

对数据区段校验是没有意义的,因为程序运行过程中会修改变量的值,导致数据区段发生变化

而对不变的代码区段校验则可以实现,将代码的机器码作为数据进行哈希,得到的值进行利用或校验。同时这种方法还可以对抗软件断点–软件断点修改代码的值会使得哈希出错

C. 明日计划
代码与数据结合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值