做注塑机的网站百度收录刷排名
Delphi写的, 其实这个crackme很弱鸡, 但我还是花了好几个小时逆向, 一来是因为我第一次逆向delphi程序, 二来里面有很多转换函数, 我以为是加密函数, 结果一个个分析花了很多时间。但感觉学到了不少。
查壳发现加了一个WWPACK壳(没见过这种壳)。
进去之后不是在ntdll.dll里面, 而是直接直接在exe模块里, 没有见到pushad之类的标志, 无法用esp守恒, 所以就不断F8走下去。
上来就看到循环, 估计是在释放代码
还有一个很大的循环, 这里不管直接过, 肯定是在解密或者释放代码
最后一个大跳来到了这里, 我感觉这里有点像OEP, 不管了直接在这转储
修修补补之后感觉应该没什么问题
接着在进行了一次查壳发现应该没什么问题, 是用Delphi4写的。
先上手玩一下, 发现输入Serial后然后点击那个Spider按钮, 就会在Reg Nr控件对应的编辑框内生产值, 他应该是要让这个值等于0x3E74984B
由于是Delphi程序, 这里用工具进行反汇编, 成功找到了这个按钮代码的触发位置。
其首先拿到serial值并转成数字, 那个CalcInputWrapper是为了检测输入的是数字。
CalcInputWrapper里面最核心的是这段代码, 首先减去0x30是为了把字符串数字战场转成真正对应的数字, 然后判断是否大于9, 如果大于9或者已经到了末尾就返回并弹框如果你输入的有除了0-9之外的其他字符会出现如下弹框
下面这段代码是整个算法的核心, 实际上很简单, 就是输入的数字的3倍就是RegNr的值, 这里是相加2次的方法取得的:
接着那个GenRegNrWrapper做的只是把16进制数字转成了字符串, 而我我这个函数里花了很久… 我还以为作者设计了啥复杂的算法来生成, 结果出来就是个转换用的函数。
不过里面确实挺复杂的, 感兴趣可以去看看。这只是其中的一小部分, 一点点的分析。而且Delphi的库函数也很多, 每次遇到了会被困住, 然后到IDA里面去看看有没有解析出来, 在里面也转了很久
所以核心算法很简单实际上就是serial * 3, 结果等于0x3E74984B就行了, 所以要得到serial直接除3就行。
下面是完成后的样子:
(完)