萌新玩的第二个CM学习笔记

CrackMe的地址

第一个反调试 ,在403150 ret (通过异常找到了反调试地址)

萌新玩的第二个CM学习笔记

CRC校验 (通过给407C00 按钮事件下硬件访问断点)

萌新玩的第二个CM学习笔记

改成这样 , 或直接在404600ret

萌新玩的第二个CM学习笔记

407C00 按钮事件

(萌新玩的第二个CM学习笔记

往下跟 , 在407C2B看到了花指令 ,和反调试的标志位

萌新玩的第二个CM学习笔记

发现了获取编辑框内容(萌新玩的第二个CM学习笔记

密码长度需要12位,且不能为空 , 这个设计有点奇怪,明明密码只能>=12,还要判断是否为空

萌新玩的第二个CM学习笔记

407CF7可能是关键跳

萌新玩的第二个CM学习笔记

原来是暗装 ,保存补丁,数据,重新加载程序

萌新玩的第二个CM学习笔记

不让他跳 , 反而弹出了Faild,在MessageBoxA下断点

萌新玩的第二个CM学习笔记

发现断不下来 , 反而从ntclose走了出来 , 这怎么能行 , 这肯定是自己构造的弹窗函数,封装的程度大概率没有系统的API高 , 看堆栈 , 看看有没有有用的信息

萌新玩的第二个CM学习笔记

看样子是找到了 , 但是下面有个407A50 , 407A33也是Faild , 都下上断点

萌新玩的第二个CM学习笔记

程序断下来了 , 是下面的那个407A50

萌新玩的第二个CM学习笔记

Ctrl+R , 找到了两处调用 , 这是第一个 , 很简单的VM_CALL(自我理解) , 让我们打上标签

萌新玩的第二个CM学习笔记

这下子就舒服了 , 上面的404495是反调试 , 不管他, 反正反调试我们都干掉了 , 时间有限 , 我们修改407A50 ,使其跳转到407A20

萌新玩的第二个CM学习笔记

5DB2C0需要置为C , 但是我也不知道他能干啥 , 不管他了 , 直接NOP

萌新玩的第二个CM学习笔记

搞定

萌新玩的第二个CM学习笔记


接下来是在破解成功后,进行的vJcc爆破

这个楼主让我用vJcc爆破, 这我也不会啊 , 让我们转到4044AF下上断点 发现断不下来 , 就当他是指令膨胀吧(没有影响函数执行过程) , 让我们注意 4044A9 . mov edx, dword ptr ds:[0x005D2A30] , 我们给0x005D2A30下上硬件访问断点 三个取地址值的指令都行的

[0X5D2A30]

[0X5DB2C4]

[0X5DB2C8]

萌新玩的第二个CM学习笔记

下上硬件访问断点后 , 程序断下

萌新玩的第二个CM学习笔记

Ctrl+9到Ret处 , EAX为407A50 ,是错误CALL的地址 ,接下来对这段函数进行逆向分析

萌新玩的第二个CM学习笔记

我们修改EAX的值后 , 使他跳转到成功CALL测试

萌新玩的第二个CM学习笔记

程序没有走到失败call , 直接走到成功CALL , 看来我们改对了

萌新玩的第二个CM学习笔记

加上标签 , 直接在vJcc段首 Mov EAX , 成功CALL . Ret,似乎也算vJcc爆破

萌新玩的第二个CM学习笔记

肉眼识别两个立即数, 注意eax , edx , 这段代码就是一个简单的if-else , 改00407A85还是00407A91 都是可行的

407A91 源代码是and edx, 0X360->and edx, 0xFFFFFC9F

0X360取反就是0xFFFFFC9F , if(a) -> if(!a) 这个时候运行 , 就到达了成功CALL

萌新玩的第二个CM学习笔记

上一篇:x264源代码简单分析:编码器主*分-1


下一篇:High&NewTech:2019.08.08华为发布—面向2025十大趋势