NoVmp是一個(gè)將VMProtect x64 3.0 - 3.5(最新版本)虛擬化為優(yōu)化 VTIL的項(xiàng)目,并可選擇使用虛擬機(jī)翻譯中間語言庫重新編譯回 x64,它是相當(dāng)實(shí)驗(yàn)性的,主要是我想發(fā)布的PoC。大部分的東西都可以改進(jìn),尤其是新的NativeLifters repo!
使用方法
NoVmp接受未打包的二進(jìn)制文件,所以如果你的二進(jìn)制文件是打包的,你必須先轉(zhuǎn)儲(chǔ)它,另外,如果你用Scylla這樣的工具轉(zhuǎn)儲(chǔ)了它,你必須使用-base參數(shù)提供原始的映像庫,像這樣。
-base 0x14000000
默認(rèn)情況下,NoVmp會(huì)將每一個(gè)跳轉(zhuǎn)都解析到虛擬機(jī)中,如果你只對一些特定的虛擬化例程感興趣,你可以使用-vms參數(shù),像這樣的相對虛擬地址。
-vms 0x729B81 0x72521
這些地址應(yīng)該指向VMEnter,如下圖所示。
VMEnter
默認(rèn)情況下,節(jié)段發(fā)現(xiàn)是自動(dòng)的,但如果您的調(diào)用沒有被鏈接,您應(yīng)該嘗試使用 -sections 將 VMProtect 節(jié)段名稱添加到節(jié)段列表中,如下所示。
-sections .xxx0 .yyy0
請注意,.
此外,您還可以使用以下任何一個(gè)開關(guān)。
-noopt.禁用優(yōu)化。禁用優(yōu)化。
-opt:恒定。優(yōu)化 VMProtect Ultra 常數(shù)混淆功能。
-experimental:重新編譯。啟用實(shí)驗(yàn)性 x64 編譯器。
已知錯(cuò)誤
VTIL-Core 已知的問題,主要是缺乏跳表支持和傳播通道耗時(shí)太長/不是很好,這些問題正在解決中。
目前還不完全支持編譯時(shí)剝離重定位的二進(jìn)制文件。
實(shí)驗(yàn)編譯器是一個(gè)邊緣性的破損演示,與它相關(guān)的問題不應(yīng)該被提交,因?yàn)樗鼘?huì)被重做,并且會(huì)在VTIL-Core中出現(xiàn)。
許可證
NoVmp采用GNU General Public License v3授權(quán)。