PEPack1.0脱壳手记

ZDNet 安全频道频道 更新时间:2008-06-13 作者: 来源:SohuIT

本文关键词:EBX 加壳 OEP

  这个壳比EZIP1.0的壳稍微复杂一点 循环比较多 而且左跳右跳 很容易让Cracker迷失方向 不过只要有信心



  在关键处下好断点 认真仔细的跟踪 我相信你也一定可以搞定它的 ^_^ 好了不废话 开始吧



  



  这次的试验品是一个使用汇编编写的程序 很多人都喜欢用NOTEPAD当作实验品 加壳后再脱壳 但是我比较喜欢使用汇编编写的程序



  因为汇编编写的程序非常好判断是否为真正的入口点 一看到 COMMANDLINEA 就证明你到了~~~



  



  用TRW载入程序 下FALLUS OFF命令 F10两下到这里:



  



  017F:00406000 PUSHA /光标停在这里



  017F:00406001 CALL 00406006 /这个CALL一定要进入脱壳的关键CALL



  017F:00406006 POP EBP



  017F:00406007 SUB EBP,BYTE +06



  017F:0040600A CMP BYTE [EBP+053E],01



  017F:00406011 JZ NEAR 40625F



  



  进入这个CALL后小心的跟踪很快就来到第一个关键部分:



  



  017F:004060D4 JNC 0040610E



  017F:004060D6 DEC EAX



  017F:004060D7 JZ 0040610E



  017F:004060D9 JS 0040610E



  017F:004060DB MOV BX,[ECX+EDI]



  017F:004060DF CMP BL,E8



  017F:004060E2 JZ 004060F3



  017F:004060E4 CMP BL,E9



  017F:004060E7 JZ 004060F3



  017F:004060E9 CMP BX,25FF



  017F:004060EE JZ 004060FF



  017F:004060F0 INC ECX



  017F:004060F1 JMP SHORT 004060D6



  



  很明显4060F1处构成一个循环 只要EAX寄存器指不为0 程序会一直在这里循环380多次 ^_^ 我可没有时间看着它



  一步一步的循环 于是我们来观察这个循环里面的跳转 发现跳的最远的就是4060D7处的 JZ 0040610E 于是我们



  在40610E处下断点,按F5~~~~ 跳出这个循环了



  



  接下来是很多比较大的循环 一个循环里面大概有7,8个判断语句 和跳转 这时只要小心的在每一个条件跳转语句上都下上断点



  不断的排除循环内的断点 很快就会找到真正的入口点了



  



  这个就是最后一个大循环的结尾部分 只要下断点 BPX 40625F就可以跳出循环 406270处的跳转语句就是跳到正确OEP的地址



  



  017F:00406248 POP ECX



  017F:00406249 POP EDI



  017F:0040624A MOV [EDI],EAX



  017F:0040624C POP ESI



  017F:0040624D POP EDX



  017F:0040624E POP EBX



  017F:0040624F ADD ESI,BYTE +04



  017F:00406252 ADD EDI,BYTE +04



  017F:00406255 JMP SHORT 00406214



  017F:00406257 ADD EDX,BYTE +14



  017F:0040625A JMP 004061B4



  017F:0040625F MOV EAX,[EBP+0557]



  017F:00406265 ADD EAX.[EBP+058B]



  017F:0040626B MOV [ESP+1C],EAX



  017F:0040626F POPA



  017F:00406270 JMP EAX



  



  跳过 406270 后下命令MakePE,就可以成功脱壳了~~~~~ 测试后可以夸平台运行



  



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



  



  脱壳后当然要制作出一个脚本方便大家使用了 ^_^



  PROCDUMP1.62带有PEPack的脱壳脚本 但是根本就不好用 下面的是我自己写的 经过测试完美脱壳:



  



  [NYDoll’s PEPack]



  L1=OBLR



  L2=LOOK E9,76,FF,FF,FF /第一处循环入口点的机器码



  L3=BP



  L4=WALK



  L5=OBLR



  L6=LOOK FF,E0 /第二处循环入口点的机器码



  L7=BP



  L8=STEP



  OPTL1=00000000



  OPTL2=01000001



  OPTL3=01010001



  OPTL4=00030000



  OPTL5=00000000

安全频道 EBX 最新报道

安全频道 加壳 最新报道

安全频道 OEP 最新报道

[an error occurred while processing this directive]