C/C++教程

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

本文主要是介绍萌新玩的第二个CM学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

CrackMe的地址

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

img

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

img

改成这样 , 或直接在404600ret

img

407C00 按钮事件

(img

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

img

发现了获取编辑框内容(img

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

img

407CF7可能是关键跳

img

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

img

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

img

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

img

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

img

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

img

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

img

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

img

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

img

搞定

img


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

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

[0X5D2A30]

[0X5DB2C4]

[0X5DB2C8]

image

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

image

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

image

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

image

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

image

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

image

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

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

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

image

这篇关于萌新玩的第二个CM学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!