前言
如果您看到了这,您需要知道的:
我不是专业的逆向人员,一定会有错误,遗漏的地方,您可以联系我指正或交流
其次,这不是教程,您需要有一定的逆向基础
疫情期间,由于每天上课摸鱼,大部分时间都和朋友在语音
我便需要一些整活神器,来在与语音里爆破我的朋友
我想起几年前发现的神器——VoiceMeter
这玩意太强大了,除了基本的混响,可视化地将音频通道显示出来,简直不要太方便
后来慢慢的我发现VoiceMeter Banana的功能不够用了
但是Potato是要收费的
虽然不贵,但是在国内支付VISA卡不是一般的麻烦
更何况我自己连VISA都没。。。
那没办法,我就看看我的三脚猫逆向能不能搞定他吧
分析
以下基于3.0.2.2版本
Google出来的教程都是使用的OD
我懒,反正静态,IDA不香嘛
那就开干吧
先看看注册界面
uhmmm…有个Activate
直接64位IDA拖进来,分析一通
一上来就先看看Strings好了
Activate…嗯?

直接跳到注册成功字符串的调用

有点明显,甚至不用看伪代码
那就直接把jnz改成jz:
00103A3 75 19 ===> 00103A3 74 19

齐活了?
吗?
几天后…
草,这玩意爆激活了,除了激活界面乱输能提示成功以外,别的地方和没激活一点区别也没有
我看到似乎网上激活后Challenge的字符会变绿,或许那就是关键之处?
看了下,变绿后Activate按钮会变成绿色的ACTIVATED
搜下ACTIVATED。。
寄!搜不到
那算了,让我们回到伪代码

我们发现这里与三个函数有关,并且后面的Email和Serial似乎都告诉着我们这俩函数的作用
唯独有一个sub_14000F530
进入这个函数,我们发现他的返回值不是0i64就是1i64

鲁迅先生说过:逆向的精髓在于大胆尝试
我们大胆猜测,返回1i64就代表激活成功
返回1i64的条件是这个if中qword_140135950和sub_14000F2D0(a3)这俩玩意同时等于1
进入sub_14000F2D0。。

妈的 又臭又长 不看了 直接大胆改了他
回到汇编,其实跳转的条件就是eax寄存器为1嘛
那就直接让eax寄存器变成1吧(
cmp eax, 1 ===> mov eax, 1
也就是:
00EB1E 83 F8 01 ===> 00EB1E B8 01 00 00 00

齐活了。。吧
先这样用着,以后有问题再更新