ACProtect 1.22b脱壳手记----NOTEPAD.EXE

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2008-4-18 | 浏览: 人次 ]

 

经过一段解密代码后来到这里: 

01029C3E    66:C1DF 4D       RCR DI,4D 
01029C42    E8 A043FFFF      CALL NOTEPAD_.0101DFE7 
01029C47    8B85 E4AC4100    MOV EAX,DWORD PTR SS:[EBP+41ACE4] 
01029C4D    0385 31DE4000    ADD EAX,DWORD PTR SS:[EBP+40DE31] 
01029C53    8985 E4AC4100    MOV DWORD PTR SS:[EBP+41ACE4],EAX 
01029C59    E8 8943FFFF      CALL NOTEPAD_.0101DFE7 
01029C5E    C685 A1AC4100 E8 MOV BYTE PTR SS:[EBP+41ACA1],0E8 
01029C65    E8 7D43FFFF      CALL NOTEPAD_.0101DFE7 
01029C6A    C785 A2AC4100 FF>MOV DWORD PTR SS:[EBP+41ACA2],25FF 
01029C74    8D85 E4AC4100    LEA EAX,DWORD PTR SS:[EBP+41ACE4] 
01029C7A    8985 A4AC4100    MOV DWORD PTR SS:[EBP+41ACA4],EAX 
01029C80    E8 6243FFFF      CALL NOTEPAD_.0101DFE7 
01029C85    8DBD 80AA4100    LEA EDI,DWORD PTR SS:[EBP+41AA80] 
01029C8B    8D8D 96AC4100    LEA ECX,DWORD PTR SS:[EBP+41AC96] 
01029C91    2BCF             SUB ECX,EDI 
01029C93    C1E9 02          SHR ECX,2 
01029C96    E8 EA40FFFF      CALL NOTEPAD_.0101DD85    ;\这个循环解密出伪OEP处的代码 
01029C9B    AB               STOS DWORD PTR ES:[EDI]    ;|如果前面改掉的代码不及时恢复的 
01029C9C  ^ E2 F8            LOOPD SHORT NOTEPAD_.01029C96  ;/话,这里就会解密错误 
01029C9E    61               POPAD 
01029C9F    EB 01            JMP SHORT NOTEPAD_.01029CA2 

01029CA2  - FF25 E49C0201    JMP DWORD PTR DS:[1029CE4]  ; NOTEPAD_.0100649F 飞向伪OEP! 

到达伪OEP后就可以dump出程序,运行ImportREC,OEP填入伪OEP=0000649F,RAV填入前面得到的00001000,Size填入1000,Get Import,即可得到完整的API,把Invalid的FThunk全部Delete掉,按默认选项,选中Add new section ,Fix Dump,OK!  

PS:有的程序在填入伪OEP后,IAT AutoSearch会可能得不到IAT的RAV 

   可惜的是NOTEPAD.EXE本身太小,Acpr居然没有Replace Code,我是一边脱壳一边写的,程序Dump出后,才发现没有Replace Code,实在可惜.其实,在伪OEP Dump出的程序已经包含了解密Replace Code的代码和数据表,修复IAT,Stolen code和OEP后程序就可以正常运行.当然,要把脱壳后的程序修复的接近完美的话,也可以自己手工修复所有的Replace Code  

PS:Acpr的Stolen code有点儿局限,有些由Delphi和BCB写的程序的原OEP处是EB 10   JMP xxxxxxxx的跳转语句,例如OllyDbg,这时Acpr就不会Stolen code.我本来是想把OllyDbgBeta110b的主程序加壳当试练品,可Acpr没Stolen code,只好换NOTEPAD.EXE了  

——————————————————————————————————— 

后记: 
    上次写破文是在5个月前,那时就怀疑自己的表达是否清楚合理,现在就更没把握了,还请各位看了不要笑话.国内软件用Acpr加壳的不多,不知道是因为没有破版放出,还是对Acpr没有信心,关于Acpr的破文就更少了.与之成鲜明对比的是Aspr,ASProtect 1.23RC4和1.30也不见有破版广泛流传(我自己就没有1.23 RC4的可用版,1.30见都没见过 555~),但用其加壳的程序比比皆是(1.30我不敢说,但加1.23 RC4的确实不少),破文更是扑天盖地.现在Acpr的破版在一月之内接连放出,不知道局面是否会有所改变 

                                                        thl0057 
                                                                                   04.04.01 
                                                                                   于 HD

上一次由thl0057于2004-4-01 周四, 下午10:57修改,总共修改了6次

广告位