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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

VMprotect简介

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VMprotect简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • VMP簡單介紹
    • VMP的Handler
    • VMP指令分類
    • 邏輯運算指令
    • 寄存器輪轉
    • 字節碼加密和隨機效驗
    • VMP作者原則

VMP簡單介紹

VMprotect是一款虛擬機保護軟件,是目前最為流行的保護殼之一,與其他類型保護軟件不同的是,它使用的是虛擬機保護技術,側重點在于保護所指定的函數,增加逆向分析的復雜度

虛擬機保護特征

  • 將由編譯器生成的本地代碼(Native Code)轉換成字節碼(Bytecode)
  • 將控制權交給虛擬機,由虛擬機來控制執行
  • 轉換后的字節碼非常難以閱讀,增加了破解的復雜性
  • 虛擬機其實就是一個字節碼解釋器,它循環的讀取指令并執行,并且它只有一個入口和一個出口(VM_EXIT)。通過靜態分析,可以分析出整個執行引擎的完整代碼。

    全部選項開啟后的結果:

  • 虛假跳轉
  • 垃圾指令
  • 大量的fake jcc(虛假跳轉)和垃圾指令使原來十分簡單的代碼變得十分復雜

    VMP的Handler

    VMP是基于堆棧的虛擬機(Stack-Based VirtualMachine)

    虛擬機指令并不顯式的使用某個參數,而是先將參數壓入堆棧,然后直接從堆棧中讀取

    表達式:

    Add eax,ecx

    可以翻譯為:

    Push ecx Push eax Add Pop eax

    無論push 進來的是誰,Add指令總是讀取并彈出堆棧中存放的值,然后Add算出結果再壓入堆棧

    VMP指令分類

    匯編指令轉換到虛擬機的指令體系的過程中,被最大限度的化簡和歸類了,VMP中的指令大體分為5類:

  • 算術運算和移位運算
  • 堆棧操作
  • 內存操作
  • 系統相關(無法模擬指令)
  • 邏輯運算
  • 其中最復雜的是邏輯運算指令

    邏輯運算指令

    Vmp的邏輯運算指令:nor。這個指令在電路門中叫NOR門,它由三條指令組成,即not not and,與NAND門一樣,用它可以模擬 not and xor or這四條邏輯運算指令

    轉換公式:

    P(a,b)=~a & ~b not(a)=P(a,a) and(a,b)=P(P(a,a)P(b,b)) or(a,b)=P(P(a,b)P(a,b)) xor(a,b)=P(P(P(a,b)P(b,b)),P(a,b))

    寄存器輪轉

    VMP將所有寄存器都存放在了堆棧的結構中(VM_CONTEXT結構中的每一項代表一個寄存器或者臨時變量。但在運行過程中,其中的項所映射的真實寄存器都是不固定的,可以把它比作一個齒輪,每做完一個動作,部分項的映射就互換了一下位置,或者執行完一段指令齒輪就按不固定的方向和度數轉動了一下,然后全部的項映射就改變了

    VMP在生成字節碼的過程中,維護了一份結構中每一項所映射的真實寄存器,但這只是存在于編譯過程而在運行時是沒有明確的信息的。這直接導致了分析和識別的難度。

    字節碼加密和隨機效驗

    VMP把解碼算法分布到了Dispatch和每個Handler中,只有在取指令和取數據時才會解密,而每個解碼的算法也都是不同的,并且它的Seed每次解密都會變化。

    要寫出字節碼的逆算法不是不可以,但是復雜度太高,有些得不償失,所以如果想要修改數據,還是使用HOOK的方式比較輕松

    HOOK注意點:
    HOOK方式得解決代碼檢測問題,VMP注冊版除了會加密字節碼以外,還會隨機對一段代碼做檢測,如果有錯將無法進行

    VMP注冊版中有一條叫指令(calchash),就是用來做檢測的,VMP會在編譯好的字節碼中加一些自己的指令,每次執行都會隨機對一段代碼生成Hash結果,然后與另一個隨機的數相加,結果必須為0,否則就會出錯。如果要爆破或者修改VMP 的代碼,還需要處理這個過程

    VMP作者原則

    最簡單的正向設計,導致最困難的逆向分析

    總結

    以上是生活随笔為你收集整理的VMprotect简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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