我也不知道怎麼敘述了,調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牛肯定研究的很透徹,而我只停留在跳過的水平上。 |
Themida通用Patch黑名單的方法[轉]
發表於:2008年9月29日 21時51分38秒閱讀(10)評論(0) 舉報本文鏈接:[url]http://user.qzone.qq.com/1587372/blog/1222696298[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.