前几天分析一个程序,里面有一段代码为了对抗逆向,不仅把信息经过编码后存储,而且还原算法还是用 SIMD 指令写的。很多熟练的漏洞挖掘工能用大脑模拟执行一些代码,但 SIMD 真不好办。人类工作记忆的缓存太小,至少我没办法模拟一个进行矩阵运算的函数。所以过去对这种就只能动态调试。
于是我把那段代码的反编译结果丢给大模型,让大模型还原成高可读性的代码,然后再给出一份不用 SIMD 指令实现该算法的代码。大模型给出的两段代码都可以直接编译成功,而且执行结果都和原程序中的完全一样。
更令人惊讶的是,那段代码里其实还调用了别的函数,而我当时忘记把那些函数交给大模型了。但大模型竟然猜出了那些函数应该是什么功能,自己凭空补写出来了。
于是我把那段代码的反编译结果丢给大模型,让大模型还原成高可读性的代码,然后再给出一份不用 SIMD 指令实现该算法的代码。大模型给出的两段代码都可以直接编译成功,而且执行结果都和原程序中的完全一样。
更令人惊讶的是,那段代码里其实还调用了别的函数,而我当时忘记把那些函数交给大模型了。但大模型竟然猜出了那些函数应该是什么功能,自己凭空补写出来了。