成熟的美羊羊 发表于 2021-5-19 06:02

考古一个16年的CM , 用最笨的方法爆破

本帖最后由 成熟的美羊羊 于 2021-5-20 12:23 编辑

## 考古16年的CM

CM链接: https://down.52pojie.cn/Challenge/2016_Security_Challenge/%E3%80%90%E7%AC%AC%E4%B8%80%E9%A2%98%E3%80%91%E3%80%90%E5%90%BE%E7%88%B1%E7%A0%B4%E8%A7%A32016%E5%AE%89%E5%85%A8%E6%8C%91%E6%88%98%E8%B5%9B%20%E3%80%91.rar

解压密码:D66F78C044047C81C96A12666505C128

这个CM , 小菜只有一个思路爆破 , 逆算法就更别提了[滑稽] , 最过分的是 , 大佬都不教我破[淦] , 差评 , 必须给差评
思路{
1. push 一个参数后 , ESP寄存器的值会-4 , 下内存写入断点
2. push 一个参数 , 会修改ESP寄存器值指向的地址 (123456这个地址指向了001000 , push过后 123456这个地址指向了401000)
往死里给堆栈下断点 , 肯定会找到传参的地方(可能是最笨的方法)
}

打开软件 , 输入任意假码 , 发现"failed" 字符串

!(https://i.loli.net/2021/05/19/M43Y9xAZpaPXBck.png)

载入OD , 在MessageBoxA , MessageBoxW ,MessageBoxExA , MessageBoxExW函数下断

发现程序在MessageBoxA 这个函数断下 , 在堆栈19F6F0这个地址发现了 "failed!"字符串

!(https://i.loli.net/2021/05/19/8ybkWXdGc4LKYfw.png)

将地址转到 439012 , 发现了一条花指令

!(https://i.loli.net/2021/05/19/rPum6JexniwcDIp.png)

在43900B地址上 , 按下Ctrl+E , 将8B改成90

!(https://i.loli.net/2021/05/19/DalePKfiZuF8prm.png)

发现指令显示变正常了 , 但是没有正常函数调用的样子

如{

push xxx

push xxx

call 函数

} , 可以怀疑有个地址直接jmp过来调用MessageBoxA , 参数早就传好了.(在43900C这个地址下断点 , 就知道了)

!(https://i.loli.net/2021/05/19/Gm8j7onPDIrkcMT.png)

在ESP: 0019F6E8+194的地方 , 发现了一个返回到按下Enter , 如果没有发现OD界面里没有这个+190 , +XXXX的 , 双击一下 , 当前ESP寄存器的值就行了

!(https://i.loli.net/2021/05/19/wB3jvm5TPZLrnbE.png)

4011C5 , 判断CALL , Enter键进CALL

!(https://i.loli.net/2021/05/19/i6mMIj7l2vTba4Y.png)

一个大跳转出现了 , 继续按下Enter键

!(https://i.loli.net/2021/05/19/YU8cMaIe1DulQO6.png)

噩梦开始的地方 , F2下个断点 , 在44068A这个地址 , 并返回软件 , 点击注册按钮 ,"Register"

!(https://i.loli.net/2021/05/19/Q2DROwZFUYtBSvz.png)

发现程序断下了

!(https://i.loli.net/2021/05/19/Eylwc7sagZ1Ppki.png)

在内存窗口中Ctrl+G 转到19F6F0这个地址(这个地址在调用MessageBoxA时 , 值指向了"failed"这个字符串)

随便选几行地址 , 右键 ,下个内存写入断点 , F9运行

!(https://i.loli.net/2021/05/19/5hnZmdO9A8porTB.png)

发现程序断下 , 但有点不对劲 , 继续F9 , 直到地址对劲为止[滑稽]

!(https://i.loli.net/2021/05/19/g19ryuRILjZtXGw.png)

一直F9发现 程序跑起来了 , 没有断下 , 静静等待 , 直到他断下为止, 当前05点48分 , 这可能要跑几分钟 ,(可能是我下断点的姿势有问题 , 但是 , 有个十分明显的问题 , 就是OD跟踪的太慢了! , 换个调试器肯定是嗖嗖嗖嗖的)

!(https://i.loli.net/2021/05/19/D9kqWmKSzNnP28V.png)

在程序跑起来的途中 , 可以在堆栈发现程序调用GetDlgItemTextA获取了编辑框内容

!(https://i.loli.net/2021/05/19/p2Ehm5fRtzJDwMQ.png)

05点52分 , 程序终于再次断下 , 继续一路F9!

!(https://i.loli.net/2021/05/19/v84E2OZF37IkJVB.png)

在4012BF , 按F9之后 , 程序跑飞了 , 下个断点 , 重新来

!(https://i.loli.net/2021/05/19/Wm9FxJIonDp6fLM.png)

这次下个硬件访问断点 , 继续F9

!(https://i.loli.net/2021/05/19/ZSNijUqbcnEel9J.png)

发现在43F879跑飞 , 重新按下F2在这个地址 , 这次 下个内存写入断点

!(https://i.loli.net/2021/05/19/U6AjTzgnZ3SIkVx.png)

!(https://i.loli.net/2021/05/19/dv1QNOAf4Xo7pjc.png)

重新注册 , 按下F9 , 发现程序跑到了 443CCB , 出现错误提示了!!!(https://i.loli.net/2021/05/19/TLKzdBtySA5RlsU.png)

OD右键分析!(https://i.loli.net/2021/05/19/OZmwSF92n8Ubjgs.png)

发现 443349这个地址 , 跳到了错误代码(failed)

!(https://i.loli.net/2021/05/19/mqisv3MxPDrNJRF.png)

改成NOP , 重新测试~~

!(https://i.loli.net/2021/05/19/mqUgwWz4yNnX3ML.png)

OHHHHHHHHHHHH~~~~

!(https://i.loli.net/2021/05/19/IGdoHOEkj5ZN4fi.png)

试试 , 官方提供的Key ,提示和这个一样不一样 , 发现一样~~~

时间: 06点01分

!(https://i.loli.net/2021/05/19/e2NzaXyW4AIOQxb.png)

lichunfeng 发表于 2021-5-20 20:05

其实你这弄得繁琐了,这玩意算法有点复杂,爆破很简单,下GetDlgItem断点,获取到输入的数据后,硬件数据访问断点即可到达验证函数,函数返回1即可验证成功。。另外说一点,这玩意貌似是写dll到内存,抹去pe头,所以关键点应是dll,exe花指令只是障眼法。

成熟的美羊羊 发表于 2021-5-20 21:55

本帖最后由 成熟的美羊羊 于 2021-5-20 22:24 编辑

lichunfeng 发表于 2021-5-20 20:05
其实你这弄得繁琐了,这玩意算法有点复杂,爆破很简单,下GetDlgItem断点,获取到输入的数据后,硬件数据访 ...
函数返回1 , 这个返回值不敢乱搞[滑稽] , 这样一路跟踪哪个地址调用了MessageBoxA , 看到了cmp AL ,1 这条指令,我才敢改函数的返回值[滑稽] , 不过这样确实快速+1
这个Dll , 确实没有发现 膜拜大佬+1
{:301_974:}

byh3025 发表于 2021-5-19 06:49

花指令 难道你不知道od有个去花指令的插件吗?

jy04468108 发表于 2021-5-19 08:42

byh3025 发表于 2021-5-19 06:49
花指令 难道你不知道od有个去花指令的插件吗?

不知道x32dbg有没有。

lifz888 发表于 2021-5-19 08:44

非常好的实习资料,支持分享

wk6663999 发表于 2021-5-19 09:00

厉害了楼主!学习了!

小高69 发表于 2021-5-19 09:09

非常详细呀。希望能有更多的作品,一起学习一起进步。

蜉蝣SK 发表于 2021-5-19 10:00

学习了感谢分享

byh3025 发表于 2021-5-19 11:05

jy04468108 发表于 2021-5-19 08:42
不知道x32dbg有没有。

尴尬了,用OD的插件没能去除所谓的花指令{:301_1004:}

eeyou 发表于 2021-5-19 13:10

byh3025 发表于 2021-5-19 11:05
尴尬了,用OD的插件没能去除所谓的花指令

那大佬要研究下,看看为啥会这样

良心坏了 发表于 2021-5-19 14:06

学习学习!~~      但是感觉挺复杂的。       不是灌水!~~~~
页: [1] 2 3 4
查看完整版本: 考古一个16年的CM , 用最笨的方法爆破