1.OD-破解MTS DashBoard

直接上过程吧,F9运行,直接SIMLOCK框出来,spy++看EDIT消息,输入后点击OK抓到消息为GET_TEXTLENGTH和GET_TEXT,PEID看了下,UNICODE,所以猜GetWindowTextW,之类

spy++看EIDT的ID:

FA2

OD看所有存在window:

1.OD-破解MTS DashBoard_第1张图片

记下句柄0011154c

CTRL+G输入GetWindowTextW,跳转到User32.dll空间:(我选中的为这个函数入口):

 

直接断点,发现不停的进来,我靠,加个条件断点:

先输入11111112让OK按钮亮起来:

在77D2A5CD上

shift+F4打开条件断点,输入:[ESP+4]==0011154c,如下图:

1.OD-破解MTS DashBoard_第2张图片

为什么是ESP+4,因为:

int GetWindowText(          HWND hWnd,
    LPTSTR lpString,
    int nMaxCount
);

hWnd是第一个参数,也就是最后入栈,再调用call getwindowtextw,EIP入栈,所以ESP+4指向hWnd,上面的意思就是,当hWnd为0011154c时的窗口触发了getwindowtextw,

点击simlock的OK按钮,很幸运,进来了:

图的右下角堆栈显示:call to getwindowtext, count = 9,hwnd = 0011154c, class = edit,,没错了,

Alt+F9从系统的 USE32空间跳到我们的code空间:显示如下:

1.OD-破解MTS DashBoard_第3张图片

继续F8单步调试到004B0490,F7跳入函数继续跟进,发现我们输入的字符:EAX寄存器点击右键,选择follow in dump,直接跟进内存区:

1.OD-破解MTS DashBoard_第4张图片

EAX存了我们输入的字符串地址0807cb88,继续F8跟进:

1.OD-破解MTS DashBoard_第5张图片

当前选中这一句,我们看下面注释为ds:[0807cb7c]=00000008,很明显,这是判断我们输入的字符是否为空,显示这不是我们想要的,继续F8跟进:

这里我特别对ECX进行了内存跟踪,发现,在运行到CALL 0040A590这个命令时,ECX存的数据为0012E4CC,而内存0012E4CC包括了88 CB 07 08,也就是我们输入的字符串地址(前面我们记录了),说明这是个关键比较函数,事实上,后面只需要把后面0040DC73的这个test eax,eax强制改了,就注册成功了,我们还是跟进去看吧:

F7进入比较算法函数:

1.OD-破解MTS DashBoard_第6张图片

运行到这一步,其实什么都出来了,我们看到EAX保存了我们输入的字符串11111111,而ECX也保存了一个字符串,后面这一段我特别加上注释再截个图出来:

1.OD-破解MTS DashBoard_第7张图片

都看出来了,直接的解锁码为45061617,:最后代码是:

1.OD-破解MTS DashBoard_第8张图片

最后通过SETE CL

             MOV AL, CL,把ZF是否为1传出.

最后,就是上面说的代码TEST AL, AL

 

你可能感兴趣的:(c,算法,user,Class)