好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 molucky 于 2025-1-24 16:29 编辑
尝试破解[反汇编练习]160个CrackMe之032
难度进步增加,这次破解,用原先的快速找到断点已无法解决,还需要稍微对代码进行查看
第一次尝试,花了点时间没有解决,找大佬的帖子,才找到关键节点,下次找不到关键节点的时候,也需要看代码分析了
本次使用到的断点方式
中文搜索引擎-智能搜索
CTRL+G,直接断关键节点
本次用到的工具
PEiD_boxed (查壳)
IDR (Interactive Delphi Reconstructor) (寻找关键地址) https://down.52pojie.cn/Tools/Disassemblers/IDR%20(Interactive%20Delphi%20Reconstructor).rar 解压码www.52pojie.cn
UPX Unpacker (UPX脱壳工具) https://down.52pojie.cn/Tools/Unpackers/UPX%20Unpacker.zip 解压码www.52pojie.cn
本次使用到的汇编语言分析
call 调用进程
mov 赋值 (mov a,0x1 意思为a=1)
test 测试
je 、jnz 判断
jmp 跳过
retn 返回
来看程序,一打开就报错
1
还带UPX壳
2
直接扔到UPX的脱壳工具脱壳,脱壳成功
3
再将程序拖入查壳,upx壳已脱,用Delphi写的,后面需要用到IDR
7
把程序拖入OD,一眼就看到了报错信息
4
将je改成jmp就能跳过报错,保存程序,并运行
5
报错信息没有了,点击about,显示激活,并且OK键还是灰色的。
6
由于软件是Delphi写的,将保存后的程序拖入IDR找关键断点
8
继续将程序拖入OD
在可能的节点都下断
00437BD8、00437D1C、00437DFC、
00437E70、00437E7C、00437E88、00437E94,00437D1C(这几个其实不需要下断,因为这里面都没有判断语句相关的),如果下断并到这里停下时,取消断点
在下断的时候,我们发现所有的编辑事件都指向一个call 00437D1C
ctrl+G 输入地址,F2断点
9
断点都下完后,F9运行软件,点击about-register,输入01时,在00437D1C断下
10
先查看代码,发现所有的判断跳过均指向一个call,
11
按F8运行该call
12
将关键判断nop掉,保存程序,以后看到test做比较,还有mov给某个字段赋值,需要多注意一下,说不准就是坑
13
运行程序,程序破解成功
14
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|