160个CrackMe 029 Cosh.3

我们一起来看这个系列的第三题是不是水题..

PEID,没有查到有壳,依旧是一个C++的逆向:

伪码检验:
image_1akbjpm3elf6iog1e411q4119kt9.png-9.6kB

同样OD中查找文本字符串,定位到该字符串位置:

image_1akbk5bvuhd41mubj6g7eo1tvhm.png-32.8kB
这三个题目都没有在定位上为难cracker。

于是还是同样的工作,向上找到函数的头部下断点,F9运行,之后,输入伪代码,F8进行代码分析:
image_1akbk9nj5175ikbogoq1smm7a13.png-14.3kB

这是这之后一部分的代码流程:

依旧是在判断输入的name和serial字符串的长度。

这之后就进入了两个循环中,分别是name的算法和serial的算法:

image_1akbksqn315ot9r7gek14itp0i1g.png-22.5kB
这Hex窗口中跟随会好一些:

熟悉汇编循环的童鞋很容易就能理解在做什么,举例来说:以C语言:

同样对seial_false做了同样的操作,只是初始值变了:

之后,分析代码:

中间部分看似多,实际上就是对每一位的name和serial进行了比较:
这是我输入的伪码所生成的两个字符串:
明显不相等,第一位比较就会错误...
image_1akbl88av1usiqh31e5d2vn1o7g1t.png-17.1kB

我们彻底清楚了算法的流程,要注意,两个字符串经过各自的算法变换之后的比较中,仅仅比较name字符串的长度的个数的位数。

通过算法用C语言写逆向算法的功力:

image_1akblu8a91hpt1aid1e2jmnisli2n.png-20.9kB
结果检验:
image_1akblrqh117ii16feouiukl11br2a.png-27.8kB

最近的生活啊,我在用命crackME...

转载于:https://www.cnblogs.com/Space-of-Bruce/p/5558023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值