• 标 题:两步快速脱yoda's cryptor 1.2壳--esp定律和内存断点完美组合应用
  • 作 者:springkang[DFCG
  • 时 间:004-07-26,10:05
  • 链 接:http://bbs.pediy.com

两步快速脱yoda's cryptor 1.2壳--esp定律和内存断点完美组合应用          
   
软件名称:
  两步快速脱yoda's cryptor 1.2壳--esp定律和内存断点完美组合应用
   
软件简介:
  yoda's cryptor 1.2,老壳了。公开了源码,谢谢作者无私!

   
下载地址:
  本地下载
------------------------------------------------------------
   
破解作者:
  springkang[DFCG]
   
破解工具:
  OD,loadpe,impr,winxp
   
破解目的:
  学习和推广esp定律。
   
------------------------------------------------------------
   
[破解过程]
   
详细过程:
首先,忽略所有异常,再载入加壳的winxp记事本。

01013060 >  60              PUSHAD       //载入加壳程序后停在这里。首先使用esp定律!
01013061    E8 00000000     CALL NOTEPAD.01013066   //esp为0006ffa4
01013066    5D              POP EBP    //esp为0006ffa0  
01013067    81ED F31D4000   SUB EBP,401DF3    //esp为0006ffa4,从这里开始运行几步esp的值均无变化。好了,可以在这里下0006ffa4 硬件访问--word(dword)断点了,也可以再走几步下断,问题不大。F9运行。
0101306D    B9 7B090000     MOV ECX,97B
01013072    8DBD 3B1E4000   LEA EDI,DWORD PTR SS:[EBP+401E3B]


0101375D    50              PUSH EAX                                 ; NOTEPAD.0101370C    //中断到这里了,取消硬件断点,下内存访问断点。
0101375E    33C0            XOR EAX,EAX
01013760    64:FF30         PUSH DWORD PTR FS:[EAX]
01013763    64:8920         MOV DWORD PTR FS:[EAX],ESP
01013766    EB 01           JMP SHORT NOTEPAD.01013769
01013768    8700            XCHG DWORD PTR DS:[EAX],EAX
0101376A    0000            ADD BYTE PTR DS:[EAX],AL
0101376C    0000            ADD BYTE PTR DS:[EAX],AL

内存镜像,项目 27
 地址=01001000
 大小=00007000 (28672.)
 Owner=NOTEPAD  01000000
 区段=.text
 包含=code   //老规矩了,在这里下内存断点  ,f9运行
 类型=Imag 01001008
 访问=RW  CopyOnWr
 初始访问=RWE


01006AE0    6A 70           PUSH 70      //很脸熟吧,用loadpe和impr就可以dump和修复了,运行正常。
01006AE2    68 88180001     PUSH NOTEPAD.01001888
01006AE7    E8 BC010000     CALL NOTEPAD.01006CA8
01006AEC    33DB            XOR EBX,EBX
01006AEE    53              PUSH EBX

最后补充一下,如果用OD的插件dump加壳的yoda's cryptor 1.2主程序,impr修复,虽然运行正常,但无法加密。而用loadpe的dump再修复就没有这种问题。具体原因偶是个大菜鸟,也无法得知。



   
破解小结:
  此法对加壳的主程序同样有效! 下硬件断点的地址有很多,如0012ffa0,12ffc0,12ffac,12ffa4等,不一而足,不同的壳有不同的下法。关键是看载入加壳的程序后运行几步观察寄存器的esp的值,多试几次,就会有收获。例如petite2.2的壳就是下在0012ffc0处。
  最后感谢weiyi75,fly,loveboom(偶的老乡),shinegood,forgot,temerata等等高手,还有DFCG的我要大哥,你们的文章给予我很多帮助,谢谢你们!!!
   
------------------------------------------------------------
   
版权公有,人权私有。如有转载,注明作者。