关于程序自校验的一些分析
来源:互联网 发布:网络什么赌博平台热门 编辑:程序博客网 时间:2024/05/01 23:13
当我们脱完壳后发现,程序提示被非法修改,我们知道它是有自校验的。在平时工作中,我们脱完壳修复完毕而且如果有附加数据加上附加数据之后,如果还是没法将程序跑起来,那么我们在保证没有找错OEP的前提下,就需要考虑程序设置了自校验。对于程序存在的自校验,我们可以打开我们脱壳后的程序和未脱壳的程序进行对比,先将未脱壳的程序操作找到真正的OEP,然后开始同步F8对比,看它们的跳转是怎么进行的。
下面是一个程序的自校验分析:
对于这次的自校验,我们通过观看教学,知道需要在CreateFileA下断点,然后进行运行对比分析。那么我们在自己做的时候,并没有使用这个函数而是单步比对,然后发现他们前期步骤都一样,只是在经过一些运算之后,ESI 和 EDI的值不太一样,而且再运行几行以后,发现寄存器中的值大多都不一样了,但是,要注意的是,即使我们发现寄存器的值不一样,但是我们的运行代码和跳转与否是一致的,那么,我们发现在经过一个call之后,程序就会跑飞,那么,在这个call中肯定暗藏玄机,我们就需要进到这个call中去看一下,进去以后,我们发现,他是有一段代码,里面有着运行正常和非法修改的提示,然后我们单步跟,发现在一个call之后,出现了一个test eax,eax ,然后程序会在后面的一个跳转发生变化,根据我们的查看可以发现,这里eax需要为1,那么,我们对这个call可以直接非法修改掉,比如说直接改为mov eax,1,经过保存,我们发现可以正常执行。
MD5自校验 :
将程序的一部分代码或者全部代码进行MD5计算,得出MD5的值,然后再在程序中进行比对,达到保护效果。
大小自校验 :
这个应该是应用于程序加壳之后的自校验,因为现在的壳一般是压缩和加密两个功能兼备,这就导致加密壳破解掉以后程序的大小也会发生相应的变化,那么通过比对自身的文件大小,就可以判断程序是否被破解。
那么,我们可以将未脱壳程序的空字节代码进行一点点的修改,然后再次运行程序,发现无法运行,那么,它就是程序的MD5自校验了。
- 关于程序自校验的一些分析
- VC++程序自校验的简单方法
- 转自李天平关于程序人生的一些感悟
- 关于时间的一些客户端校验方法
- JS自写的一些非法校验非法积累
- 自删除程序的分析
- Hadoop自带的一些程序示例
- 关于TCP校验和的一些实验体会
- 关于自绘CListBox的一些疑惑
- 关于CSS自学时的一些总结
- 关于Hadoop的一些自问自答
- 关于反射的一些程序
- 关于 单链表 的一些程序
- 关于递归的一些分析
- 关于Fragment的一些分析
- 关于自增自减运算符的一些问题
- 关于自增自减运算符的一些问题
- 一些实用的校验
- 实验三:Huffman编码
- Water Gate Management(二进制枚举组合排列模板 n个数的子集)
- Linux 系统启动详解
- APUE上对进程终止的讨论
- TextView的XML属性大全
- 关于程序自校验的一些分析
- win32和amd64
- 基础算法(三)---Shell排序(Java)
- Java方法的重载(overload)
- 关于Python中以字母r/R,或字母u/U 开头的字符串
- 阿里云Linux服务器安装配置ftp及上传网站全教程
- java的IO技术中什么是I什么是O?
- 第六周 连通分量
- 最大长方体问题