Ollydbg使用教程学习总结(五)
解密系列之OD使用教程17——inline patch
程序:ReverseMe. NAGs.exe
新内容:硬件断点
用PEID打开,看到程序是用VC6.0写的,用OD载入,按F9运行后,出现NAG窗口,在OD中按下暂停,再打开堆栈窗口
如上图高亮行正是调用NAG窗口的call,双击来到反汇编窗口并下断
重新运行程序,发现程序的3个窗口都是对话框,且都来自这个call,因此不能直接将该指令NOP掉。继续往上浏览,发现有je跳转语句,只要让第1次和第3次跳转实现,第2次跳转不实现即可。
在数据段00445E80
的位置定义个变量作为计数器,在这个字节下硬件写入断点进行测试,看程序在运行过程中有没有改动该地址处的内容,发现程序并不会修改,可行。在该跳转指令下断,在00437D70
地址处添加个书签,方便来回查看。但此处直接用NonaWrite 1.2
插件进行修改,打开插件,输入
0x437D70:
inc byte ptr [445E80]
cmp byte ptr [445E80],2
jnz 004203BA
lea ecx,dword ptr [esp+4C]
jmp 42037F
然后点击“汇编”按钮即可修改完成。
再讲该条指令修改如下
进行保存到文件即可。
解密系列之OD使用教程18
程序:Urlegal.exe
新工具:FishcOD、eXeScope.exe
(可进行资源的修改)
首先安装程序,再用eXeScope
载入程序
得到退出时弹出的NAG窗口的模板名是103(0x07)
,由以下2个函数可知
HWND DialogBoxParam (HINSTANCE hlnstance, LPCTSTR IpTemplateName, HWND hWndParent, DLGPROC IPDialogFunc, LPARAM dwlnitParam);
HWND CreateDialogParam (HINSTANCE hlnstancem, LPCTSTR IpTemplateName, HWND hWndParent, DLGPROCIpDialogFunc, LPARAM dwlniParam);
在OD里查找push 0x67
往上查看,这个过程并不是破解的关键,因为没有关键跳转,因此回溯到调用该过程的位置,由提示窗口
转到调用处,查看
如上图注释所示,在关键call下断并重新运行程序,跟进发现该过程非常短,猜测可能是程序验证是否注册的过程,在开始处下断,重新运行程序;如果是的话,程序运行开始就会执行该过程以检测是否注册。
如猜测,程序运行后在此断下,现在只需要将eax的值修改为1即可,但仅修改
00403E22 |. 8B40 2C mov eax,dword ptr ds:[eax+0x2C]
这条指令的话,将覆盖掉后面的一条指令,因此可以直接同时修改2条指令
00403E1F |. 8B45 FC mov eax,[local.1]
00403E22 |. 8B40 2C mov eax,dword ptr ds:[eax+0x2C]
修改后保存到可执行文件,运行测试,发现注册按钮已经变成灰色,点击关闭按钮也不会弹出NAG窗口。
解密系列之OD使用教程19
程序:movgear.exe
运行程序,点关闭按钮后,弹出NAG窗口,出现试用还剩30天等信息。同上一节课所讲,用eXeScope载入程序,找到该NAG窗口的模板名为100(0x64)
,用OD载入,查找push 0x64
指令。
在每个命令下断,如上,运行程序并关闭后断下的地方才是我们关注的地方,地址为00406725
,删掉其他断点;往上浏览程序,发现有关键跳转和call。
在该call和跳转处下断,重新运行程序并关闭,断下,跟进
RegOpenKeyEx
:打开注册表的键值。
0043168A |. 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
LONG RegQueryValueEx(HKEY hKey, // handle of key to query LPTSTR lpszValueName, // address of name of value to query LPDWORD lpdwReserved, // reserved LPDWORD lpdwType, // address of buffer for value type LPBYTE lpbData, // address of data buffer LPDWORD lpcbData // address of data buffer size );
edx
为倒数第2个参数,指向数据缓冲区。继续往下浏览程序,发现在获取了注册表信息后,可能将用户名和密码压栈,然后调用关键call进行检测
最后,如果验证失败的话,会跳到过程的结尾
观察程序,eax
的值最终来源于ebx
,因此可将该指令
mov eax,ebx
修改为mov eax,1
但是经测试,这样修改会覆盖后面的指令,因此可修改为
mov al, 1
即可爆破。
解密系列之OD使用教程20
程序:KeygenMe.exe
DialogBoxes类型常用APIs(通常在注册界面获取)
DialogBoxParamA
GetDlgItem
GetDlgItemInt
GetDlgItemTextA
GetWindowTextA
GetWindowLong
该程序是一个注册机程序,用的是GetDlgItemTextA
来获取输入的文本,用OD载入,键入命令 bp GetDlgItemTextA
下断,输入用户名、密码:Ontrd、1234567
,点击Check,在动态链接库中断下,再按下Alt+F9回到用户领空。
待续。。。
Ollydbg使用教程学习总结(五)相关推荐
- Ollydbg使用教程学习总结(二)
解密系列之OD使用教程4 程序1:RegisterMe.exe 把程序跑一遍之后我们发现程序有两个NAG,一个是在程序界面启动前出现,另一个是在程序关闭后出现的. 去掉第一个Nag方法如下: ①jmp ...
- Ollydbg使用教程学习总结(四)
解密系列之OD使用教程13--迷途 程序:XoftSpy41._96.exe 用PEID查看,是VC6编写的程序,用OD载入 获取文本框输入内容API:GetWindowTextA API下断方法: ...
- Ollydbg使用教程学习总结(三)
解密系列之OD使用教程9 程序:MrBills.exe 点击注册,输入邮箱和序列号后提示如下 突破口:该提示窗口中的字符串,查找如下 双击来到反汇编窗口,有个关键跳转,往上查看影响跳转的语句是test ...
- Ollydbg使用教程学习总结(一)
解密系列之OD使用教程1 使用例子程序为Hello.exe OD基本快捷键及功能 从系统DLL领空返回到程序领空,Alt+F9 通过OD将程序的标题"Hello world"改为& ...
- SQL基础教程学习第六站:数据更新
仅用于记录学习,欢迎批评指正,共同交流,共同进步,大神勿喷 系列文章 SQL基础教程学习第一站:PostgreSQL下载安装以及如何创建并登录数据库: SQL基础教程学习第二站:数据库基本知识: SQ ...
- 好程序员教程分析Vue学习笔记五
好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...
- 黑马程序员Java教程学习笔记(五)
学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...
- 阿里云高校计划视觉AI五天训练营教程学习笔记
阿里云高校计划视觉AI五天训练营教程学习笔记 Day 1 Topic: 视觉生产技术 定义:通过(一个或者一系列)视觉过程,产出 **新的** 视觉表达. 分类 通用基础框架 关键维度 精细理解--举 ...
- OllyDBG完美教程(超强入门级)
OllyDBG 视频教程:https://www.bilibili.com/video/av6889190 动态调试工具之OllyDbg(OD)教程:https://www.bilibili.com/ ...
最新文章
- async await异步发送请求例子
- 处理时间_7_60个Mysql日期时间函数汇总
- 安全网关之三:IPTables
- 修改表格字体颜色_word排版应用:如何创建文本样式和表格样式
- translateZ 带来的Z-index 问题
- (又有惊喜)Redis5.0重量级特性Stream尝鲜
- sql隐式转换_SQL Server中的隐式转换
- java调用数据库的基本步骤_Java实现数据库操作的基本流程(转)
- Unity sendmessage发送多个参数
- 配置VIM语法高亮及自动缩进
- Linux下原生异步IO接口Libaio的用法
- 威纶和s7200通讯线_S7-200PLC和威纶通触摸屏MODBUS RTU协议通讯实例
- Render to Texture
- Ubuntu20.04系统联网
- [工作记录]在线表格比对系统实现思路整理
- APP推广渠道分析:5种方法和2种思路
- 仙剑奇侠传3 全开注册表改法
- python词频统计_用Python实现一个词频统计(词云+图)
- SRC漏洞提交平台和应急响应中心
- sw转cad映射文件_SW转CAD图层映射
热门文章
- 只读ViewObject和声明性SQL模式
- 使用UIBinder的GWT自定义按钮
- PIT和TestNG突变测试简介
- Java并发教程–重入锁
- 正则表达式中的分组的匹配次数的理解
- 混合模式商城的可经销商品池
- 在linux上安装mysql5.6,在linux(Centos 7以上版本亲测)上安装mysql5.6
- c语言全局变量和局部变量作用域重合时,c语言全局变量与局部变量(当变量重名时)的使用情况...
- php数组按时间排序,按日期时间在PHP中对数组中的数组进行排序
- php thread linux,Linux_linux内核函数kernel_thread,设备驱动程序中,如果需要几 - phpStudy...