首页 > 编程知识 正文

ollydbg脱壳教程(upx脱壳后不能运行)

时间:2023-05-04 07:36:38 阅读:67408 作者:559

我最近研究了UPX壳的脱壳方法。 以下是脱壳的例子。

UPX作为元老级的PE加密外壳,在以前的时代盛行,有名的病毒【熊猫烧香】使用了这个加密外壳。

脱下UPX的外壳揭开神秘的面纱吧。

首先,PEiD加载包含upx shell的程序,结果如下:

upx0. 89.6-1.02/1.05-1.24-Markus Laszlo

然后用OD加载后,OEP如下所示。

0040E8C0 60 PUSHAD

0040E8C1 BE 15B04000 MOV ESI,UPX.0040B015

040E8C68DBEB5FFFFleaEDI,DWORD PTR DS:[ESI FFFF5FEB]

0040E8CC 57 PUSH EDI

0040E8CD 83CD FF OR EBP,FFFFFFFF

040 e 8d0EB 10 jmpshortupx.0040 e8e 2

0040E8D2 90 NOP

0040E8D3 90 NOP

0040E8D4 90 NOP

0040E8D5 90 NOP

0040E8D6 90 NOP

0040E8D7 90 NOP

然后一步一步地……直到大跳跃:

040 ea0f-e9b 826 ffffjmpupx.004010 cc

040 ea 140000 addbyteptrds : [ eax ],AL

040 ea 160000 addbyteptrds : [ eax ],AL

040 ea 180000 addbyteptrds : [ eax ],AL

040 ea1a 0000 addbyteptrds : [ eax ],AL

040 ea1c 0000 addbyteptrds : [ eax ],AL

040 ea1 e 0000 addbyteptrds : [ eax ],AL

040 ea 200000 addbyteptrds : [ eax ],AL

跟进到此,发现后面是填充位,所以跟进跳跃:

004010CC 55 PUSH EBP

004010CD 8BEC MOV EBP,ESP

04010cf83EC44子esp,44

004010D2 56 PUSH ESI

04010 d 3f f15 e 4634000 calldwordptrds : [ 4063 E4 ]; kernel32.GetCommandLineA

004010D9 8BF0 MOV ESI,EAX

004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]

004010DD 3C 22 CMP AL,22

04010 df 751 bjnzshortupx.004010 fc

004010E1 56 PUSH ESI

04010 e 2f f15 f 4644000 calldwordptrds : [ 4064 F4 ]; USER32.CharNextA

004010E8 8BF0 MOV ESI,EAX

004010EA 8A00 MOV AL,BYTE PTR DS:[EAX]

找到了熟悉的Win32API。 程序的入口在这里。

下定决心使用OllyDump,

EIP作为OEP,作为外壳,

将新的PE程序另存为aaa.exe,

然后运行aaa.exe,

结果和脱壳前一样,脱壳成功了!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。