记一次脱Hying的壳
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-5-30
虽然这个壳已经有高手搞掂了,但却没有详细的写出过程,小弟现在来献丑,希望高手指点,同时也希望以后高手们能够写出详细的破解过程好让和小弟一样的新手学学 ;p
tools:
softice
procdump
icedump
uedit32
peditor
pe.txt (knowledge is power)
先让我做一点热身运动,在softice中设置宏命令:
MACRO procdump="/BHRAMA ProcDump32 - Dumper Server"
lets goo!!!
加载softice,加载icedump,运行procdump32,点击Dumper Server,wait…… 通常我在脱壳时会用 bpx loadlibrarya 来拦截,这次也用这个。拦下后按F12,然后按F10,来到这里:
0167:0040E034 33C0 XOR EAX,EAX
0167:0040E036 E811000000 CALL 0040E04C
0167:0040E03B 8B44240C MOV EAX,[ESP+0C]
0167:0040E03F 8180B800000009000000ADD DWORD PTR [EAX+000000B8],00000009
0167:0040E049 33C0 XOR EAX,EAX
0167:0040E04B C3 RET
0167:0040E04C 64FF30 PUSH DWORD PTR FS:[EAX]
0167:0040E04F 648920 MOV FS:[EAX],ESP
0167:0040E052 CC INT 3
0167:0040E053 6A00 PUSH 00
0167:0040E055 FF958C130000 CALL [EBP+0000138C]
0167:0040E05B 90 NOP
0167:0040E05C 33C0 XOR EAX,EAX
0167:0040E05E 90 NOP
0167:0040E05F 90 NOP
在 40E036 这里按F8进入,在 40E053 这里下指令 E EIP,然后下8个‘90’,这样也就可以成功的运行程序,再经过几次loadlibrayra的拦截,很快找到程序的入口:4010CC ,在这里下指令 procdump 脱壳,存为c:\temp\dump.exe 。
脱壳后的程序无法正常运行,“无效的WIN32……”,是PE文件的问题!查看 pe.txt ,知道PE文件头中有一处大小为 16 BITS 的‘Characteristics’记录了文件的特性。用PEDITOR查看文件的 Characteristics:210E,将这个值转换为2进制:10000100001110,在 pe.txt 中查看每一位的定义,看看有没有可疑的地方,我发现第13位比较可疑,Bit 13 (IMAGE_FILE_DLL) is set if the file is a dll!!! DLL???NO!EXE!!!所以我将13位改‘0’,也就是 00000100001110 ,16进制为:010E,用peditor修改。现在程序可以在WIN9X下正常运行。
启动WIN2K,运行dump.exe,发现两个问题:1、关闭程序时地址:BFF8D827 出错 2、打开文件时地址:BFF77B5B 出错。我想应该是程序调用 exitprocess 和 createfilea 的内存地址时出错。重新启动系统到WIN9X,运行dump.exe,用bpx createfilea来拦截,然后打开一个文件,拦下后下bd *清断点,按F12一直回到程序,然后按几次F10:
0167:0040144D 56 PUSH ESI
0167:0040144E 8D85C0FEFFFF LEA EAX,[EBP-0140]
0167:00401454 6880000000 PUSH 00000080
0167:00401459 6A03 PUSH 03
0167:0040145B 56 PUSH ESI
0167:0040145C 6A03 PUSH 03
0167:0040145E 6800000080 PUSH 80000000
0167:00401463 50 PUSH EAX
0167:00401464 FF1500E34000 CALL [0040E300] <--- here!
0167:0040146A 56 PUSH ESI
当程序来到 401464 CALL [0040E300] 这里,下DD 40E300,看到什么?YEAH!在DATA区中出现BFF77B5B , 在WIN2K下程序就是在这里出错,太好了!在401464 CALL [0040E300]这里我们先不要动,下指令:s ds:400000 l 10000 5B 7B F7 BF ,找到一个地址:4063D0 ,下A指令,下 CALL [4063D0],OK!!把机器码记下来。用UEDIT32修改文件,第二个问题解决!
现在程序在WIN2K下可以打开文件了,至于关闭程序嘛!我想留给你自己解决,和上面的方法是一样的哟!;d 祝你好运,byebye!
tools:
softice
procdump
icedump
uedit32
peditor
pe.txt (knowledge is power)
先让我做一点热身运动,在softice中设置宏命令:
MACRO procdump="/BHRAMA ProcDump32 - Dumper Server"
lets goo!!!
加载softice,加载icedump,运行procdump32,点击Dumper Server,wait…… 通常我在脱壳时会用 bpx loadlibrarya 来拦截,这次也用这个。拦下后按F12,然后按F10,来到这里:
0167:0040E034 33C0 XOR EAX,EAX
0167:0040E036 E811000000 CALL 0040E04C
0167:0040E03B 8B44240C MOV EAX,[ESP+0C]
0167:0040E03F 8180B800000009000000ADD DWORD PTR [EAX+000000B8],00000009
0167:0040E049 33C0 XOR EAX,EAX
0167:0040E04B C3 RET
0167:0040E04C 64FF30 PUSH DWORD PTR FS:[EAX]
0167:0040E04F 648920 MOV FS:[EAX],ESP
0167:0040E052 CC INT 3
0167:0040E053 6A00 PUSH 00
0167:0040E055 FF958C130000 CALL [EBP+0000138C]
0167:0040E05B 90 NOP
0167:0040E05C 33C0 XOR EAX,EAX
0167:0040E05E 90 NOP
0167:0040E05F 90 NOP
在 40E036 这里按F8进入,在 40E053 这里下指令 E EIP,然后下8个‘90’,这样也就可以成功的运行程序,再经过几次loadlibrayra的拦截,很快找到程序的入口:4010CC ,在这里下指令 procdump 脱壳,存为c:\temp\dump.exe 。
脱壳后的程序无法正常运行,“无效的WIN32……”,是PE文件的问题!查看 pe.txt ,知道PE文件头中有一处大小为 16 BITS 的‘Characteristics’记录了文件的特性。用PEDITOR查看文件的 Characteristics:210E,将这个值转换为2进制:10000100001110,在 pe.txt 中查看每一位的定义,看看有没有可疑的地方,我发现第13位比较可疑,Bit 13 (IMAGE_FILE_DLL) is set if the file is a dll!!! DLL???NO!EXE!!!所以我将13位改‘0’,也就是 00000100001110 ,16进制为:010E,用peditor修改。现在程序可以在WIN9X下正常运行。
启动WIN2K,运行dump.exe,发现两个问题:1、关闭程序时地址:BFF8D827 出错 2、打开文件时地址:BFF77B5B 出错。我想应该是程序调用 exitprocess 和 createfilea 的内存地址时出错。重新启动系统到WIN9X,运行dump.exe,用bpx createfilea来拦截,然后打开一个文件,拦下后下bd *清断点,按F12一直回到程序,然后按几次F10:
0167:0040144D 56 PUSH ESI
0167:0040144E 8D85C0FEFFFF LEA EAX,[EBP-0140]
0167:00401454 6880000000 PUSH 00000080
0167:00401459 6A03 PUSH 03
0167:0040145B 56 PUSH ESI
0167:0040145C 6A03 PUSH 03
0167:0040145E 6800000080 PUSH 80000000
0167:00401463 50 PUSH EAX
0167:00401464 FF1500E34000 CALL [0040E300] <--- here!
0167:0040146A 56 PUSH ESI
当程序来到 401464 CALL [0040E300] 这里,下DD 40E300,看到什么?YEAH!在DATA区中出现BFF77B5B , 在WIN2K下程序就是在这里出错,太好了!在401464 CALL [0040E300]这里我们先不要动,下指令:s ds:400000 l 10000 5B 7B F7 BF ,找到一个地址:4063D0 ,下A指令,下 CALL [4063D0],OK!!把机器码记下来。用UEDIT32修改文件,第二个问题解决!
现在程序在WIN2K下可以打开文件了,至于关闭程序嘛!我想留给你自己解决,和上面的方法是一样的哟!;d 祝你好运,byebye!
相文内容:
热门文章:
最新更新动画:
最新更新软件: