日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VMP分析之VMP2.13插件化分析(四)

發布時間:2025/3/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VMP分析之VMP2.13插件化分析(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • Zeus插件
      • 相關介紹
      • 初始化Key并解密
      • 加載操作碼
      • 解密操作碼
      • 取handler
      • 解密handler
      • 進入handler
      • 保存堆棧
      • 指令流解密Key
    • VMP分析插件
      • 相關介紹
      • VM分析插件的使用
      • 插件化分析VM代碼
      • VM指令集說明
    • FKVMP
      • 相關介紹
      • 使用方法
    • VMSweeper
      • 相關介紹
      • 使用方法

Zeus插件

相關介紹

  • 開發者: ximo
  • 更新時間:2012-1
  • 可以分析VM的基本信息,包括解析VM入口信息及handler名,大致是閹割版fkvmp(無解析流程功能)
  • 可以自動脫殼保護的殼,包括IAT,資源保護,heap antidump等

讓代碼執行到進入VM虛擬機開始的代碼

右鍵,選擇Zeus分析

打開log窗口,就能看到分析結果了。Zeus插件幫我們分析出了整個VM流程

初始化Key并解密

InitKey Decode : 0042D0EF add esi, 92e49d49 0042D0F8 bswap esi 0042B8C2 ror esi, 1d

加載操作碼

Load PCode: 0042B907 0042B907 mov al, byte ptr [esi]

解密操作碼

0042B90A sub al, bl 0042C1F5 not al 0042C1FC inc al 0042C209 not al 0042B847 sub bl, al

取handler

Dispatch Table : 0042B85A 0042B85A mov ecx, dword ptr [eax*4+42d503]Dispatch Base : 0042D503Dispatch Reg : ecx

解密handler

Handler Decode : 0042BF29 sub ecx, 7eef2a8d 0042BF30 add ecx, 0

進入handler

Handler Entry : 0042B39F 0042B39F retn 40

保存堆棧

VM Initial Info:[+00] <- 00000000 RELOC[+01] <- 00000000 ANTIDUMP[+02] <- 0019FE8C esi[+03] <- 0019FED8 ebp[+04] <- 003AB000 ebx[+05] <- CCCCCCCC eax[+06] <- 003AB000 ebx[+07] <- 00000000 ecx[+08] <- 0019FED8 edi[+09] <- 022C0F90 edx[+0A] <- 00000202 EFL[+0B] <- 502585E5 RETADDR[+0C] <- 92766AB7 INITDATA

指令流解密Key

VMInitKey : 92766AB7VMDecodeKey : 0042D928VMOpcodeStart : 0042D928 0042D928 VMEipStart : 0042D928VMOpcode Direction : ↑

接著給出了VM初始化的Key和解密后的Key。解密后的Key和指令流開始地址和vmEip實際上是一個東西。

VMP分析插件

相關介紹

  • 針對目標:VMProtect 1.x 2.x (大概到 VMProtect 2.09)
  • 開發者:zdhysd
  • 最后更新時間:v1.4 2013/01/30
  • 虛擬指令級別的調試。可以像調試匯編一樣調試虛擬機指令,可以單步運行一條虛擬指令,并查看虛擬寄存器、虛擬棧的信息。
  • 表達式轉化及化簡。本功能會在虛擬指令級別進行數據流和控制流的分析,進行字節碼的收縮。 VMProtect 是棧機結構,同時有 NOR 邏輯的混淆膨脹,字節碼的收縮還原一直是研究的重點,本工具可以完成字節碼收縮過程,輸出收縮后的表達式。唯一不同是沒有轉化成原始的 x86 代碼。但在分析上,已經可以提供極為有力的參考
  • 支持字節碼的 Patch。由于加密的存在,字節碼 Patch 一直是十分痛苦的過程,本工具可以像 Patch 普通指令一樣 Patch 虛擬指令
  • 支持自定義模板。模板包括 Handler 識別模板和表達式化簡模板。該工具提供了模板文件及模板修改工具。理論上,可以通過對模板文件的修改使及兼容所有版本的 VMProtect 1.x 2.x。( 3.x 因為虛擬機結構變化不能支持)

VM分析插件的使用

還是之前的Demo程序,首先執行到進入虛擬機開始的位置

然后右鍵選擇分析虛擬機

在log窗口可以看到分析結果,這一步會幫我們分析出VM的解碼循環和每一個handler的作用。

然后選擇分析虛擬程序

這一步會分析出VM的堆棧和vmEip

配置插件,打開所有的分析選項

插件化分析VM代碼

按F9會自動進入到虛擬機分析窗口,到了這個窗口,就可以基于VM指令集進行單步調試了,不需要一個一個handler進去分析。

如果沒有到這個窗口,說明進入虛擬機分析窗口失敗。攔截失敗就無法攔截OD原先的單步指令,不能直接調試,建議換個OD。

VM指令集說明

打開編譯虛擬指令信息

每一條VM的指令在這里都可以看到等價的匯編指令和詳細注釋

FKVMP

相關介紹

  • 針對目標:VMProtect 1.x 2.x (大概到 VMProtect 2.09)
  • 開發者:Nooby
  • 功能:Handler 識別、還原 PCODE 等

使用方法

在虛擬機入口處右鍵->FKVMP->start即可

在log窗口可以看到所有解析出來的handler指令

以及初始化壓棧的寄存器順序也會打印出來。

這個插件的缺點是只支持單一的基本塊,每次分析到 SetEIP 指令(實際就是跳轉指令)就會停止,需要人工操作,去分析下一基本塊

VMSweeper

相關介紹

  • 針對目標:VMProtect 2.x 、Code Virtualizer
  • 開發者:Vamit
  • 最后更新時間:v1.5 2014

可以完成 VMP 保護代碼還原的工具。 完全的代碼還原是十分困難的,因此該工具穩定性不高,經常出現異常。但是某些簡單樣本的測試,確實有不錯的還原效果。

使用方法

直接載入被VMP加殼的程序,不需要手動跳轉到VM虛擬機的入口

點擊Plugins -> VMPSweeper -> Analyze all VM reference

這里會自動識別出代碼斷和VM區段的起始和結束地址,然后點擊Analize

彈出窗口選要分析的 VM, 右鍵 Decode VM

出現這個提示后,會自動在虛擬機的入口下斷點,在斷點窗口可以看到

這個插件有自己的VM入口識別算法,所以不需要自己跳轉到VM入口。接著按F9運行到VM入口處后,按F1進行分析

分析完成后,會彈出提示框重新運行進程。重新運行后, Plugins -> VMPSweeper -> Continue decode VM。繼續分析。

如果分析沒有產生任何異常,VMPSweeper 會把還原后的代碼 Patch 到原本的虛擬機入口處

但上述過程經常出錯,可以在 OD 根目錄下查找 VMS_xxx 文件夾,查看日志文件,*.log 文件中保存著還原的過程輸出。

我這里也沒有完全分析成功,但是在VMS文件夾下可以看到上面幾個文件

按照文件名提示,很明顯是保存的是VM虛擬機的寄存器和堆棧狀態

該工具是少見的可以將 VMProtect 保護代碼進行完整還原的工具,缺點是穩定性太差,對于稍復雜的程序,還原過程很大可能會出現異常報錯。我這里測試的是VM2.13版本分析失敗。

總結

以上是生活随笔為你收集整理的VMP分析之VMP2.13插件化分析(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。