• 标 题:菜鸟也脱ACProtect1.23 B
  • 作 者:liuyilin
  • 时 间:2004年4月21日 10:41
  • 链 接:http://bbs.pediy.com

菜鸟也脱ACProtect1.23 B
说明:现在的壳真是越来越BT,就说stolen code版本升级,一次比一次BT,一次比一次长,要想精确还原stolen code对我等菜鸟真不是一件简单的事,因此也有了下文:
1本文采用了-辉仔Yock大虾的简便方法,不用还原STONE-CODE的方法,再次感谢辉仔Yock
2查找STONE-CODE的位置,是采用了tDasm大虾的方法,没有任何壳能逃过tDasm的手心,好羡慕!
3.目标软件WIN98记事本+ACProtect1.23 B(未注册版)
我记得有的人说了,未注册的壳你还拿出来算什么CREACME,哎!也真是够BT的!!!
4.脱壳过程
一 stolen code分析 +DUMP时机
ollydbg除int3异常外全部忽略。
0040D000 >  60              PUSHAD-----------------------------------壳的入口
0040D001    0F88 02000000   JS note1_23.0040D009
0040D007    23C8            AND ECX,EAX
0040D009    42              INC EDX
0040D00A    85CE            TEST ESI,ECX
0040D00C    42              INC EDX
0040D00D    45              INC EBP
0040D00E    0F82 01000000   JB note1_23.0040D015
0040D014    4E              DEC ESI
0040D015    EB 01           JMP SHORT note1_23.0040D018
硬件断点设置仍然按原来不变即在入口ESP-4=12FFC0处。F9运行。出现第一次int3异常后,不是按shift-f9而是F9,这是该程序的特例。(引用tDasm大虾语)
004217D5    61              POPAD
004217D6    50              PUSH EAX
004217D7    890C24          MOV DWORD PTR SS:[ESP],ECX-----停在此处
此处:ESP= 0012FFC0
      EBP= 0012FFF0
注意:此时DUMP(Yock大虾的简便方法)因为程序已经解压完成!!
既然部分代码被偷到这里,那就让这里当OEP吧!
004217DA    893424          MOV DWORD PTR SS:[ESP],ESI
004217DD    53              PUSH EBX
004217DE    BB FDDE4000     MOV EBX,note1_23.0040DEFD
004217E3    891D C1DE4000   MOV DWORD PTR DS:[40DEC1],EBX
004217E9    5B              POP EBX
004217EA    53              PUSH EBX
004217EB    BB C1DE4000     MOV EBX,note1_23.0040DEC1
004217F0    8B33            MOV ESI,DWORD PTR DS:[EBX]
004217F2    5B              POP EBX
二修复壳的入口
载入DUMP程序-G 0040D000 
0040D000 >  60              PUSHAD-----------------------------------壳的入口
改成
0040D000     /E9 D2470100    JMP           004217D7
三修复IAT
IAT修复很简单,不用说了吧

结束语:本文只是讲述了一种对付 stolen code的方法,但愿有通用性,如果对其他的程序有问题(不要仍石头)可能是因为程序还有暗桩(尤其是ACPRO;ASPRO)
感谢您看完本文