关于程序自校验的一些分析

当我们脱完壳后发现,程序提示被非法修改,我们知道它是有自校验的。在平时工作中,我们脱完壳修复完毕而且如果有附加数据加上附加数据之后,如果还是没法将程序跑起来,那么我们在保证没有找错OEP的前提下,就需要考虑程序设置了自校验。对于程序存在的自校验,我们可以打开我们脱壳后的程序和未脱壳的程序进行对比,先将未脱壳的程序操作找到真正的OEP,然后开始同步F8对比,看它们的跳转是怎么进行的。

下面是一个程序的自校验分析:

对于这次的自校验,我们通过观看教学,知道需要在CreateFileA下断点,然后进行运行对比分析。那么我们在自己做的时候,并没有使用这个函数而是单步比对,然后发现他们前期步骤都一样,只是在经过一些运算之后,ESI 和 EDI的值不太一样,而且再运行几行以后,发现寄存器中的值大多都不一样了,但是,要注意的是,即使我们发现寄存器的值不一样,但是我们的运行代码和跳转与否是一致的,那么,我们发现在经过一个call之后,程序就会跑飞,那么,在这个call中肯定暗藏玄机,我们就需要进到这个call中去看一下,进去以后,我们发现,他是有一段代码,里面有着运行正常和非法修改的提示,然后我们单步跟,发现在一个call之后,出现了一个test eax,eax  ,然后程序会在后面的一个跳转发生变化,根据我们的查看可以发现,这里eax需要为1,那么,我们对这个call可以直接非法修改掉,比如说直接改为mov eax,1,经过保存,我们发现可以正常执行

MD5自校验  :
将程序的一部分代码或者全部代码进行MD5计算,得出MD5的值,然后再在程序中进行比对,达到保护效果。
大小自校验 :
这个应该是应用于程序加壳之后的自校验,因为现在的壳一般是压缩和加密两个功能兼备,这就导致加密壳破解掉以后程序的大小也会发生相应的变化,那么通过比对自身的文件大小,就可以判断程序是否被破解。

那么,我们可以将未脱壳程序的空字节代码进行一点点的修改,然后再次运行程序,发现无法运行,那么,它就是程序的MD5自校验了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序载入OD   下断bp CreateFileA,F9运行   OD中断,ALT+F9执行到用户代码      下面就是F8单步跟踪了      程序在0048EE23处出现对话框,很明显,在0048EDF9处的跳转就是关键跳了   直接将0048EDF9  /7E 38        jle short dumped_.0048EE33   改成0048EDF9  /7E 38         jmp dumped_.0048EE33   保存下,运行成功   把脱好的程序载入ResScope,发现有非标准资源结构,那就用Fix Resource修正下资源,再次再入ResScope,这次可以修改资源了,但是问题又来了。。。   打开修正好的程序程序只是一闪而过就自动关闭了,看来还有校验,继续操起OD,再次载入程序   下断bp CreateFileA,F9运行   OD中断,ALT+F9执行到用户代码,继续F8单步走      0048EE5F出OD就会跑飞了,显然0048EE5D处的跳转又是关键跳啦,   把0048EE5D  /74 05        je short 1.0048EE64   改成0048EE5D  /74 05        jmp 1.0048EE64   就OK了,保存,运行一切正常   现在程序太大,我们再用CxLrb大侠汉化的Resource Binder V2.6处理一下!   挖塞,程序一下从154M缩小到1.13 MB,这样的结果还是让人满意的   但是一运行,程序又是一闪而过,还有校验,OK,继续   OD载入程序,这次可能会比较卡   下断bp CreateFileA,F9运行   OD中断,ALT+F9执行到用户代码,继续F8单步走      0048EE3F处OD跑飞,也很明显了0048EE3D处就是关键跳啦,   把0048EE3D  . /74 05       je short 2.0048EE44   改成0048EE3D  . /74 05       jmp 2.0048EE44   保存,运行成功,感觉048EE4A处的跳转应该也是个校验吧,只是没用到,程序处理到这里就差不多了,有是不妥之处还望大侠们指点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值