他鄉_08

【01:55】"VMP1.7 IAT修復腳本.txt"、"VMP IAT高級處理腳本.osc"、"VMProtect 修復腳本.txt"、"vmp_iat.osc"函數

 

【05:15】先不看腳本,先本身寫一下工具

【09:35】(ZC: 又不本身寫了...) 直接拿 "VMP1.7 IAT修復腳本.txt" 的內容來說解加密

  【16:00】講解結束url

【16:01】用 OSCEditor(OllyScript Editor v1.0 Beta 2)編輯腳本很簡單插件

 

【17:35】用 "VMProtect Professional v 1.70.4" 專家模式調試

  【17:45】用 PEiD查殼,VB5.0/6.0  【17:49】查看 區段視頻

  【18:08】對 exe進行加殼教程

【18:38】OD載入 待脫殼exe進程

  【18:53】很明顯,被VM了 (ZC: 我眼中,沒那麼明顯嘛... 怎麼就"很明顯"了?)ip

  【19:02】用 VirtualProtect下斷,先設法來到OEP

    Ctrl+G 輸入VirtualProtect --> 所在指令的地方,下F2斷點 --> F9 N次,當 函數VirtualProtect的 參數Address的值爲 00403000,參數NewProtect爲PAGE_READONLY的時候(PAGE_EXECUTE_READ的後面),爲最佳返回時間點,retn的地方 下F2斷點 --> F9 --> 刪掉全部斷點 --> "內存映射"窗口,00401000處 下斷點(設置內存訪問斷點(A)) --> F9(來到這裏【19:33】),刪除內存斷點(前面的"內存訪問斷點"),這樣子咱們就能來查找 "#E9??????00#"(ZC: 來自於"VMP1.7 IAT修復腳本.txt")。咱們能夠這樣來看一下,【19:58】打開"內存映射"窗口,00401000處 右擊 在CPU數據窗口中查看(ZC: 來到的地方就是 斷下的地方...),操做不對 重來。【20:12】"內存映射"窗口,00401000處 右擊 在反彙編窗口中查看 --> Ctrl+B,輸入"E9??????00"(這個意思就是找JMP),來到第1個JMP指令 --> Ctrl+L N次 --> 【20:50】(ZC: 貌似 他沒找到中意的JMP) 又回到 斷下來的地方。"內存映射"窗口,00401000處 右擊 在反彙編窗口中查看,找 "#E8??????0090#"(這是找CALL或者JMP)--> Ctrl+B,輸入"E8??????0090",沒有找到(Ctrl_L 也沒有找到)

    【21:38】來到斷點處,寄存器窗口 ESP,右鍵 數據窗口中跟隨 (直接這樣子來 找到OEP),數據窗口 拉到最底下,(根據原來的方法) kernel32.7C817077的上面下斷點(硬件寫入 字節) --> F9 (ZC: 【21:51】怎麼會斷在這裏,臥槽,難道是 0x0012FFC0 和 0x0012F690 所指向的值相同的緣故?這不是扯淡嘛)-->"內存映射"窗口,00401000處 下斷點(設置內存訪問斷點(A))--> F9 --> 【21:58】(ZC: 此時是斷在了硬件斷點上仍是內存斷點上?) 這樣就到達了OEP(ZC: 臥槽 這就到了OEP了?)

    【22:18】OD插件脫殼,程序不能運行,∵ IAT被加密了,並且 咱們是使用的專家的模式來加密的,加密強度很是高

    【23:00】咱們運行 "VMP1.7 IAT修復腳本.txt",(將斷點都刪掉 ZC: 貌似 他漏刪了內存斷點?)

      【24:00】腳本跑完(修復完畢),再次 OD插件脫殼,程序仍是出錯 內存錯誤

    【24:36】ImportREC修復。顯示無效函數-->無效函數上 右擊-->高級命令-->選擇代碼塊-->點擊 按鈕"完整轉存"

      無效函數上 右擊-->跟蹤級別1(反彙編)-->【25:12】修復以後,代碼段無效(ZC: 那看出來 代碼段無效 了?扯淡啊?) -->【25:42】二話不說,RVA填入1000 (ZC: 無語了,真tm亂)

    【26:44】(ZC: 這裏明顯視頻剪接過了) 咱們繼續,到了OEP以後 咱們直接dump(OD插件脫殼) (剛纔因爲殺毒軟件,把它掛掉了),把 OllyDump的"重建輸入表"的"√"去掉,再次 脫殼,能夠運行了 (ZC: ...)

  【27:57】用修復腳本修復一下(ZC: 上面 沒有跑腳本?) 【28:05】"內存映射"界面 節".vmp0"處 右擊 複製到剪切板 地址,而後將 複製到的值 粘貼到 腳本彈出的對話框中 (ZC: 當 節的名稱被修改掉的狀況下,我如何肯定哪一個節是第一個VMP節??)。將 節".vmp0"的地址也粘貼到 腳本彈出的第2個對話框中 --> 腳本跑起來了 --> 程序跑終止了(OD顯示狀態"已終止")

  【28:30】用修復腳本修復 有時會出現問題(ZC: 腳本沒蓋好 找藉口?)

  【28:30】OD從新加載,腳本對話框彈出來了,關掉 腳本對話框

  【28:33】再次 OD從新加載。此處操做 和 前面 找OEP的方式相同

    【29:15】到達OEP (刪掉2個硬件斷點。ZC: 爲啥有2個?前面的沒刪掉?)。OD插件脫殼,程序運行 內存錯誤。 【29:42】再次 OD插件脫殼,不要 (√選)"重建輸入表",程序運行OK。重建表 自己就被VM了,再重建表,就要出問題 (ZC: 爲啥 被VM了的 輸入表 咱們能夠正常使用?) 【29:56】PEiD顯示 是VB5/6

  【30:03】ImportRec 打開 OD調試中的 "VB 課.vmp.exe"。 右擊-->高級命令-->選擇代碼塊-->點擊 按鈕"完整轉存",保存的名字爲"VB 課.vmp_dump.exe"

    【30:18】OD插件 OllyDump 取得 OEP爲 0x1086

    【30:23】將 0x1068寫入 ImportRec中,點擊"自動查找IAT" 提示"在此OEP入口點沒有找到任何有用的信息"。手動將 RVA改成0x1000 大小改成0x100,點擊"獲取輸入表",點擊"顯示無效函數",右擊 "跟蹤級別1(反彙編)" --> 還有許多無效的函數 (ZC: 他 直接放棄 ImportRec作的 IAT/輸入表 相關操做)。【30:45】發現 直接dump(ZC: 就是指 ImportRec的"完整轉存") 就能夠了,它 不須要去修復 (ZC: why?不是說 IAT被VM了嗎?)

    【30:51】PEiD檢測"VB 課.vmp_dump.exe",什麼也沒有發現,選了 "核心掃描"以後 顯示是 VB5/6

    【31:13】LoadPE 打開 "VB 課.vmp_dump.exe",用咱們找到的OEP 修改 "入口點" 【31:31】一樣的,程序運行OK

      【31:37】此時 PEiD直接顯示VB5/6

  【31:47】(ZC: 此時的代碼執行位置爲0x00401068) 若是有須要,能夠跑一下這個腳本 "VMP1.7 IAT修復腳本.txt",這個腳本就是固定IAT 它找的IAT是固定的。填入2個值,腳本就跑起來了。【32:14】(ZC: 腳本跑完了,停下來的地方仍是 0x00401068,爲啥?這個腳本是怎麼跑的?怎麼能又回到這裏?從新加載程序 而後再跑的?) 也能夠這樣子 一樣的能夠跑掉 能夠跑掉OEP。【32:22】(OD插件脫殼 不√選"重建輸入表") 一樣的 修復好以後,咋們 脫殼之,程序出錯 內存錯誤。【32:45】跑了這個(腳本)以後,它就修復了原來的原始IAT,修復原始IAT以後【32:54】這些東西就被修復了(ZC: 此時 他把這些代碼選中是什麼意思?是這些被選中的代碼被修復了?),因此它 可能會出錯(ZC: 咱們用LoadPE將IAT設爲0 能不能解決該問題?)

    【33:00】修復了以後,咱們用PEload來糾正一下(ZC: 靠 就是LoadPE...還覺得是什麼新軟件了...) 【33:15】LoadPE選中 被OD調試的那個"VB 課.vmp.exe"進程 --> 修正鏡像大小 --> 完整轉存 dumped.exe 就生成了

    【33:25】ImportRec 選中 被OD調試的那個"VB 課.vmp.exe"進程,點擊 按鈕"選項" 須要配置成此時(【33:29】)的設置,填入 OEP,點擊"自動查找IAT" 提示"在此OEP入口點沒有找到任何有用的信息",手動將 RVA改成0x1000 大小改成0x100,點擊"獲取輸入表",點擊"顯示無效函數",右擊 "跟蹤級別1(反彙編)" --> 還有許多無效的函數--> 關閉ImportRec。 【33:48】(ZC: 用腳本)修復了以後,(ZC: 相關的IAT函數)無效了,這個腳本不適合VB。VB就直接這樣脫 就能夠了,哪怕是專家模式,一樣的沒有問題。

 

【34:15】咱們再來看一下1.704(ZC: 加殼。軟件標題:"VMProtect Professional v 1.70.4")

  點擊 按鈕"查看",選擇 "專家模式",文件 --> 打開 --> 清楚歷時記錄,文件 --> 打開 --> 桌面上的 NOTEPAD.exe

  【34:45】PEiD查桌面上的 NOTEPAD.exe,顯示 VC7.0

  【34:51】VMP1704 --> 選項 --> 級別:最大保護

 

【35:00】咱們先來用一下,VMP工具 (ZC: 我聽到的是 "VMP help" 仍是 "VMP hacker"?),也就是 所謂的 代碼還原與垃圾指令清除 的 人肉流 (ZC: 什麼東西?)。人肉 就是 用手工 把它還原的意思

  【35:20】VMPhelper(ZC: 一個應用程序),點擊 "Browser" 選擇 桌面上的 NOTEPAD.exe,點擊 "Generate"。它就回得了一個 VMP parser的VMS文件(NOTEPAD.exe.vms),得到 一個 VMS文件 就是爲了加密

  【35:47】VMP1704  -->文件 --> 打開-->選擇 桌面上的 NOTEPAD.exe --> 腳本-->NOTEPAD.exe.vms,有這麼多垃圾代碼 (ZC: 右側顯示的就是 VMP要插入的垃圾代碼?)-->【36:00】對它進行加密 (點擊 按鈕"編譯(F9)")-->生成了文件 NOTEPAD.vmp.EXE

  【36:18】PEiD查殼 --> "什麼也沒有" --> 選擇 "核心掃描" --> 仍是"什麼也沒有" --> 區段中顯示 有vmp0、cmp1

 

【36:30】OD 載入 NOTEPAD.vmp.EXE

  一樣的方式,來到OEP。【37:21】到達OEP。刪除 一個硬件斷點 和 內存斷點

  【37:31】OD插件脫殼,不 √選"重建輸入表"。【37:41】程序運行OK。證實咱們 脫殼沒問題。【37:45】PEiD顯示 VC7.0[Overlay] (ZC: 這裏有[Overlay],怎麼不須要像 教程 一套詳細 裏面那樣來處理?這難道是 殼的[Overlay] 和 原程序無關?仍是說 ∵ 脫殼了,因而 殼的代碼就沒用了 在PE頭裏面也沒有了它們的相關信息,因而顯示成了[Overlay]?)

  【37:55】可是 爲了 跨平臺修復,咱們能夠運行 腳本"VMP1.7 IAT修復腳本.txt"(ZC: 如今的代碼執行到的位置爲 0x0100739D),【38:00】輸入2個值(腳本運行窗口,繼續) 腳本一會兒就跑完了 (ZC: 代碼執行位置 仍是在0x0100739D)

  【38:20】打開 ImportREC,選擇 被OD調試的 NOTEPAD.vmp.EXE,輸入OEP,點擊 "自動查找 "IAT" 發現了一些信息,點擊 "獲取輸入表" 顯示 0個有效模塊 0個輸入函數,找不到函數。【38:43】右擊 高級命令 選擇代碼塊,直接dump(點擊 "完整轉存")(ZC: 生成文件 NOTEPAD.vmp_dump.EXE)。程序運行OK

    【39:10】用 LoadPE 將NOTEPAD.vmp_dump.EXE 的入口點,改爲咱們找到的 OEP,這裏 它 的值就是 739D(無需修改了)

 

【39:20】跑了這和腳本以後 脫掉VMP1704殼的程序 就能夠 跨平臺了,它修復了 VMPhacker的IAT

 

【39:52】OSCEditor 打開 "VMProtect 修復腳本.txt",太長 沒法打開

【40:02】OSCEditor 打開 "VMP IAT高級處理腳本.osc"

【40:21】腳本的使用也很簡單,方法差很少 跑一下,得到一個 IAT log,生成一個dll 就能夠跨平臺了(ZC: 如何生成?),這個主要是應用於1.8

 

【41:05】打開 "VMProtect 修復腳本.txt"

【41:06】就是剛纔那些步驟,而後到達OEP,而後對於它的hack的VMP dll 進行修復一下,這麼一個過程

 

 

C

ZC:

  下載 XueTr,VMP的各個版本,網購 積木(大)

  VB6.0、VS0八、BC++6

 

"VMP1.7 IAT修復腳本.txt"

http://wenku.baidu.com/link?url=57aywD0Q6WTnl7XKbIHuEwWENnSuPS32QO8X0a0gHpOOzdnNt_K0mK2cucVaEHVScq8qDaE_lpNHgFdd29UwSKsEB3JDogemrCbTlGk9M_S

X

相關文章
相關標籤/搜索