通过这段时间与诸多朋友的沟通与交流,发现许多人对VT技术、单机调试器、双机调试器存在许多认识上的不足和误区。下面我们将做详细的说明:
1、目前有哪些软件调试器及其特点?
IDA:静态代码分析工具。IDA做得实在太好了,完全可以满足我们目前的功能需求,不存在什么明显的缺点。可以说现在和可见的将来都不会出现竞争者。
OllyDbg:
OD是纯绿色的3环单机动态调试器。有三个优点:
一、因为是3环,所以避免了诸多涉及驱动的兼容性和稳定性问题。也可以这么说,任何一款3环调试器都可以做到纯绿色,并不是OD有什么过人之处。
二、OD采用纯界面调试,无需记住和使用近百条的调试命令和繁杂的参数,非常容易上手。这正是大家非常推崇它的重要原因。尤其是新手,因为不习惯复杂的命令行调试,记不住命令和参数,往往坚持不下去,中途放弃softice或Windbg。
三、开放的插件接口。OD对使用者是免费的,并且开放了插件接口。这个策略的选择正式OD的生命力所在。我们仔细看了OD的诸多版本和代码。OD代码分析写的并不是很好,比IDA差的多。
如果网上搜索一下OD的版本和插件多如牛毛。为什么出现这样情况。这与OD对付不了anti有关,所以大家就做了大量的插件用来绕过anti,这或许可以解决一时,但是很快就会与anti陷入无休止的消耗之中。作为anti一方,从来都是有足够的信心干掉OD。毕竟OD是3环的,他用的是CreateProcess以Debug方式启动进程,或DebugActiveProcess Attch 进程,故有天生的被检查到的缺陷。
结论:如果你想对付anti,并且有足够的精力,那就玩玩插件,接着与anti无休止的耗下去。
Softice:
softice是0环动态调试器,分单机版和双机版,是我们最熟悉的了。毕竟我们是站在他的基础上一步步往下做的。softice代码写的很糟糕,用了大量的汇编,晦涩难懂。在被收购之后,当最初的开发者离开后难以为继,softice倒下很可能与此有关。尽管他们做了大量的工作,也很努力,但是他们一定非常疲惫。无休止的修修补补,生涩的汇编,频繁的兼容性问题最终难以为继。softice虽然倒下了,但是给我们留下了宝贵的遗产,为什么不充分利用呢?我们抛弃了没有希望的softice单机方案,选择softice双机方案,并彻底改造他。目前target端已经完全是我们自己的代码了,当host端完成的时候,softice的双机方案将获得新生。因为我们有了强大的VT引擎。
Windbg:
Windbg是最好的0环动态调试器-除了不能用来对付anti。微软这样的大公司应该是不会赞成逆向工程的欣欣向荣。Windbg比softice还要复杂,更难操作,一般只有高手才能驾驭。除了怕微软起诉我们,连接操作复杂也是我们放弃Windbg方案的直接原因。Windbg单机0环只能看代码和数据,不能调试。因为它不需要对付anti,靠Windows内核提供的内核调试器引擎实现的,所以很稳定。
2、我们为什么要首先选择双机调试?
这答案很简单,因为我们想彻底解决anti。所以我们必须采用0环,同时还要解决兼容问题。答案只能是双机。如果采用单机会怎样呢?单机有两种选择:
一是0环,加上VT引擎后,功能会很强大,这一点毋庸置疑。但是调试0环内核代码时需要0环界面,牵扯到显卡、键盘、鼠标等兼容性问题,怎样解决诸多的、无休止的兼容问题呢?频繁蓝屏谁愿意忍受呢?应该记住softice是怎么死的!所以我们放弃单机0环界面绝对是明智的选择。
二是单机3环,做的和OD一样绿色、友好。如果不用对付anti,一切都会很好。如果是这样那就请用OD,免费的。如果用来对付anti,单机3环如果挂上我们强大的VT引擎,会很好的解决这些问题。
结论:你们可以期待,但是目前还是未知数,我们需要大量的工作,一年内不一定会发布,即使发布还会有一个比较漫长的改进期。相信即使我们发布单机VT调试器,至少前几版还是会有很多不完善的地方,无法让大家满意。
3、单机VT调试器、双机VT调试器正式版、双机VT调试器专业版有什么区别?
单机VT调试器:3环动态VT调试器。只能3环应用层调试,可以反特征码提取,可以过行为检测。
双机VT调试器正式版:0环双机动态VT调试。可以过行为检测。未被提取特征码之前可以放心用。缺点是少数隐藏进程看不到。一年维护期免费更新,不随时提供重新编译版本。
双机VT调试器专业版:0环双机动态VT调试。可以反特征码提取,可以过行为检测,尚未发现看不到的隐藏进程。三年维护期免费更新,可以随时提供重新编译版本。
4、anti的实现有哪些方法?
目前anti程序只有两种方法:一是特征码提取;而是行为检测;只要避开这些就可以过了。
5、VT技术说明
虽然VT技术已经出现很多年了,但是目前世界上还没有用VT技术做调试器的。我们算是第一个了。AMD3000+以上(不包括3000+)都支持VT,Intel 多数CPU支持VT,但同时需要BIOS最新版本支持才能打开VT,请注意刷新BIOS。
6、双机VT调试器通讯端口的选择问题
目前我们的双机VT调试器支持串口、1394口、和8139D网口,其中串口和8139D网口非常稳定,1394口不太稳定,1394会在以后的版本中改进。之所以选择8139D网口是因为网口标准较多,而目前市面上最多的PCI网卡就是8139D了,而且也最便宜。至于其他网口标准我们会在以后的版本中陆续添加。推荐使用8139D网口连接,速度较快,非常稳定。
总结:根据目前大家的反馈和国内的现状,我们最终决定还是按原来的计划重点做好双机VT调试器,完成host端。希望能在国外顺利推广双机VT调试器。至于单机VT调试器计划往后推迟!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课