好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 lrj2025kernel 于 2026-5-8 12:03 编辑
近期分析一则crackme,该程序点击check按钮后无任何提示信息,于是想到了消息断点,在此记录:
教程出处:https://www.bilibili.com/video/BV1LY411b7pQ/?spm_id_from=333.1387.collection.video_card.click&vd_source=e8ffc45a5da27bf9ec27430f947b7245
文件:
043-riijj_cm_20041121.zip
(27.92 KB, 下载次数: 20)
1、解压文件,得到一个主程序和一个dll文件
待分析文件
2、用010Editor打开pf1.dll查看后发现此dll不是标准PE文件(非MZ开头)
010editor
3、查壳信息,VC++开发,无壳
查壳
4、运行程序并注册测试,无任何提示信息
程序
5、利用Spy++进行信息收集,主要收集点击注册按钮后向父窗体发送的WM_COMMAND及一系列参数 父窗体的窗口过程函数原型
窗口过程
点击按钮向父窗口发送WM_COMMAND消息时,父窗体窗口过程参数(WParam LParam)解释
参数解释
Spy++中在点击Register后捕获的消息,具体步骤是:在Spy++中监控Register按钮的父窗体的WM_COMMAND消息
消息捕获
6、有了上述信息,我们可以将程序拖入x64dbg中下消息断点(即条件断点,后面可随意修改中断条件),找到父窗体窗口过程位置下WM_COMMAND消息断点
父窗体断点
消息断点
断点下好后
7、为了防止频繁中断,可以先下带条件的日志断点,编辑断点如图
条件断点
8、每点击一次注册按钮日志窗口便会打印一条日志
点击按钮后
9、让其中断下来,修改暂停条件,然后重新点击注册按钮,会中断在父窗口的窗口过程处(中断在系统领空user32.dll中)
真正中断
父窗口过程
10、让其回到用户领空中断,在内存布局的用户代码段首地址下断点,再次点击F9则会断在用户领空
用户领域断点
断下后
11、猜测上图中写入的1会在后续读取,单步执行,直到将1写入0x406B84后,在这里0x406b84位置下一个硬件访问断点,运行起来,便会来到真正的业务逻辑处
硬件断点
业务逻辑
12、分析得注册算法
注册算法
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|