160个CrackMe 029 Cosh.3

mac2022-06-30  21

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

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

伪码检验:

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

这三个题目都没有在定位上为难cracker。

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

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

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

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

这Hex窗口中跟随会好一些:

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

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

之后,分析代码:

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

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

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

结果检验:

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

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

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)