小甲鱼 OD 使用教程:https://www.bilibili.com/video/av6889190?p=22
exeScope 下载:https://pan.baidu.com/s/1dSWapltdQsX9ttl_lSoq_g 提取码:yz2p
URlegal 下载:https://pan.baidu.com/s/1Ljbvsnk_1Ps0e-cp7a1F9A 提取码:kfbp
模态对话框 和 非模态对话框
打开程序,熟悉程序流程:
当点击 I will Register Soon 这个按钮时,才能关闭程序。。。
使用 exeScope 打开程序:
通过标题可以知道那个对话框的 实例 id 是 103,十六进制是 0x67,创建模态对话框是 由
int DialogBoxParam(
HINSTANCE hInstance,
LPCTSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
PARAM dwInitParam
);
这个函数创建的,注意 HINSTANCE hInstance 这个参数就是 对应 十进制的 103 ,即 十六机制的 0x67,因为在汇编中入栈参数是从 右向左入栈的,所以 入 hInstance 这个参数对应的汇编指令为 push 0x67,使用 OD 打开程序,直接搜索 push 0x67 这个指令:
分析上一级的函数:通过堆栈查看分析,因为函数在调用时,会先把当前函数的地址入栈,然后转到被调用者的函数,当被调用者的函数执行完后,会把调用者的函数出栈。
跳转到对吗对应位置:
修改指令,发现覆盖后面指令:
正确修改方法:
然后保存所有修改,运行修改后的程序,发现已经没有 关闭程序后的 neg 窗口了。
模态对话框 2
小甲鱼 OD 教程:https://www.bilibili.com/video/av6889190?p=23
resource hacker(功能和exeScope一样)下载地址 :
https://pan.baidu.com/s/1cxGeQZ_qk7fhQTvFzrbHlw 提取码:zbcs
程序下载地址:https://pan.baidu.com/s/1RPsjC35XJ6gjGQzrnxH69A 提取码:0o98
按上面方法搜搜指令,发现查找多个,在每个指令上都设置断点,然偶后一个一个进行排除:
运行程序,程序在断点处停下来:
查找真正需要的断点:
进入断点处的函数:
进入函数后,按 F8 单步调试进行分析:
保存修改,然后运行程序,发现程序已经爆破成功。。。