欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

1.OD-破解MTS DashBoard

发布时间:2024/4/11 编程问答 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 1.OD-破解MTS DashBoard 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

spy++看EIDT的ID:

FA2

OD看所有存在window:

记下句柄0011154c

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

 

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

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

在77D2A5CD上

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

为什么是ESP+4,因为:

[cpp] view plaincopy
  • 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空间:显示如下:

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

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

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

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

    F7进入比较算法函数:

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

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

    最后通过SETE CL

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

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

    总结

    以上是生活随笔为你收集整理的1.OD-破解MTS DashBoard的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。