在论坛里面看到一些人讨论dll的反汇编,这几天帮一个朋友分析一个dll,此dll非常简单,现在把我的分析过
程和大家分享一下,这里没有什么特别有效的方法,靠的就是耐心和经验,反复验证,直到调用成功。
有个dll2lib的工具,不知道是我不会使用还是怎么的,反正我是没有使用成功过,所以我只能靠自己
来分析了。
首先是使用的工具,ida/win32dasm/ollydbg
win32dasm分析的速度快一些,但是智能程度不如ida,ida这个2001开发工具亚军绝对不是浪得虚名的
,它的智能程度非常高,可是识别出常用的函数,这两个都是静态反汇编的工具,必须配以动态分析的工具,
毕竟你很难一下子就分析对(至少我是这样),当然你可以使用s-ice或者trw,但是这些工具都有限制,trw不支
持2000,s-ice一旦装载只能reboot才能取消装载,还有其工作在ring0,所以你只能对者黑乎乎的屏幕,很痛
苦,这里选用的ollydbg是最新版本,支持dll的跟踪。
下面列出win32dasm反汇编的结果:
Exported fn(): GetUserNumber - Ord:0004h
:0040C1B0 55 push ebp
:0040C1B1 8BEC mov ebp, esp
:0040C1B3 53 push ebx
:0040C1B4 56 push esi
:0040C1B5 57 push edi
:0040C1B6 8B5D08 mov ebx, dword ptr [ebp+08]
:0040C1B9 33F6 xor esi, esi
:0040C1BB 8BC3 mov eax, ebx
:0040C1BD E846A5FFFF call 00406708
:0040C1C2 6685C0 test ax, ax
:0040C1C5 7212 jb 0040C1D9
:0040C1C7 40 inc eax
:0040C1C8 33D2 xor edx, edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040C1D7(C)
|
:0040C1CA 0FB7CA movzx ecx, dx
:0040C1CD 0FB60C0B movzx ecx, byte ptr [ebx+ecx]






