乐于分享
好东西不私藏

AI逆向实战-一款C++软件的逆向破解教程

AI逆向实战-一款C++软件的逆向破解教程

本次我为大家带来的是AI自动化逆向分析一款C++软件的思路教程。

采用工具:VSCODE,claud code,X64DBG等

首先我们看看软件目录

目录里包含目标EXE文件, 以及一个之前机器用过的授权码。
使用die看看软件构造
很明显这是一款用C++MFC编写的程序
将其拖入x64dbg。
然后使用VSCODE的CC插件连接X64DBG
这里其实有个坑, 我们用AI让其追踪关键CALL位置耗时很久, 而且最后不一定是他找到的。 因为我提前在那个位置打过断点。 然后他说找到了。 如果我没提前打断点或许他更难完成。 但是AI让我惊喜的点实际上在后面。 
我们找到目标CALL关键位置后。让其打上注释。 
这是关键解密函数, 提取C:\ProgramData\BStore\Licence.dat文件里的Data

其push了两个值, 一个是注册码,一个是注册码长度
很明显跟dat文件里对的上
通过后这个值是
然后机器就是获取本机机器码跟解密后的数据对比
获取本机机器码的CALL
这里是获取16进制的
将机器码16进制转换成最终机器码
主要有两个核心算法,shr,eax,04, and edx, 0x0F, 运算后然后在码表里面找对应的字符
取出来后跟上面dat解密的机器码进行对比
机器码不对就注册失败!!
这里有两个思路。
一个是固定机器码,修改其机器码返回,让他每次返回的机器码是固定的。 对于本身已有的注册码, 让每台机器都能使用。 在这里我直接在获取机器码16进制数据的时候更改。 这样对本身程序伤害最小。 
这个方法需要分析其16进制转换成真正机器码的算法, 其实比较简单! 第一次运算,顺着找。第二次倒着找。 一个16进制字符对应两个!然后编写个程序将文本机器码转换成16进制的。 在程序空白位置写入,然后替换上面四个地址即可!
第二个是直接写注册机,这里我是让AI自动分析的。 分析过程太长就没截图! 最终分析其算法采用的aes-cbc-256。 
注册机
而AI最让我惊喜的就是在这里, 直接逆向了其算法。 如果换在之前你要分析其算法实际上太耗时而且还麻烦。

本次教程就到这里,如有侵权请联系我进行删除