教菜鸟写注册机——初级篇[6]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 robaggio269 的 blog

好了,现在可以动态调试了。我们在开头这里下个断点,一步步向下看,出现了一个call getdlgitem,我们来看一看函数说明(手头一份这个是必需的)

hwnd getdlgitem(
    hwnd hdlg,  // handle of dialog box
    int niddlgitem   // identifier of control
   ;

呵呵,简单的说这个函数就是让程序确定一个对话框上的控件,第一个参数是对话框的句柄,第二个参数是对话框上某个控件的id,函数会返回该控件的句柄,这样在下面就可以用这个句柄来操作了。看程序:

代码:
* possible reference to dialog: dialogid_0001, control_id:0066, ""                                   | :00401085 6a66                    push 00000066    ;控件id :00401087 53                      push ebx    ;对话框句柄 * reference to: user32.getdlgitem, ord:0000h                                   | :00401088 e8159c0000              call 0040aca2

看见第一行没有,dialogid_0001,control_id:0066,压进去了一个66作为第二个参数:控件id(注意api调用是从右至左,也就是最后面一个参数先push),用 资源查看工具 看看id为66的是甚么呀,呵呵就是那个输入用户名的文本框嘛。好了,现在我们有文本框的句柄了,存在eax里。接着向下看,又一个api,是getwindowtext。看看说明:

int getwindowtext(
    hwnd hwnd,  // handle of window or control with text
    lptstr lpstring,  // address of buffer for text
    int nmaxcount   // maximum number of characters to copy
   ;

从名字也能猜出来了,这个函数就是得到一个窗口类控件的文本。第一个参数是该控件的句柄,第二个是存放得到的文本的缓冲区的地址,第三个参数设定取文本的最大长度。看程序:
代码:
:0040108d 6a64                    push 00000064    ;最大长度 :0040108f 8d9548ffffff            lea edx, dword ptr [ebp+ffffff48];把[ebp+ffffff48]先放在edx里 :00401095 52                      push edx    ;缓冲区地址[ebp+ffffff48] :00401096 50                      push eax    ;eax?是上面那个api的返回值呀,控件句柄 * reference to: user32.getwindowtexta, ord:0000h                                   | :00401097 e8129c0000              call 0040acae

好了,现在 d ebp+ffffff48 看看,是不是输入的用户名?(说明,在olly或sice里这个是[ebp-b8]的形式,其实是一样的)

下面有类似的操作,只是控件id成了68,可想而知就是得到注册码了,注册码放在[ebp+fffffee4]。

呵呵,继续,到了这么几句:
代码:
:004010bd 8d8548ffffff            lea eax, dword ptr [ebp+ffffff48] :004010c3 50                      push eax :004010c4 e867050000              call 00401630

这是干甚么牙?要不要进4010c4这个call 401630看看?且慢!我前面说过了,不要在无关紧要的地方费力,(啪!一个鸡蛋扔上来:谁知道这里是不是重要啊?)别急嘛,一般来说,先粗略地跟一遍,试着猜猜call的作用。如果发现返回值很可疑,再跟进细看也不迟。(这就需要一定的“直觉”了,英文叫“sence”,台湾老大叫“触机”或者“先死”,别担心,破解得多了自然会有这种感觉,这种感觉很难说出来,有时候一见那种阵势就知道关键地方到了)

本文关键:教菜鸟写注册机——初级篇
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top