OllyDBG简单爆破小记 爆破记录表
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]
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打开应用程序输入表
更多阅读
关于晨检记录表和服药记录 幼儿园晨检记录表范本
各位:周一快乐上周放在博客的服药说明表,在使用的时候请各位在一张A4纸上打印六个表的大小,因为这个表我们要附贴在晨检观察记录表上的,有的家长一张A4打印两张,太大了哦!每天我们都会根据幼儿的健康状况进行晨检全日观察记录表登记(包括服
小学生心理辅导个案记录2 心理个案辅导记录表
小学生心理健康教育个案辅导记录表 心理辅导员 金秀君 辅导对象李寒班级
英语教研组集体备课活动记录及教案一 教研组教案检查记录表
附件3:学校校本培训活动记录表(项目负责人填写)工作单位:鳌江实验小学
八年级数学集体备课活动记录表四 初一计算一元二次
八年级数学校本培训活动记录表四(项目负责人填写)工作单位: 昆阳二中项目名称集体备课项目负责人施少婷活动时间6月1日活动地点物理实验室(二)活动主题三角形中位线主讲人陈笑霆
教学管理 听课记录检查记录表 日常教学检查记录表
郑州市×××中学听课记录检查记录表检查日期: 年 月 日教师 学科 任课 班级指标 评价标准 检查记录 分值 得分听课记录项目填写情况 听课记录表头中的项目填写完整。中间没有