找回密码
 加入
搜索
查看: 3688|回复: 3

[系统综合] 【已解决】如果对编译好的文件自身进行完整性检测

[复制链接]
发表于 2013-5-11 00:21:51 | 显示全部楼层 |阅读模式
本帖最后由 zch11230 于 2013-5-11 01:05 编辑

比如有的病毒会感染EXE文件 感染后运行程序会先运行病毒 原程序的功能一般不会受影响 经常感觉不出来已经中病毒了 再到别的电脑上运行时又感染新的电脑中毒 请问如何对文件自身做一个检测是否被篡改 暂时能想到的是把文件的MD5写到一个配置文件中 然后程序先计算自己的MD5再与文件中的核对 但这样就需要两个文件了 请问有没有单文件就能做到的方法

问题解决 CRC32校验  http://www.autoitx.com/thread-24758-1-1.html
发表于 2013-5-11 00:36:07 | 显示全部楼层
思路:
1、编译a.exe。
2、运行b.exe,计算出a.exe的MD5,并将MD5写入到a.exe的尾部。
3、a.exe在自校验时,忽略自身尾部的那16个字节(MD5长度为16字节),只使用之前的数据。
4、无论病毒程序在a.exe中的哪个位置加入恶意代码,a.exe在被感染后,MD5总会发生改变。
5、a.exe拿计算好的MD5,与尾部的16字节作比较,如果不同,说明自身被篡改。
 楼主| 发表于 2013-5-11 01:04:09 | 显示全部楼层
本帖最后由 zch11230 于 2013-5-11 01:17 编辑

回复 2# pusofalse

感谢P版这么晚了还回复 刚才在百度site论坛  换了几个关键词 搜到pcbar发表的CRC32自校验 且已经提供了源码 测试成功 简单还好用 我只用UE在文件末加了两个0 再次运行就会提示已经被篡改 原理pcbar讲了 只是没懂的是把CRC32写入EXE中的同时EXE文件已经被修改了 那CRC32不是又变了么。。。

懂了 原来和P版的方法是一个意思 开始没理解到 一步一步的看了代码才知道了 原来计算MD5或CRC32的时候只计算写入校验码之前的数据 这样就可以保证前面部分的校验码不会变 而后面的又可以根据自己需要随便改。



http://www.autoitx.com/thread-24758-1-1.html
发表于 2013-6-23 16:24:54 | 显示全部楼层
当初思考这个问题时脑袋短路了,如果病毒篡改了源程序之后,将篡改后的MD5写入文件尾部,那此法就失效了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-24 09:38 , Processed in 0.077913 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表