MCPEmulate
这个项目被否决了。
代理可以通过标准MCP工具界面创建隔离的仿真会话、加载代码或完整的可执行文件、设置断点、挂接系统调用、单步执行指令、检查内存和寄存器以及差异执行跟踪。
支持的体系结构
| 架构 | 仿真 | 拆卸 | 组装 | 系统调用挂钩 |
|---|---|---|---|---|
| x86(32位) | 是 | 是 | int 0x80 | |
| x86-64 | 是 | 是 | 有 | syscall |
| ARM(32位) | 是 | 是 | svc 0 | |
| AArch64 | 是 | 是 | 有 | svc 0 |
| MIPS32(LE) | 是 | 是 | 有 | syscall |
| MIPS32(BE) | 是 | 是 | syscall | |
| RISC-V 32 | 是 | 是 | 否 | ecall |
| RISC-V 64 | 是 | 是 | 否 | ecall |
RISC-V架构缺少Keystone后端,因此 assemble 工具为他们返回一个错误。拆卸和仿真工作正常。
安装
需要Python 3.10+。
# Run directly (no install needed)
uvx mcp-emulate
# Or install globally
uv pip install mcp-emulate用法
克劳德桌面/MCP客户端
添加到MCP客户端配置中:
{
"mcpServers": {
"mcp-emulate": {
"command": "uvx",
"args": ["mcp-emulate"]
}
}
}命令行界面
# Default: stdio transport (for MCP clients)
mcp-emulate
# SSE transport (network, for web-based clients)
mcp-emulate --transport sse
# Streamable HTTP transport (newer MCP protocol)
mcp-emulate --transport streamable-http工具(41)
会话管理
| 工具 | 说明 |
|---|---|
create_emulator | 为给定的体系结构创建新的仿真会话 |
destroy_emulator | 销毁会话并释放资源 |
export_session | 将完整会话状态(内存、寄存器、断点、符号)导出为JSON |
import_session | 创建新会话并从以前的导出还原状态 |
记忆
| 工具 | 说明 |
|---|---|
map_memory | 映射具有指定权限的内存区域(r/w/x) |
write_memory | 将十六进制或base64数据写入内存 |
read_memory | 以十六进制或base64读取内存 |
list_regions | 列出所有映射区域 |
hexdump | 带ASCII侧边栏的格式化十六进制转储(最大4KB) |
search_memory | 在映射的内存中搜索字节模式 |
snapshot_memory | 捕获命名标签下的所有内存内容 |
diff_memory | 比较两个快照并返回更改的字节范围 |
memory_map | /proc/self/maps-带间隙和符号注释的样式布局 |
寄存器
| 工具 | 说明 |
|---|---|
set_registers | 写入一个或多个寄存器 |
get_registers | 读取寄存器(特定或全部) |
get_stack | 从SP读取堆栈条目,根据符号解析值 |
执行
| 工具 | 说明 |
|---|---|
emulate | 使用停止地址、指令计数或超时运行模拟 |
step | 执行一条带有完全反汇编的指令 |
add_breakpoint | 设置断点,可选地使用注册条件 |
remove_breakpoint | 删除断点 |
list_breakpoints | 列出所有断点及其条件 |
save_context | 在标签下保存寄存器快照 |
restore_context | 从已保存的快照还原寄存器 |
断点条件
条件断点接受以下表达式:
eax == 42
rax > 0x1000 and rcx != 0
r0 == 0 or r1 & 0xff支持的操作员: ==, !=, >, =, `=1.18.0|MCP协议/FastMCP服务器框架| | 独角兽 >=2.0.0|CPU仿真引擎| | 顶点石 >=5.0.0|拆卸发动机| | 梯形发动机 >=0.9.2 |装配发动机| | 亲爱的 >=0.14.0|ELF/PE/Mach-O二进制解析|
许可证
仅限GPL-2.0
