手动去自校验!!

 

快速去掉自校验的思路:

用od 将壳脱掉后,没有什么其他的问题,然而程序仍然不能运行,可能就是程序中

存在自校验了。。。

当然,你可以用双 OD 的方法,慢慢的比较他们的不同,现在,我们来用一种更快的方法去掉它。。

将程序载入后,查找--当前模块的标签--》找到 ExitProcess...

因为程序的退出都是由它来完成的。。

怎么样来退出程序呢?? 肯定是通过一个 CALL 的调用。。那么,我们就来找到这个 CALL ,在它那,下断点。。。

那么,我们就在 =kernel32.ExitProcess 处,在每个查考那下断点。。

重新载入程序。。 运行。。。。当然就会中断下来了。。。。

004044F0 /$ 53 push ebx

004044F1 |. 56 push esi

004044F2 |. 57 push edi

004044F3 |. 55 push ebp

004044F4 |. BB 38F64C00 mov ebx, 004CF638

004044F9 |. BE 00C04C00 mov esi, 004CC000

004044FE |. BF 48F04C00 mov edi, 004CF048

00404503 |. 807B 28 00 cmp byte ptr [ebx+28], 0

00404507 |. 75 16 jnz short 0040451F

来到这个段的段首。。。本地调用来自 004045CD, 004C4B36, 004C4BA2, 004CB104

 

看到这个。。。 查找参考-----选择命令------,,在每一个CALL 处,下段点。

重新载入,运行,断下后。。

004C4B36 |. E8 B5F9F3FF call 004044F0 //断点1

004C4B3B |> A1 5CE64C00 mov eax, dword ptr [4CE65C]

004C4B40 |. C600 00 mov byte ptr [eax], 0

004C4B43 |. 8D95 E0FDFFFF lea edx, dword ptr [ebp-220]

004C4B49 |. A1 8CE54C00 mov eax, dword ptr [4CE58C]

004C4B4E |. 8B00 mov eax, dword ptr [eax]

004C4B50 |. E8 6B84FBFF call 0047CFC0

004C4B55 |. 8B95 E0FDFFFF mov edx, dword ptr [ebp-220]

004C4B5B |. 8D85 ACFEFFFF lea eax, dword ptr [ebp-154]

004C4B61 |. E8 BAE2F3FF call 00402E20

004C4B66 |. BA 01000000 mov edx, 1

004C4B6B |. 8D85 ACFEFFFF lea eax, dword ptr [ebp-154]

004C4B71 |. E8 9AE6F3FF call 00403210

004C4B76 |. E8 89DDF3FF call 00402904

004C4B7B |. 8D85 ACFEFFFF lea eax, dword ptr [ebp-154]

004C4B81 |. E8 FAE4F3FF call 00403080

004C4B86 |. E8 79DDF3FF call 00402904

004C4B8B |. 3D 20A10700 cmp eax, 7A120 //这是跳转的关键

004C4B90 |. 7E 15 jle short 004C4BA7

004C4B92 |. 8D85 ACFEFFFF lea eax, dword ptr [ebp-154]

004C4B98 |. E8 3FE3F3FF call 00402EDC

004C4B9D |. E8 62DDF3FF call 00402904

004C4BA2 |. E8 49F9F3FF call 004044F0 //断点2

//这是跳转的关键: 当脱壳后的程序大小 只有 小于或等于 7A120 H 时,才不会

退出程序。。

当然可以改下面的 跳。。也可以改与 CMP 比较的值。。。都是可以的。。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值