这是我的首个AI逆向实战(那种稍微解个包查下代码的不算),我是小萌新。
先前搞过一个Stata CLI工具,是Python+Rust混合实现。当时就一直在想,能不能把stata给破了,别再依赖Python。搞一个更加AI native的CLI,而不是用MCP。
因为现在的形式已经不是Vscode时代。更多的时候是Codex这种不看代码,完全自主运行的。
stata是商科专业常用的计量经济学软件。此软件对外开放的接口是pystata,他的MCP也由此实现。但这也意味着必须要有Python环境才能运行。
想要封装为独立二进制。那么这就涉及到研究pystata的实现机制,以及它和Stata之间是如何交互的。
几个月前问过GPT,当时的回答是很难实现。现在有了DeepSeek这个不限制逆向的模型,晚上打游戏的时候就觉得应该试试。
经过简单的搜索。自stata 17开始,它用ctypes把 Stata 的引擎libstata-mp.dylib直接加载进 Python 进程,命令传输是进程内 C 函数调用。
那么下一步就是直接反编译libstata-mp.dylib,我把我Mac上安装的Stata 18的镜像直接复制一份出来给AI,直接开工。
全量反编译大致三万个函数,分配12G内存依然容易出现崩溃。
改为针对性研究,先找到pystata的实现,看有哪些函数对应交互的。
锁定大约440个函数,反编译开始。
大约40分钟后AI提示完成,获得39077行伪C代码。
得知原理后,DeepSeek大呼妙哉,我让他做一个最小Rust二进制测试效果。
stata成功输出1+1=2 。
然后是完整替代研究,DeepSeek仔细研读(4分钟)伪代码后给出结论:


我授意DeepSeek对我原先的stata项目开始改造,目标为0 Python代码实现AI控制stata。
接下来就是代码实现,DeepSeek实际写起来还是有漏洞。我让他开GPT 5.6 Sol作为reviewer。
大约3小时后给出测试全过的二进制,Mac和win可用。
第二天我又用最新的stata 19.5双平台测试了一次,没有问题。
项目将stata分为AI处理和人类repl两个部分。AI调用部分有日志裁切,潜在错误处理,这些节约TOKEN以及面向AI执行完成do文档忽略错误的问题。
repl有语法补全,语法高亮,并且兼容了stata的旧设计。stata使用help命令将会弹窗,而不会在终端显示,这里能够将弹窗内容显示到终端中。
unsafe被限制在一个文件中,一个实例启动一个stata引擎,防止崩溃时全军覆没。
自带初始化模板和skill合集,减少AI不懂最新版stata命令乱写的问题。
因此这个项目是为coedx,trae ,workbuddy这一类agent工具设计。AI依赖skill包和二进制快速执行,同时人类可以快速打开终端自己执行查看输出效果。
等stata 20出了再来反编译,DeepSeek有这个水平,我觉得挺不错的,GPT 5.6 Sol还没试过逆向。下次试试。