首页
社区
课程
招聘
单机VT调试器和双机VT调试器的技术比较与现实选择
发表于: 2009-8-12 14:30 68397

单机VT调试器和双机VT调试器的技术比较与现实选择

2009-8-12 14:30
68397
通过这段时间与诸多朋友的沟通与交流,发现许多人对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直播授课

收藏
免费 0
支持
分享
最新回复 (127)
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
2
其实我对什么VT调试器不想多说什么,但看到你说“softice代码写的很糟糕”,我真的不知道要说什么了。一个连ilk文件和opt文件都能打包到安装包中,将几十K的文件包装成几M的文件,将别人的文件嵌套来嵌套去,甚至发行的是调试版的程序的所谓“程序员”来说这些话,我真的无语了。
2009-8-12 14:58
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
3
留名.123456~~
2009-8-12 15:09
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
4
加密解密,调试反调试,没有啥前途,做为爱好玩玩没什么,象楼主兴师动众要想搞XX,呵呵,路过。
2009-8-12 15:18
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我晕 汇编什么时候是羞涩难懂的代表了
2009-8-12 15:20
0
雪    币: 21
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主确实说的不错,目前我们用别人的打包工具做的安装包,虽然自己做不难,但是实在人手不够,以后定要改的。安装包里有些文件是多余了,但是似乎你并没有看出什么名堂,这里就不说明了。或许你真想破解的时候就会明白。至于说别人的文件那就you些不妥了。程序完全是我们自己写的代码毋庸置疑的。如果你真的认真分析过softice的代码你就会明白他的汇编是怎么写的,至少比我们自己写的要繁复的多。有兴趣可以比较一下我们的代码。至于不懂行的人来说,那就无语了。
2009-8-12 15:32
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
感觉楼主有点太过于自信了,是骡子是马拉出来遛遛嘛
2009-8-12 15:33
0
雪    币: 21
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是的,要么把我们的破解了,要么直接做逆向吧!没有做过自然不知道了。就算是溜溜吧。不过几兆可比几十K累多了。
2009-8-12 15:56
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
我感觉楼主所说的“ 接着与anti无休止的耗下去。” , 才是进步的关键(几乎都是逆向者所愿意面对的)
没有了这一步,你咋知道别人有什么新想法呢?
2009-8-12 16:05
0
雪    币: 350
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
去年忙活过一阵子,最后没声了.怎么今年又来了.
2009-8-12 16:28
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
11
捆绑的softice模块也太多了吧
看来楼主的软件想完全脱离softice是个遥远的梦想
2009-8-12 16:32
0
雪    币: 647
活跃值: (564)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
windbg对一般开发人员足够,可能用windbg破解的少点,但不是一般只有高手才能驾驭,用windbg的人估计都没时间来看雪,再接近硬件都有相应的解决方案,有jtag 有逻辑分析仪 协议分析仪

对于破解目前OD和IDA足够 大部分人只是玩玩 以此谋生的很少, 如果vt调试器的卖点是anti-anti,对这个很感冒的人群很少
2009-8-12 17:02
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
13
其实anti-anti是这样一个东西,你放出来了,那么就必须无休止地耗下去;如果不放出来,在手上可以偷着乐
2009-8-12 17:41
0
雪    币: 622
活跃值: (65)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
14
支持了,中国第一个,无论如何都很牛啊。
2009-8-12 20:54
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
15
很中肯~~~
2009-8-12 22:45
0
雪    币: 230
活跃值: (149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
如果只是针对反调试的话,我觉得没任何意义。

对于高手来说,反调试只是在拖延时间而已。

调试器的意义是什么? 钻到VT里只是为了反调试?会有谁愿意花钱呢? 况且对付反调试的手段多了,非得VT不成? 保不准以后NP也会进VT来反反调试,呵呵。

退一步说,如果反调试不是问题的话,LZ的这个调试器还有啥价值?

脱离了SoftICE,开发自己的GUI/Shell,很简单吗?光工作量就能累死人~

别老说SoftICE代码不好,你写个好的给大家看看比你光说不练更有说服力。
2009-8-13 10:42
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主反驳别人的绝招就是 “你不懂行”~~  不管高手低手 不需要任何讨论 直接将敌人打趴下 无敌 ~~
2009-8-13 12:04
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
静观其变,期待!
2009-8-13 12:20
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
19
不管别人怎么说,我支持你!!!因为我觉得这个原创的东西实在是太少了,什么IDA OD啊?怎么都是老外的?国人用工具,自己不做工具,反而要打击做工具的,说你这个还不如用现成的呢~真是废话,一看就是民工,他们从来没有写过超过1W行的代码,自然体会不到写一个工具的艰辛和技术含量,当然用main写个几百行的代码,是个民工都会,拿着vs2010,多爽啊~
2009-8-13 19:23
0
雪    币: 118
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
楼上那么强,用你写过上W代码的能力,写个超过IDA给我们看看
2009-8-13 21:59
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
调试器本身是用来解决BUG的
2009-8-13 22:48
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
22
不好意思,我只会用vs2003写main,也就是民工一个,你说的IDA我听都没有听说过
2009-8-13 23:39
0
雪    币: 340
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
专业接各种语言HelloWorld外包定制破解逆向.......
2009-8-13 23:50
0
雪    币: 340
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我觉得能写出商业用的调试器很了不起了,softice用汇编..... 汇编维护性不强吧.......
2009-8-13 23:52
0
雪    币: 21
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
我们拿永恒之塔做为例子来阐述DTdebug在anti反调试领域中史无前例的强大,为各位因被各种反调试程序弄的痛苦不堪的“患者”带来了福音,好了废话不说,准备好了let’s go…..
        首先,不用说当然是要连接到目标主机如下图所示,点下箭头所指那个小图标会出现如图显示的对话框,我们点make active按钮

然后我们就可以看到连接后目标机器的的一些相关信息,如下图所示,其中红框中部分为目标机的进程信息

现在我们就可以在目标机器上运行我们所要调试的程序啦,这里我运行永恒之塔进入这是我们看下host机的显示,如下图:

看到了么,np的主进程gamemon.Des还有游戏的主进程aion.bin这两个进程可是np的重点对象哦,正常情况当然是不会让你看到的啦。
        接下来我们要做什么呢,为了调试方便我们要对一些常用的API下断,现在就让我告诉大家怎么操作吧,双击我们所要调试的对象aion.bin进程

看到了吧绿色箭头指向了aion.bin这表示进入了aion.bin的进程空间,然后双击箭头指向的区域会出现如下图所示的对话框

接下来点红框所指的按钮,这里我们特别强调下,最好我们的host和target操作系统版本完全一样这要我们调试起来会方便一些,要是host和target操作系统版本不一样则需要将target机器的system32目录复制到host机的任意目录下,如e:\system32点下那个按钮会出现个浏览对话框在那里找到选择我们所需要下断的API所在dll 一般情况下我们只需要添加kerndel32.dll、user32.dll、ws2_32.dll就基本能满足我们的需要了,如有其他需要可以自己添加,(目录是系统system32目录,版本不同者为上述target机器system32目录在本机的保存目录)。添加完成后如下图:

直接点close,好了到现在为止我们已经做好了所有的准备工作,现在给send下个断点,在命令栏敲入bpx send然后回车,如下图:

图中箭头所指为命令栏,框中所指表示设置断点成功,哈哈现在我们在游戏账号密码那里乱输入

然后点确定,哎奇怪怎么没有断下呢?我们再来看看输入命令u send

从图中我们可以看到在我的机器上send的地址为71a24c27,根据操作系统版本不同该值会有所不同,我们下断点 bpx 71a24c33也就是 send+c的地址,如后我们同上操作胡乱输入账号密码点确定,发现什么了呢?哈哈我们断住了!!!如下图:

接下来f8几下看看,是不是很爽呢?那刚才bpx send为啥没有断住而bpx send+c断下了呢,是因为np会不断回填send入口点的代码造成我们的断点失效。从现在开始我们就可以随意的调试np保护的进程了,np在我们面前是不是形同虚设了呢?
        好了就先说到这里吧,至于调试器的一些常用命令大家可以参照softice 使用手册,应为目前为止DTdebug完全兼容softice的所有命令。
上传的附件:
  • 1.JPG (152.90kb,546次下载)
  • 2.JPG (164.39kb,541次下载)
  • 3.JPG (163.48kb,537次下载)
  • 4.JPG (167.25kb,542次下载)
  • 5.JPG (186.57kb,536次下载)
  • 6.JPG (187.91kb,536次下载)
  • 7.JPG (177.70kb,528次下载)
  • 8.JPG (77.84kb,528次下载)
  • 9.JPG (175.34kb,533次下载)
  • 10.JPG (213.92kb,528次下载)
2009-8-15 20:00
0
游客
登录 | 注册 方可回帖
返回
//