记一次脱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! 
  • 上一篇文章:
  • 下一篇文章: