算法分析2-追踪注册码
逆向前言:今天看到了这款软件,让我想起早期看到有大神对这块软件追踪到了注册码,以前的我懵懂无知,对算法这一块一头雾水,于是我兴趣来了也想把这算法搞出来,经过几个小时的研究,终于颇有心得,感觉很有意思,特把过程分享出来,对正在学习算法的你有所帮助吧!仅供参考,不喜勿喷,谢谢!======================================================================
1:看此文章具有一定的汇编知识,代码分析能力
2:感到头晕眼花,极度恶心的朋友请不要往下看了
======================================================================
目标程序:WMSplitter 国外的一款转换软件我英语也不咋的,全靠翻译
查壳:Microsoft Visual C++ 7.0无壳
查了一下没有特别复杂的算法(MD5crc 什么的算法) 好像叫什么 Tean加密算法 度娘查了一下估计是作者自己写出来的吧!!!
图1:
点击try 应该是试用吧
图2:
进入这个界面有个Help 点击Registre 跳出注册界面
图3:
输入假码:123456789 提示:This code is incorrect Please check the code and try again翻译:此代码不正确,请检查代码,然后重试
搜索字符串找到这个错误提示:双击进入
图4:
向上找有一个跳转跳到这个错误的地方
图5:
爆破的话把JNZ nop掉即可 不过那不是完美的 进入界面点击Register还是要输入注册信息 我们要分析算法找出注册码
0041C6C3 .E8 B8190300 call WMSplitt.0044E080 ;关键CALL
0041C6C8 .83C4 04 add esp,0x4
0041C6CB .83F8 02 cmp eax,0x2 //cmp 比较2和eax比较 不相等跳向错误地方,现在的EAX=0
0041C6CE .0F85 C2000000 jnz WMSplitt.0041C796 ;关键跳
段首下段:重新载入程序,记得分析下代码,输入假码:123456789断在这里,F8单步往下走 没发现有什么有价值的东西,现在需要进入关键CALL一览
由于代码太长,太多,我就不复制了 直接上图
图6:
从段首拉到段尾大致看了一下,寄存器窗口出现我们输入的假码:123456789如图6,第一个是EAX=1第2个是EAX=2第3个是EAX=0我们需要的是让跳到EAX=2如图5----那个cmp 0x2比较相等不跳实现 由于代码太长,太多,我就不复制了 直接上图
===============================================================================================
下面开始分析算法:找出注册码 F7进CALL后,F8单步往下走,注意:寄存器窗口,堆栈窗口,注释窗口-数据窗口
图7:
**** Hidden Message *****
逆向总结:
1:像这种的算法CALL有几处的地方,一定要有耐心走完每个流程
2:出现可疑字符一定记得记录下来保存着
3:常量BD和前面的几个字符累加计算出来的和,最后一个47为G
4:假码试着变通和修正,多试几次总没错
5:知道这些,就可以利用编程编写注册机了
编辑不易图片都有接近30张了,看完此文章后能帮对你有所帮助,多给点精华就是对我最大的鼓励了!!!谢谢
最后祝愿吾爱汇编论坛2018红红火火
如有失误之处,请各位大佬提出宝贵意见 菜鸟不胜感激!!!
学习了!感谢楼主的细致讲解!!! 很细致,很用心,赞,精华走一个! 让我学习看看哈 感谢楼主分享 好好学习天天向上 感谢楼主分享 谢谢楼主分享 回复看算法分析。 谢谢楼主分享