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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何用OD的跟踪功能分析虚拟机保护

發(fā)布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用OD的跟踪功能分析虚拟机保护 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文網(wǎng)址:https://www.52pojie.cn/thread-572327-1-1.html

?

新年,分享一份自己寫的文章

虛擬機保護已經(jīng)是現(xiàn)代保護殼不可缺少的一環(huán),雖然逆向方也發(fā)展出各種插件幫助分析,但只針對特定某款,通用性的方法卻不多見。我總在想,既然虛擬機的結構是固定的,如果有一款工具能夠記錄指令流,那么按圖索驥,也許能發(fā)展出一套通用的分析方法來。其實OD就有記錄指令流的功能,叫跟蹤(trace),也許是效果不好或者操作不便,用的人甚至知道的人不多。先介紹下怎么用。

OD的跟蹤功能原理很簡單,就是每一步都自動下單步斷點,然后記錄斷下來的指令信息。這項功能涉及到幾項設置,第一項是緩存大小,不難想象,跟蹤得到的這一些列的指令記錄是需要占地方存儲的,占多大可以設置,位置在調試選項(Debugging options)->跟蹤(Trace),如圖1。第一項就是緩存的大小,內(nèi)存允許的話,自然是多多益善,畢竟



緩存越大,允許記錄的信息越多。第二項是記錄的內(nèi)容,跟蹤會自動記錄地址模塊等信息,此外可以選擇是否記錄指令、ESP和標志位的信息。設置位置緊接著緩存大小,見圖2,可以按需勾選,本文只需要記錄指令即可。最后一項是在調試(DEBUG)菜單中打開Trace。



現(xiàn)在Trace已經(jīng)設置完畢了,按下Ctrl+F12,查看Trace窗口,應該已經(jīng)開始記錄執(zhí)行過的指令。否則請檢查前述設置和操作是否正確。

那么,虛擬機保護要怎么入手分析呢?前面我提到,虛擬機是有固定結構的,既然要分析,那對應的找到這些結構應該就可以了。傳統(tǒng)保護虛擬機的結構其實很簡單,大致可以看成一只章魚,有三個部分,分別是init(頭),Dispatch(身)和Handle(觸須),如圖3:



Init主要完成虛擬機初始化工作,例如申請內(nèi)存填寫初始值之類,每次進入虛擬機,這個“頭部”通常只執(zhí)行一次。Dispatch是虛擬機的主體,可以看成一個主循環(huán),它是每一條虛擬機指令的開始之處,也是結束之處,負責讀取虛擬機指令,進入具體handle解釋等工作。Handle就是虛擬機的“指令”了,實際完成各項虛擬機指令的功能。 我曾寫過一篇《基于虛擬機的軟件保護技術.》較為詳細的介紹過虛擬機保護技術,對基本結構還不太熟的同學,此文會對上述概念有更詳細的說明。

現(xiàn)在,我們就要在具體的軟件中找這只“章魚”了。以一個CrackMe為例,首先清理所有斷點,打開Trace,Ctrl+F12跟蹤步過運行,看到程序跑起來了,F12暫停,看Trace的窗口如下(圖4):



記錄是從下往上看的,可以看出,在程序空間的最后一條支流,是00401534的一個call,調用了DialogBoxInDirectParamA,這是一個調出系統(tǒng)對話框的API,其中有一個參數(shù)DlgProc用來指明消息回調函數(shù)的位置,我們直接在反匯編窗口查看這個API,發(fā)現(xiàn)回調函數(shù)是0x401572(圖5):



0x401572處代碼不長,有好幾條Call,但大部分都是系統(tǒng)Call,只有一處調用了程序空間的函數(shù),這個函數(shù)就是虛擬機的入口。到這里,我們對虛擬機的分析的工作才剛剛開始。

首先對虛擬機的入口下斷,然后重新運行程序。目的是保證能夠正確找到init。現(xiàn)在應該端在虛擬機的入口處,如下圖:



這是個非常簡單的虛擬機,有經(jīng)驗的同學也許可以一眼就看出來圖6包含了Init和Dispatch分別在哪里。當然也可以用Trace快速找出虛擬機的各個結構。現(xiàn)在去掉斷點,打開Trace,Ctrl+F12跟蹤步過,這時程序會跑起來,多點擊幾下按鈕,目的是讓主要分支得到更充分的執(zhí)行(即增加獲得執(zhí)行的次數(shù)),然后F12暫停。

回到Trace窗口,對著任意一行程序空間的指令點擊右鍵,選擇模塊統(tǒng)計,結果如下圖:



統(tǒng)計是以代碼段來劃分的,第一欄顯示的是這段代碼在剛才的跟蹤執(zhí)行中執(zhí)行的次數(shù),第二欄顯示了某個代碼段的首地址。我們先找執(zhí)行了一次的指令首地址。可以找到第5行的地址就是虛擬機的入口地址,點擊在反匯編窗口跟隨,可以看到這段代碼是從0x00401060到0x004010B9,這就是init:

[Asm]?純文本查看?復制代碼

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

00401060?? $? 55??????????? push??? ebp

00401061?? .? 8BEC????????? mov???? ebp, esp

00401063?? .? 81C4 D0FEFFFF add???? esp, -0x130

00401069?? .? C745 E4 00000>mov???? dword ptr [ebp-0x1C], 0x0

00401070?? .? C745 E8 00000>mov???? dword ptr [ebp-0x18], 0x0

00401077?? .? C745 F1 00000>mov???? dword ptr [ebp-0xF], 0x0

0040107E?? .? C645 FD 00??? mov???? byte ptr [ebp-0x3], 0x0

00401082?? .? C645 FE 00??? mov???? byte ptr [ebp-0x2], 0x0

00401086?? .? C745 F5 00000>mov???? dword ptr [ebp-0xB], 0x0

0040108D?? .? 8D85 D0FEFFFF lea???? eax, dword ptr [ebp-0x130]

00401093?? .? 8945 F1?????? mov???? dword ptr [ebp-0xF], eax

00401096?? .? 8B45 14?????? mov???? eax, dword ptr [ebp+0x14]

00401099?? .? 8945 E0?????? mov???? dword ptr [ebp-0x20], eax

0040109C?? .? 8B45 08?????? mov???? eax, dword ptr [ebp+0x8]

0040109F?? .? 8945 D0?????? mov???? dword ptr [ebp-0x30], eax

004010A2?? .? 8B45 0C?????? mov???? eax, dword ptr [ebp+0xC]

004010A5?? .? 8945 D8?????? mov???? dword ptr [ebp-0x28], eax

004010A8?? .? C745 DC 00000>mov???? dword ptr [ebp-0x24], 0x0

004010AF?? .? C745 D4 00000>mov???? dword ptr [ebp-0x2C], 0x0

004010B6?? .? 8B45 10?????? mov???? eax, dword ptr [ebp+0x10]

004010B9?? .? 8945 EC?????? mov???? dword ptr [ebp-0x14], eax



接著找Dispatch,剛才說過,它既是虛擬機指令的開始,又是結束,它得到的執(zhí)行次數(shù)一定也最多。可以看到第三行的0x004010B9,這個地址在虛擬機入口地址之后,執(zhí)行次數(shù)最多,同樣的辦法可以看到這段代碼的終止位置是0x004010D9:

[Asm]?純文本查看?復制代碼

?

1

2

3

4

5

6

7

8

9

004010BC?? > /FF45 EC?????? inc???? dword ptr [ebp-0x14]

004010BF?? . |8B45 EC?????? mov???? eax, dword ptr [ebp-0x14]

004010C2?? . |8A00????????? mov???? al, byte ptr [eax]

004010C4?? . |8845 F0?????? mov???? byte ptr [ebp-0x10], al

004010C7?? . |B8 00204000?? mov???? eax, 00402000

004010CC?? . |0FB65D F0???? movzx?? ebx, byte ptr [ebp-0x10]

004010D0?? . |C1E3 02?????? shl???? ebx, 0x2

004010D3?? . |03C3????????? add???? eax, ebx

004010D5?? . |FF20????????? jmp???? dword ptr [eax]



最后是找這次執(zhí)行虛擬機用到的handle。這個不難,虛擬機入口地址之后的代碼段除了init和dispatch,其它都是handle,所有執(zhí)行過的handle都會在里面出現(xiàn)。當然了,某條handle的具體作用,以及沒有執(zhí)行過的handle,就只能靠人肉分析了。還有就是,就分析虛擬機保護來說,了解執(zhí)行了哪些handle,以及哪些handle更常用,這些信息都是十分有用的。

OK,把內(nèi)容直接貼出來了,順求一個新精華{:1_930:}
?

如何用OD的跟蹤功能分析虛擬機保護.doc

?

113.55 KB, 下載次數(shù): 174, 下載積分: 吾愛幣 -1 CB

?

內(nèi)容和po出來的完全一樣,愿意捐的就贊助點唄

vmcrackme.zip

?

1.92 KB, 下載次數(shù): 135, 下載積分: 吾愛幣 -1 CB

?

所有權歸老K所有

總結

以上是生活随笔為你收集整理的如何用OD的跟踪功能分析虚拟机保护的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99久久久无码国产精品免费麻豆 | 黄色小说视频网站 | 一本大道久久a久久综合婷婷 | 精品国产日本 | 懂色av一区二区在线播放 | 少妇被躁爽到高潮无码人狍大战 | 久热久 | 美女破处视频 | 一二三区视频 | 日本福利小视频 | 成人av免费在线 | 性色一区二区三区 | 激情国产精品 | 色老头网址 | 亚洲xxxx18| 精品久久人妻av中文字幕 | 亚洲性xx| 亚洲精品66 | 亚洲综合精品在线 | 小视频在线看 | 嫩草影院在线观看视频 | 国产精品欧美日韩 | jzzijzzij亚洲成熟少妇18 欧美www在线观看 | 国产精品刺激 | 中文字幕一区二区三区免费看 | 伊在线久久丫 | 在线免费观看黄 | 中国黄色一级大片 | 日韩射吧| 精品国产丝袜一区二区三区乱码 | 少妇太紧太爽又黄又硬又爽 | 在线观看国产黄色 | 少妇视频在线播放 | 国产在线综合网 | 91n视频| 在线观看av免费 | 一区二区三区精品在线观看 | 天天干妹子| 一级人爱视频 | 中文精品无码中文字幕无码专区 | 欧美男优 | 日本亲与子乱xxx | 国产黄色在线看 | 五月天婷婷色综合 | 亚洲男人第一天堂 | 希岛婚前侵犯中文字幕在线 | 亚洲一区二区三区综合 | 亚洲熟女综合一区二区三区 | 中日韩精品视频在线观看 | 视频在线看 | 天堂av免费看| 都市激情校园春色 | 欧美1级片 | 视频一区二区三区四区五区 | 另类综合视频 | 免费在线黄色av | 日韩精品视频在线播放 | 亚洲天堂av网站 | 亚洲欧洲另类 | 97精品一区二区视频在线观看 | 91免费成人 | 日本黄动漫 | 亚洲妇女体内精汇编 | 成人在线视频网站 | 午夜一区二区视频 | 青青草av | www.日韩一区 | av 一区二区三区 | 精品视频 | 欧美日本韩国一区二区三区 | 波多野结衣91| 污视频导航 | 中文字字幕在线中文乱码 | 麻豆影视av | 欧美成人精品二区三区99精品 | 国产成人亚洲综合a∨婷婷 台湾a级片 | 在线看中文字幕 | 天天色天天色 | 欧美色99| 国产伦精品一区二区三区照片 | xxxxhd欧美| 日本免费在线一区 | 久久久综合av | 国产精品51| 毛片久久久久久久 | 欧美激情片一区二区 | a级片一区二区 | 久久激情视频 | 欧美黄色一级大片 | 国产一级二级在线观看 | 日本高清不卡视频 | 在线观看国产欧美 | 中文字幕日韩欧美一区二区三区 | 天天添天天射 | 神马香蕉久久 | 无码人妻精品一区二区中文 | 青娱乐自拍视频 | 久久久久久久久久av | 国产一区导航 |