我正在对一些恶意的sys驱动程序进行逆向工程。它们是打包的,所以我让它们成为人类可读的唯一方法是加载驱动程序(使用OSR Loader)并从内核内存(使用rkUnhooker)转储它们。
不幸的是,我需要重建IAT,但我找不到一个简单的分步指南来手动执行,而且我尝试过的任何工具(scylla,imprec,chimprec)似乎都不起作用。它们通过附加到进程来工作,但是(可能我错了)加载的驱动程序不一定属于进程。
所以,我的问题是:如何重建sys驱动程序的IAT - 从内核内存转储时 - 或者有哪些工具可以自动执行此操作。
答案 0 :(得分:0)
我发现分析没有IAT的驱动程序的最简单的解决方法是使用波动率的moddump和impscan模块。 mod dump从内存中刻录驱动程序,并提供基址。
Impscan查找从指定基址开始的跳转表,并使用参数--output = idc,它生成一个IDA脚本文件。
我使用LordPE修改了转储的驱动程序,以更改ImageBase以匹配由volatility提供的基址。然后我在IDA pro中打开了驱动程序。驱动程序完成加载后,我转到文件>>脚本命令并从波动性的impscan中复制并粘贴IDC代码。
好多了!
虽然它并没有修复IAT,但它确实有助于静态分析。