当我们进行逆向工程时,我们有几个级别的模型。其中之一是指令语义模型,它告诉我们每条本机指令如何修改指令状态。我们正在那里取得进展。然而,另一个问题是平台语义的问题,这是一个更高层次的问题。
例如,用户空间 linux 程序的高级模型需要包含有关 mprotect 的信息,并且它可以改变某些代码区域的可见性。线程和回调语义也是一个平台建模问题,我们可以从它的头中发现一个程序入口点(这是另一种语义!但我们可能不会妥协),但其他入口点在程序中发布atexit、pthread_create 等的参数形式。
我们目前在以从业者理解的方式捕获这种高级平台信息方面的最大努力/最先进的技术是什么?机械/自动理解系统呢?我知道 IDA 有(或必须有)关于不同平台 API 的信息,它似乎知道当一个 immediate 是 pthread_create 的参数时,immediate 是一个指向代码的指针,应该这样对待。除此之外,我们还有什么?