Themida通用Patch黑名單的方法[轉]

發表於:2008年9月29日 21時51分38秒閱讀(10)評論(0) 舉報本文鏈接:[url]http://user.qzone.qq.com/1587372/blog/1222696298[/url]
  高深的技術,經驗和資料,我啥都沒有,只是就事論事,分享一下我的方法。

我也不知道怎麼敘述了,調VM沒什麼技術,就是費時,我給大家幾個簡單的招數,對付TMD單調的VM。

首先加載原版文件,到入口取消分析,下
he ZwCreateFile

F9直到文件名是"TMLicense.dat",然後再F9一次,應該是停在打開"Themida.exe"上,ALT+M,搜索KEY內的特徵,找到一塊內存,放着KEY的原始內容。

在原始內容的0x20-0x30範圍裏隨便找個字節下硬斷,這樣能保證搜到解碼信息片斷。

斷下來以後搜"Richard",可以找到解碼了的字符串,在字符串上下硬斷。

等斷下來再搜內存,應該能找到一個地方單獨放着"Richard",在"R"上下硬斷,直到名字全部解完。

在名字最後結尾處下斷,斷下來以後就接近關鍵判斷的VM了,我的方法是:

RUN TRACE,條件大範圍是 指令爲jmp esi,然後CTRL+F11

如果在寄存器或棧裏發現可疑字符串,在跟蹤條件里加上如下:
push dword ptr[eax]
push dword ptr[ebx]
push dword ptr[ecx]
push dword ptr[edx]
push dword ptr[edi]
push dword ptr[esp]
jmp esi
這樣基本上保證你不會錯過每出資源的獲取,並且每次CTRL+F11停下來,就是一個Handler完成,基本上相當於忽視VM單步運行。

這裏解釋一下條件:
027EE7A3 FF30          push dword ptr [eax]
027EE7A5 813424 DC7F7970 xor     dword ptr [esp], 70797FDC

這是常見的TMD VM裏取資源的方式,除了第二行運算符和常量不同外,格式基本是固定的。

當發現"admi"和"ree8"的時候,就很有可能是黑名單比較,這個時候注意常量的獲取,如果沒耐心算的話,可以改其中一個試試看,注意你想改的值必須是在VM數據段裏的。

等到2處都找到並改完,你應該就可以帶調試器運行主程序了。今天天氣很熱這個帖子裏有截圖,可以參考下。

想要做到文件patch,那就要在你改過的地方下硬斷,然後重起程序,看這個值在文件裏的位置,然後改相應地方就好了。

自效驗,由於比較的是checksum,而我們又正巧改了2處,所以可以用位對齊的方法平衡,根本不用去改文件末尾的值。

當然了,說的簡單,做起來難。

尤其是VM,shoooo牛肯定研究的很透徹,而我只停留在跳過的水平上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章