大模型在技术领域,除了能帮忙写代码处理BUG,还能辅助逆向分析。
我第一次尝试是去年(2023年),帮同事分析js代码。通常这些正式的代码都是被混淆过的,而且由于不完全了解开发者逻辑,分析起来难度大效率低。
对我来说 claude 使用起来更方便一些,于是就尝试把 js 代码作为附件上传,然后在 chat 中让其分析代码的逻辑,并针对一些细节进行追问,效果非常好。
最近又看到一个开源项目,使用LLM做二进制逆向。github.com/albertan017…
这个项目中的LLM主要是用于汇编转C代码,并尽量保证代码可编译可执行。其使用的模型经过了特殊的预训练,数据源是 4 billion tokens 量的 C 代码及其对应的汇编代码。测试结果,比纯粹的 GPT-4 有 50% 的效果提升。
由此可以推测,安卓的逆向也可以使用类似的逻辑。比如可以使用一批 Java 或 Kotlin 和对应 smali 代码作为训练数据,预训练一个模型。在提示词中要求根据代码逻辑,对变量名进行优化并添加注释。
即使不需要全工程使用,甚至没条件预训练,使用已有的大模型针对独立的文件或方法进行解释优化,也会大大提升分析效率。
希望上述分享有用。