【逆向安全】反汇编音频插件与Cracking实录
为保护插件不被Cracking,了解其过程是很必要的。
一直以来,关于逆向音频插件的资料在国内外都很少,刚好本人最近接触到相关的东西,所以撰写此文分享插件Cracking技术
其实Cracking音频插件和Cracking软件思路大致是相同的,只不过音频插件是一个模块,本文的案例就是软件Cracking中常见的搜索字符串法
本文旨在为提升插件开发者水平而分享插件Cracking技术
正式使用,还请使用正版
0.准备工具
下载调试工具 x64dbg(开源软件)
设置取消全部的自动断点,点选项->选项
去掉事件下所有的勾
将 异常 -> Unknow exceptions -> 设定为 “不暂停”
0.准备被Cracking插件
这里 我写了一个简单的注册码验证的VST插件
下载后放到 C:\Program Files\Common Files\VST3 文件夹里
打开宿主加载(这里是测试用的Reaper)
1.明确目标
音频插件,本质是挂载在一个应用程序(宿主DAW)上的模块,而Cracking要做的事,则是通过调试工具找到并反汇编这个模块,进而分析修改并重新转存这个模块
2.信息收集 – 了解软件行为
为了方便我写了个注册机,你可以用它算出的注册码查看注册成功提示的信息
====================================== [注册机] ==================================
====================================== [注册机] ==================================
这是注册码正确的提示
这是注册码不正确的情况
记住正确会弹出 “You have successfully registered VSTCrackTutorials001” 的提示,后面会用到
3.实践分析 & 整理思路
打开x64dbg,点 文件 -> 附加
在进程中找到宿主DAW(测试用的Reaper)的进程,双击 或 右下角 “附加”
点击 “符号” 标签页
找到加载的 “vstcracktutorial001.vst3” 模块 (是一个状态为 Loaded 的 用户模块),双击
双击后会跳到反汇编窗口(CPU标签页)
现在可以通过搜索 注册成功提示的字符串 来定位 处理注册逻辑的代码 在内存中所在的区域,修改那个区域的数据,就可以影响程序的行为
(程序需要加载到内存中才能由CPU执行,程序加载到内存后会由一个相对进程的虚拟地址来定位)
标签页里点右键,点 搜索 -> 当前模块 -> 字符串
等待底部搜索进度条拉满后,在进度条上方的搜索框里搜索 “You have successfully registered VSTCrackTutorials001″(前面提到的 注册成功 弹出的信息) 里的内容
这里我只搜了一个 successfully
第二个是正确提示的内容,双击跳转到该位置的反汇编窗口
简单分析后可以看到有一个跳转跳过了成功(红线部分),这个应该就是关键跳
4.实行Cracking & 反馈验证调节
在该跳转的行上 点右键 二进制 -> 用NOP填充 (编程上相当于把这句在内存里注释掉)
然后输入错的注册码再点Register按钮,看看程序的反应
结果弹出了注册成功的框,说明Cracking成功了
5.维持访问
接下来需要把Cracking后的插件保存下来
在反汇编窗口(CPU标签页)点击 右键 -> 补丁
点右下角的修补文件,然后找个不需要管理员权限的位置存上就可以,会保存一个格式与原模块相同的文件 (这里是 .vst3)
(C:\Program Files\Common Files\VST3需要管理员权限)
(这里是把内存中修改的地址转换成了.vst3文件的文件偏移地址,然后把修改后的数据写进去,存为新的.vst3文件)
然后用刚存的 .vst3文件 替换掉 C:\Program Files\Common Files\VST3 里的原始.vst3文件,就完成Cracking了。
🙂