软件逆向破解新手借助AI自动逆向软件注册码
|
admin
2026年9月22日 16:36
本文热度 38
|
免责声明
本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发。使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
前面文章中也演示过用AI实现软件逆向,但还有很多新手朋友不会搭建MCP或安装过程出现问题的,另外网上还有不少在收费搭建环境的。
本篇继续讲解下MCP的搭建,并一起学习用AI辅助逆向的学习。
MCP环境搭建:
1、去X64DBG官网下载他们的调试器(snapshot_2026-05-27_12-11)
现已同时支持 x64 和 x86 架构!
功能特性
完整 MCP 规范支持:实现 MCP 三大核心构件
Tools(79)
Resources(7 + 8 模板)
Prompts(10)
JSON-RPC 2.0 协议:标准、语言无关的接口
Streamable HTTP 传输(MCP 2025-03-26 规范)端点 /mcp,并保留旧版 HTTP+SSE 端点 /sse 兼容老客户端
Tools - AI 可控调试(79 个函数):
执行控制(init/run/pause/step/run_to/restart/stop)
内存读/写/搜索/分配
寄存器访问(50+ 寄存器,含 GPR、SSE、AVX)
断点管理(软件断点、硬件断点、内存断点、条件断点、日志断点)
反汇编与符号解析
线程管理(列出、切换、挂起、恢复)
调用栈追踪与分析
Dump 与分析
(模块 dump、内存 dump、加壳检测、OEP 检测)脚本执行
(执行 x64dbg/x32dbg 命令、批量操作)上下文快照
Resources - 上下文提供器(7 个直接资源 + 8 个模板):
Prompts - 工作流模板(10 个提示):
崩溃分析、漏洞挖掘、函数追踪
二进制脱壳、算法逆向、执行对比
字符串狩猎、代码补丁、API 监控
调试会话初始化
安全性:基于权限的访问控制
可扩展性:支持自定义方法、资源与提示的插件架构
安装
将编译好的插件复制到对应调试器目录:
# x64dbg(64 位)# 将 <x64dbg-path> 替换为你的实际安装目录copy dist\x64dbg_mcp.dp64 <x64dbg-path>\x64\plugins\# x32dbg(32 位)copy dist\x32dbg_mcp.dp32 <x64dbg-path>\x32\plugins\# 示例(安装在 C:\x64dbg):# copy dist\x64dbg_mcp.dp64 C:\x64dbg\x64\plugins\# copy dist\x32dbg_mcp.dp32 C:\x64dbg\x32\plugins\
# x64dbgmkdir <x64dbg-path>\x64\plugins\x64dbg-mcp copy config.json <x64dbg-path>\x64\plugins\x64dbg-mcp\# x32dbgmkdir <x64dbg-path>\x32\plugins\x32dbg-mcp copy config.json <x64dbg-path>\x32\plugins\x32dbg-mcp\
使用方法
启动服务器
64 位目标打开 x64dbg,32 位目标打开 x32dbg
进入 Plugins -> MCP Server -> Start MCP HTTP Server
服务器会在配置端口启动(默认:3000)
访问 http://127.0.0.1:3000
VS Code 集成
在 VS Code 设置或 MCP 客户端配置中添加:
{ "mcpServers": { "x64dbg": { "type": "http", "url": "http://127.0.0.1:3000/mcp" } } }
旧版 HTTP+SSE 客户端(注意是 /sse 路径,不是根路径):
{ "mcpServers": { "x64dbg": { "type": "sse", "url": "http://127.0.0.1:3000/sse" } } }客户端我们以TraeCode,在官网下载后。直接安装即可。
安装完毕后,注册一个用户。在设置里点击MCP,开始配置。配置完成后,我们还要选择创建智能体,选择刚创建的MCP 服务 环境搭建好了,现在就来测试下当前的AI逆向有多强大吧。我们在对话框输入“用x32dbg调试程序 D:\160实例\Afkayas.1\Afkayas.1.Exe”可以看到它就开始自动工作了。到这里我们就可以直接输入文字或命令,AI就开始自动逆向分析了。输入假的注册码和用户名,根据错误提示字符找到关键位置开始分析时。这里的EAX出现了一个数值。这个数值就是注册码的一部分。我们之间问AI这个数值如何的来的。AI还真给你找出了关键位置。还把算法都整理了出来。### 算法公式12
`edi = len(TextBox2.Text) × 97531 + Asc(TextBox1.Text[0])字符串 = __vbaStrI4(edi) ; 整数 → 字符串`
其中:
- `len(TextBox2.Text)` 由`__vbaLenBstr` (IAT[0x4040E4]) 在 0x402415 处计算- `0x17CFB` = 十进制 97531 (关键魔数)- `Asc(TextBox1.Text[0])` 由`rtcAnsiValueBstr` (IAT[0x4040F8],MSVBVM50 ordinal 0x204=516) 在 0x40242D 处计算- `__vbaStrI4` (IAT[0x4040E0]) 在 0x40243F 把整数转成十进制字符串### 反推用户输入585291 = 6 × 97531 + 105
- 6 × 97531 = 585186- 585291 − 585186 = 105 = ASCII('`i` ')所以:
- `TextBox2.Text` 长度 = 6 (用户在第二个文本框输入了 6 个字符)- `TextBox1.Text[0]` = 'i' (用户在第一个文本框输入了以 'i' 开头的用户名)### 后续流程1. 0x40244A`call __vbaStrMove` 把 "585291" 存到`[ebp-0x20]`2. 0x402458`call [ebx+0xA4]` COM 调用,把 "585291" 显示到 Label3.Caption("KeyGen It Now" 提示)3. 0x4024F4 读取 TextBox3.Text(用户输入的验证码)4. 0x402523`__vbaStrCat` 拼接`TextBox3.Text + "A.K.A.-" + TextBox1.Text`5. 0x402530`__vbaStrMove` 把拼接结果存入`[ebp-0x20]` ,返回旧值 "585291"6. 0x402533`call __vbaStrCmp` 比较字符串7. 0x40258B`jz 0x4025E5` 根据比较结果跳转到 "You Get It" 或 "You Get Wrong Try Again" 分支### 关键字符串与 IAT 映射地址 字符串/函数 `0x401B70` `"A.K.A.-"` `0x401B80` `"You Get It"` `0x401BA0` `"KeyGen It Now"` `0x401BC8` `"You Get Wrong Try Again"` IAT[0x4040E0] `__vbaStrI4` IAT[0x4040E4] `__vbaLenBstr` IAT[0x4040F8] `rtcAnsiValueBstr` (ordinal 516) IAT[0x404100] `__vbaStrCat` IAT[0x404128] `__vbaStrCmp`
总结 :内存数值`585291` 是程序通过公式`len(TextBox2) × 97531 + Asc(TextBox1[0])` 计算得出的整数结果(用户输入用户名首字符为 'i'、第二文本框输入 6 字符),再由`__vbaStrI4` 把整数`585291` 转换成 ASCII 字符串`"585291"` 后存入内存`[ebp-0x20]` 。
不得不佩服,放到以前这样一个程序,手工分析怎么也得好几小时。现在AI直接几分钟的时间就把注册机算法都给了你。整个过程你就需要打几个字就完成了。
阅读原文:点击这里
该文章在 2026/9/22 16:45:12 编辑过