【文章标题】: UPX变形壳手脱
【文章作者】: 李大春
【软件名称】: 网吧语音大师 8.2
【软件大小】: 3.多
【下载地址】: 自己搜索下载
【加壳方式】: UPX变形壳
【操作平台】: XP SP3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!强调一句,本人绝对是第一次破解,恩恩!!
--------------------------------------------------------------------------------
【详细过程】
我发现我写得文章不知道是水平太差还恩恩,是怎么的,没有多少人恢复,令人无语。严重打消鄙人的积极性。大家多恢复恢复,看帖不回,众人爆菊之
首先PEID查壳,显示什么都没有,但是EP区段显示为UPX1,UPX的壳,应该是变形壳,不然PEID应该能显示UPX以及版本。昨天在看雪论坛看有位仁兄说是UPX 变形壳,并且整了半天没脱壳,在这里用绵薄之力予以脱壳,不为其他只为互相学习,希望能达到为新手朋友们解惑的目的。
START:
OD载入,发现程序停在了下面位置。提示:鄙人用的FLY的OD,大家应该都有,没有可以上工具区下载(严重的废话)
007C6710 LB> 60 pushad
007C6711 BE 00E06100 mov esi,LBSserve.0061E000
007C6716 8DBE 0030DEFF lea edi,dword ptr ds:[esi+FFDE3000]
007C671C 57 push edi
007C671D EB 0B jmp short LBSserve.007C672A
007C671F 90 nop
007C6720 8A06 mov al,byte ptr ds:[esi]
我就不用单步跟踪的办法了,呵呵(其实我刚才也是单步跟踪来着)
用堪称与物理学-牛顿定律媲美的 ESP定律,在单步运行到007C6711时下硬件访问word断点,
具体方法如下:1.单步到007C6711
2.在寄存器窗口中找到ESP
3.在ESP的值上右键---在转存中跟随
4.在数据窗口处,选中第一行数据---断点----硬件访问word断点
OK下好断点了,下面可以开始F9运行了。
F9运行4次,来到一下代码处。我这机器是4次,别的机器上不一定。(看代码辨认)
0056DA49 F8 clc
0056DA4A EB 08 jmp short LBSserve.0056DA54
0056DA4C 8230 08 xor byte ptr ds:[eax],8
0056DA4F 46 inc esi
0056DA50 - E9 DD9CFCE9 jmp EA537732
0056DA55 AC lods byte ptr ds:[esi]
0056DA56 4B dec ebx
0056DA57 FA cli
0056DA58 FF8B CB83C304 dec dword ptr ds:[ebx+4C383CB]
0056DA5E 8339 00 cmp dword ptr ds:[ecx],0
0056DA61 7E 0F jle short LBSserve.0056DA72
0056DA63 8B13 mov edx,dword ptr ds:[ebx]
0056DA65 8B43 04 mov eax,dword ptr ds:[ebx+4]
0056DA68 89041A mov dword ptr ds:[edx+ebx],eax
可以取消硬件访问断点了。怎么取消???
在OD最上面菜单中点调试---硬件断点---把能看到断点全部取消。
取消断点以后可以单步了,已经离OEP很近了。单步两下到达OEP。
00512605 55 push ebp
00512606 8BEC mov ebp,esp
00512608 6A FF push -1
0051260A 68 40CB6400 push LBSserve.0064CB40
0051260F 68 94585100 push LBSserve.00515894
00512614 64:A1 00000000 mov eax,dword ptr fs:[0]
0051261A 50 push eax
0051261B 64:8925 00000000 mov dword ptr fs:[0],esp
00512622 83EC 58 sub esp,58
00512625 53 push ebx
00512626 56 push esi
00512627 57 push edi
00512628 8965 E8 mov dword ptr ss:[ebp-18],esp
0051262B FF15 0CE25600 call dword ptr ds:[56E20C] ; kernel32.GetVersion
看入口特征应该是C++写的,但是仔细一看,是E语言而且是5.XX版本独立编译的,恩恩不会错的!!
到达OEP了,当然是脱壳之,脱壳完后用IMPORTREC修复一下,OK,程序可以运行。
破解部分:
载入脱壳修复的程序,运行起来,然后点验证程序。。。恩???提示无法取得机器码.....有个暗桩,找到这个暗桩去掉之,此程序有重启验证,注册表类型,比较简单,此处不再罗嗦。个人认为这个程序破解无大用,本身就是免费软件。恩,今天到此吧,牛人可以飘过。。。。。
付上源程序与脱壳破解后的文件
--------------------------------------------------------------------------------
【版权声明】: 本文原创于大春, 转载请注明作者并保持文章的完整, 谢谢!
2012年07月09日 下午 06:47:24
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)