Themida通用Patch黑名单的方法[转]

发表于:2008年9月29日 21时51分38秒来源:阅读(10)评论(0) 举报 本文链接:[url]http://user.qzone.qq.com/1587372/blog/1222696298[/url]
 
Themida通用Patch黑名单的方法[转]
高深的技术,经验和资料,我啥都没有,只是就事论事,分享一下我的方法。

我也不知道怎么叙述了,调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)