如何发挥软件保护极限——精通TMD's VM宏(一蓑烟雨 )
TMD的脚本出来之后,大家一片哗然,有人说TMD倒下了,有人说现在没有壳用了...其实,很多人在抱怨的同时其实没有认识到TMD的优势所在,在我看来,TMD的优点(相对于其他壳或安全保护软件)是很突出很强大的,跟别的安全产品比具有绝对压倒性优势.反调试也许并不如execrypt或者EPE,虚拟机的易用性和强度也许不如VMP,但是综合来看,没有一个壳可以像TMD保护这么自由和多元.
这篇帖子我不打算把TMD大大小小的功能都介绍一遍,只想通过实例的方式简单谈一下TMD's VM宏的用法,大家在软件中使用后安全性一定会大大提高,而不是把保护单单寄托在一个壳中,变成 脱壳=破解 的结果.
适用范围:TMD的VM宏可以用在EXE和DLL文件中,可以用在C . Delphi等"本地语言"中,不能用在.net 和 PCode语言中.
简介 :VM宏是TMD中最强的虚拟机保护,安全引擎会在每次保护的时候生成唯一的VM进行保护,所以对逆向尤其起作用,理论上讲只有TMD的安全引擎才能解析代码.缺点就是会影响性能,这个缺点我们要分两方面看,其实影响软件产品性能的最主要因素应该是作者的code能力.诸如大数值计算、处理数据等的代码就不要进行VM宏保护了,适用于敏感算法、方法(函数)等进行保护。
宏的实现(以delphi为例):
在需要保护的代码中插入
宏开始:
asm DB $EB, $10, $57, $4c, $20, $20, $0C, $00, $00, $00, $00, XXXX, $00, $00, $57, $4c, $20, $20 end;
标记为“XXXX”的是VM的强度等级,填写数值即可实现,比如
asm DB $EB, $10, $57, $4c, $20, $20, $0C, $00, $00, $00, $00, 15, $00, $00, $57, $4c, $20, $20 end; //强度为15等级
asm DB $EB, $10, $57, $4c, $20, $20, $0C, $00, $00, $00, $00, 100, $00, $00, $57, $4c, $20, $20 end;//强度为100等级
标记强度的数值很好找,其他数字都带有$符号,设置强度等级的数值前没有$符号
宏结束:
asm DB $EB, $10, $57, $4c, $20, $20, $0D, $00, $00, $00, $00, $00, $00, $00, $57, $4c, $20, $20 end;
VM宏设置好后编译源代码,然后用TMD进行保护,可以清楚的看到VM宏被TMD识别出来了。保护程序后就实现对敏感代码的VM保护了,这跟只用TMD加壳安全性大大的提高了,逆向高手看到恐怕都非常头疼了。
附件是实现VM宏的例子,一个是没有加壳的一个是加壳过的,大家可以下载比较分析一下。例子中保护选项能关的都关了,只留下必须的,虚拟机设置的也是最小选项,大家可以比较加壳前程序脱壳后分析一下,看看保护强度到底有多大(test.bak为源程序,把后缀改成exe就可以了)。
转自一蓑烟雨
[ 本帖最后由 杨家将 于 2007-11-7 23:21 编辑 ] 走过,看的似懂非懂,看来还要加强自身的修行。。 学习中,谢谢楼主 收藏中,好东西
页:
[1]