UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo 手动脱壳

     UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo这个壳很容易脱壳。当然,手动只是查找到脱壳的位置,然后用OD的插件即可脱壳了。

下面举个CrackMes的实例,看下如何脱这个壳,使用的依旧是ESP定律的方法找OEP,程序入口点。

(1)OD载入程序,会提示压缩或是加密或是嵌入程序等提示,问你要不要分析:这里不要分析,点击[否]

<ignore_js_op> 

(2)进入第一个入口为:PUSHAD 

<ignore_js_op> 


  1. 0046AC00 >  60              pushad                                                ;这里是不分析后,进入的入口(加壳后的程序的口,不是程序真正的OEP)。
  2. 0046AC01    BE 00104400     mov esi,ceycey.00441000
  3. 0046AC06    8DBE 0000FCFF   lea edi,dword ptr ds:[esi+0xFFFC0000]
  4. 0046AC0C    C787 D0940500 D>mov dword ptr ds:[edi+0x594D0],0x10A125D>
  5. 0046AC16    57              push edi                                 ; ntdll.7C930228
  6. 0046AC17    83CD FF         or ebp,0xFFFFFFFF
  7. 0046AC1A    EB 0E           jmp Xceycey.0046AC2A
  8. 0046AC1C    90              nop
  9. 0046AC1D    90              nop
  10. 0046AC1E    90              nop
  11. 0046AC1F    90              nop
  12. 0046AC20    8A06            mov al,byte ptr ds:[esi]
复制代码

(3)往下拖动鼠标找Popad,这里可以使用单步,如果遇到向上跳转的,在这条指令下面点一下鼠标,然后F4。但是,也可以直接滚动鼠标,直接到我们要找的位置。如下:

<ignore_js_op> 

  1. 0046AD0C  ^\E2 D9           loopd Xceycey.0046ACE7                                                 ;看到loopd基本上快到了
  2. 0046AD0E    8DBE 00700600   lea edi,dword ptr ds:[esi+0x67000]
  3. 0046AD14    8B07            mov eax,dword ptr ds:[edi]
  4. 0046AD16    09C0            or eax,eax
  5. 0046AD18    74 3C           je Xceycey.0046AD56
  6. 0046AD1A    8B5F 04         mov ebx,dword ptr ds:[edi+0x4]           ; ntdll.7C96F7E7
  7. 0046AD1D    8D8430 BCA90600 lea eax,dword ptr ds:[eax+esi+0x6A9BC]
  8. 0046AD24    01F3            add ebx,esi
  9. 0046AD26    50              push eax
  10. 0046AD27    83C7 08         add edi,0x8
  11. 0046AD2A    FF96 5CAA0600   call dword ptr ds:[esi+0x6AA5C]
  12. 0046AD30    95              xchg eax,ebp
  13. 0046AD31    8A07            mov al,byte ptr ds:[edi]
  14. 0046AD33    47              inc edi                                  ; ntdll.7C930228
  15. 0046AD34    08C0            or al,al
  16. 0046AD36  ^ 74 DC           je Xceycey.0046AD14
  17. 0046AD38    89F9            mov ecx,edi                              ; ntdll.7C930228
  18. 0046AD3A    57              push edi                                 ; ntdll.7C930228
  19. 0046AD3B    48              dec eax
  20. 0046AD3C    F2:AE           repne scas byte ptr es:[edi]
  21. 0046AD3E    55              push ebp
  22. 0046AD3F    FF96 60AA0600   call dword ptr ds:[esi+0x6AA60]
  23. 0046AD45    09C0            or eax,eax
  24. 0046AD47    74 07           je Xceycey.0046AD50
  25. 0046AD49    8903            mov dword ptr ds:[ebx],eax
  26. 0046AD4B    83C3 04         add ebx,0x4
  27. 0046AD4E  ^ EB E1           jmp Xceycey.0046AD31
  28. 0046AD50    FF96 64AA0600   call dword ptr ds:[esi+0x6AA64]
  29. 0046AD56    61              popad                                                      ;这里是popad,到了这里,基本上就找到了。
  30. 0046AD57  ^ E9 98CBFEFF     jmp ceycey.004578F4                                             ;在这个jmp上F2下断点,直接F9到这里。然后点击F8,就到程序的OEP了。
  31. 0046AD5C  ^ 74 AD           je Xceycey.0046AD0B
复制代码

(4)已经成功找到OEP。(在popad下面的 jmp  XXXX 上F2下断点,直接F9到这里。然后点击F8,就到程序的OEP了。)

<ignore_js_op> 

(5)使用脱壳插件脱壳:

<ignore_js_op> 

<ignore_js_op> 

点脱壳后,保存一个新文件即可,然后查看新文件,已经脱壳成功。
壳有很多种,方法不一样,这里只是针对这一个壳的脱法。。

转载于:https://www.cnblogs.com/zhangsz/p/4749708.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值