OllyDBG简单爆破小记 爆破记录表

一假期东逛逛西逛逛……逛荡了好几天。总算是抽空干了点正事,看着教程试着用OllyDBG爆破了一个极简单的TraceMe小程序。东西不难,算是个基础吧。

004013A0 <模块入口点> PUSH EBP

程序入口在004013A0处。按F9让程序跑起来:



很清晰的看到这是一个验证用户名和序列号的小程序,那么我们要跟踪的当然是USER32.GetDlgItemText或者类似的API函数。我这里占个便宜,联系程序已经给出是32位ANSI版的,那很自然的我们要锁定USER32.GetDlgItemTextA

这时,我们可以按Ctrl+N来获取应用程序输入表,很容易我们就能找到我们要的东东~之后按ENTER转入即可。



当然,也可以用Ctrl+G来跟随这个函数



总之我们的目的就是找到这个USER32.GetDlgItemTextA的入口,现在我们的目的达到了:

76632AE1 GetDlgItemTextA MOV EDI,EDI

入口位置在76632AE1。当然这个位置不同系统是不一样的,不必在意。在这里用F2设置一个断点,再用Alt+F9返回TraceMe程序领空。按F9将程序跑起来。用户名和序列号我们随便输入一个即可:



点击Check之后当然会卡在刚才设置的断点处,再用Alt+F9回到程序领空,我们很容易的就找到了调用USER32.GetDlgItemTextA函数的位置。

我们用Alt+B打开断点列表,禁用掉76632AE1处的断点,然后在程序调用API函数的地方设置一个新的断点:

004011AE PUSH 51 ; /Count = 51 (81.)

004011B0 PUSH EAX ; |Buffer

004011B1 PUSH 6E ; |ControlID = 6E (110.)

004011B3 PUSH ESI ; |hWnd

004011B4 CALL EDI ; GetDlgItemTextA

004011B6 LEA ECX,DWORD PTR SS:[ESP+9C]

004011BD PUSH 65 ; /Count = 65 (101.)

004011BF PUSH ECX ; |Buffer

004011C0 PUSH 3E8 ; |ControlID = 3E8 (1000.)

004011C5 PUSH ESI ; |hWnd

004011C6 MOV EBX,EAX ; |

004011C8 CALL EDI ; GetDlgItemTextA

我们就在这个004011AE处设置一个新的断点,然后再重新来过,把程序再跑一遍。到达这个004011AE处,程序会停住,然后我们就用F8单步执行这个程序。

在004011B0处我们看到命令是PUSH EAX,那么就在旁边的寄存器窗口中右键点击EAX寄存器,选择“数据窗口中跟随”。



这时下方的数据窗口中就会锁定EAX寄存器指向的位置。我们继续用F8单步跟踪,并注意观察下方的数据窗口。

运行到004011B4时调用API函数,到004011B6时,下方的数据窗口显示出我们刚刚输入的用户名:



同理,运行到004011CA的时候,序列号也会相应的显示出来:



那么下面就应该是计算用户名和序列号的关键了:

004011CA MOV AL,BYTE PTR SS:[ESP+4C]

004011CE TEST AL,AL

004011D0 JE SHORT TraceMe.00401248

004011D2 CMP EBX,5

004011D5 JL SHORT TraceMe.00401248

004011D7 LEA EDX,DWORD PTR SS:[ESP+4C]

004011DB PUSH EBX

004011DC LEA EAX,DWORD PTR SS:[ESP+A0]

OllyDBG简单爆破小记 爆破记录表
004011E3 PUSH EDX

004011E4 PUSH EAX

004011E5 CALL TraceMe.00401340

004011EA MOV EDI,DWORD PTR DS:[<&USER32.GetDlgItem>] ; USER32.GetDlgItem

004011F0 ADD ESP,0C

004011F3 TEST EAX,EAX

004011F5 JE SHORT TraceMe.0040122E

根据上面的代码可看出,004011F5处如果不跳转,则注册成功。

那么我们可以通过给标志寄存器ZF取反或者直接把004011F5处代码修改为控指令来实现我们的爆破。





后面就是保存文件之类的事情了,不再赘述。而具体的算法分析,就真的是要靠读程序了,这次就不再发了。

后面小附一个这回常用的OllyDBG快键功能表:

OllyDBG快键功能

F2在光标处设置断点/取消断点

Ctrl+F2OllyDBG结束被调试程序并重新加载

F7单步步进,遇到CALL跟进

Ctrl+F7连续步进,遇到CALL跟进

F8单步步进,遇到CALL路过,不跟进

Ctrl+F8连续步进,遇到CALL路过,不跟进

F9运行程序

Ctrl+F9直到出现RET指令时中断

Alt+F9若进入系统领空,此命令可瞬间回到应用程序领空

F12暂停运行程序

Ctrl+B查找二进制字串

Alt+B打开断点窗口

Ctrl+G跟随表达式

Ctrl+N打开应用程序输入表

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/135445.html

更多阅读

关于晨检记录表和服药记录 幼儿园晨检记录表范本

各位:周一快乐上周放在博客的服药说明表,在使用的时候请各位在一张A4纸上打印六个表的大小,因为这个表我们要附贴在晨检观察记录表上的,有的家长一张A4打印两张,太大了哦!每天我们都会根据幼儿的健康状况进行晨检全日观察记录表登记(包括服

声明:《OllyDBG简单爆破小记 爆破记录表》为网友逆逆逆逆转分享!如侵犯到您的合法权益请联系我们删除