• Tokoyami

    这是我的首个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包和二进制快速执行,同时人类可以快速打开终端自己执行查看输出效果。

    github.com

    图片

    GitHub - Utolaris/Stata-CLI: Stata CLI for AI agents and coding agents (Codex,...

    Stata CLI for AI agents and coding agents (Codex, Claude Code, Cursor, OpenCode). Run Stata 18/19/StataNow locally, execute .do files, inspect .dta data, and return structured JSON via a native Rust engine — no Python or PyStata required. 开箱即用的AI原生Stata命令行工具,附带完整skill,支持最新版stata。完全由Rust构建,无需Python依赖。

    等stata 20出了再来反编译,DeepSeek有这个水平,我觉得挺不错的,GPT 5.6 Sol还没试过逆向。下次试试。

    主楼
  • Huagnqf

    太厉害了,stata这种都能逆向。

    另外,请教大佬这个是如何调用的,是需要切换终端不?

    DeepSeek实际写起来还是有漏洞。我让他开GPT 5.6 Sol作为reviewer。

    #1

发表回复

登录后回复