今天在论坛里见rypjoin 的关于UPX壳的一个求助贴,一时心血来潮就在其贴子后把脱壳的全过程写了出来,所以本贴不再写关于如何脱这个壳,有不明白的朋友可以先去看该贴,软件在楼主的附件里.这里只写如何破解的.
(这是该贴的地址:http://bbs.pediy.com/showthread.php?t=47803)
好,言归正传:
脱壳完毕后用W32Dasm反汇编,查找关键字符串"invail license code"
:004A58FF E81411F6FF Call 00406A18
:004A5904 6A00 push 00000000
:004A5906 668B0DA8594A00 mov cx, word ptr [004A59A8]
:004A590D B202 mov dl, 02
* Possible StringData Ref from Data Obj ->"Registered successfully."
|
:004A590F B8645A4A00 mov eax, 004A5A64
:004A5914 E80B10FBFF call 00456924
:004A5919 8BC6 mov eax, esi
:004A591B E850D5F5FF call 00402E70
:004A5920 C7833402000001000000 mov dword ptr [ebx+00000234], 00000001
:004A592A EB15 jmp 004A5941
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004A586E(C) ;这里显示错误的跳转是由004A586E有条件的跳转过来的
|
:004A592C 6A00 push 00000000
:004A592E 668B0DA8594A00 mov cx, word ptr [004A59A8]
:004A5935 B201 mov dl, 01
* Possible StringData Ref from Data Obj ->"Invalid license code." ;定位到这里, 向上看
|
:004A5937 B8B4594A00 mov eax, 004A59B4
:004A593C E8E30FFBFF call 00456924
于是我们到004A586E查看
:004A585D E8262DF6FF call 00408588
:004A5862 8B55EC mov edx, dword ptr [ebp-14]
:004A5865 8B45F8 mov eax, dword ptr [ebp-08]
:004A5868 E837E8F5FF call 004040A4 ;关键call,我们到od中在此处下断点
:004A586D 48 dec eax
:004A586E 0F85B8000000 jne 004A592C ;显示为不等则跳到错误处
:004A5874 B201 mov dl, 01
* Possible StringData Ref from Data Obj ->""
---------------------------------------------------
OD加载脱壳后的软件,到004A5868 中下断点,F9运行,点击register,输入用户名和code(这里用户名我填写独孤剑,code我写74747474),点击OK,在OD中断在了004A5868处,看堆栈区,是不是发现了我们的注册码还有一个不知道是什么的字符串?
0012F204 0012F568 指针到下一个 SEH 记录
0012F208 004A5999 SE 句柄
0012F20C 0012F240
0012F210 0012F3B8
0012F214 00E3EF84
0012F218 00000000
0012F21C 00000000
0012F220 00000000
0012F224 00000000
0012F228 00E3EF74 ASCII "74747474"
0012F22C 00E3664C ASCII "74747474"
0012F230 00E38FFC ASCII "0F46A5C1BB9C0935"
0012F234 00E3B570
0012F238 00E38FFC ASCII "0F46A5C1BB9C0935"
0012F23C 00E38890
我怀凝0F46A5C1BB9C0935就是真实注册码,试试再说,用户名我仍用独孤剑,注册码用
0F46A5C1BB9C0935,点击OK,听到一声翠响,恭喜,注册成功.下面是成功截图.
总结:这个软件是明文显示注册码所以比较容易破解,如果是要跟踪算法的那种就比较麻烦一些了.不过只要大家有恒心好好练就一定能成功的.相信不久大家会成为高手.呵呵我是小菜一个,写这篇文章只是为了与大家交流下,高手不要见笑啊.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)