首页
社区
课程
招聘
关于开发新型调试器
发表于: 2005-4-12 10:27 37076

关于开发新型调试器

2005-4-12 10:27
37076
前几天在『加壳与脱壳』区有人发布了一款新型的调试器.虽然调试器功能有限但是原理却与现在的调试器都不同,特别适合破解用.我看到作者愿意公开源代码,就和作者联系了,现在作者支持这个项目,于是我决定成立一个开发新型调试器的项目,作者的那个调试器是用BCB开发的,最后我和作者商量了一下决定把代码转成VC,同时把我那个PE文件分析器的开源项目用VC从新开发,合并到这个新型调试器里面.然后组织破解界的牛人一起来开发这个项目.并借此机会互相学习,想看看大家的意见.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (47)
雪    币: 266
活跃值: (191)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
大家都在开发调试器!!
支持一下!!
2005-4-12 10:48
0
雪    币: 3246
活跃值: (374)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
3
软件调试器不外乎内核级的和ring3级的(也许还有二者结合型的),你说的那个是什么类型的?最后准备做成具备什么特性的?现在riijj他们在搞一个ring 3的,可以考虑合并一起搞。

建议不如先讨论出一个产品特性列表出来吧,具体每个特性怎么实现应该是后话。
2005-4-12 10:50
0
雪    币: 47147
活跃值: (20475)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
不管开发什么调试器都支持,希望能将这个论坛开发版块带活
2005-4-12 11:20
0
雪    币: 266
活跃值: (191)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
bcb我觉得没什么不好的,为甚么要转到vc呢?
2005-4-12 11:24
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
6
最初由 blowfish 发布
软件调试器不外乎内核级的和ring3级的(也许还有二者结合型的),你说的那个是什么类型的?最后准备做成具备什么特性的?现在riijj他们在搞一个ring 3的,可以考虑合并一起搞。

建议不如先讨论出一个产品特性列表出来吧,具体每个特性怎么实现应该是后话。

这个我会尽快,riijj的项目我知道,我也考虑过合并,但是最后我发现这个调试器类型和riijj的大有不同.所以就单独成立一个项目了.
2005-4-12 12:07
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
7
最初由 kanxue 发布
不管开发什么调试器都支持,希望能将这个论坛开发版块带活

我也很希望这个版块活起来,正在不断努力ing...
2005-4-12 12:08
0
雪    币: 47147
活跃值: (20475)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
最初由 netsowell 发布

这个我会尽快,riijj的项目我知道,我也考虑过合并,但是最后我发现这个调试器类型和riijj的大有不同.所以就单独成立一个项目了.


感觉大家还是先坐下来,将框架方案定下来。方案比编程更重要。
2005-4-12 12:08
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
9
最初由 kanxue 发布


感觉大家还是先坐下来,将框架方案定下来。方案比编程更重要。

恩,确实,这个我尽快拟定,然后再贴出来大家讨论.
2005-4-12 12:09
0
雪    币: 1238
活跃值: (808)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
顶一下。  好好干。  中国人能行的。。。
2005-4-12 12:44
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
11
这里又扬起了新一年的雪,我会继续看雪.
2005-4-12 13:03
0
雪    币: 240
活跃值: (78)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
summerrose的调试器有一个idea相当不错,被调试程序执行到关键代码段时,每执行完一条指令,调试器就把这条指令造成的寄存器和内存的变化记录下来,为后期的分析提供依据。按照这个思路,调试器只需要详细记录每条指令执行前后寄存器和内存的变化,以一定的格式写到一个文本文件里面,之后的分析工作就可以完全基于这个文本文件进行。很多动态跟踪和静态分析中的难题,如指令回溯(back trace),去除花指令干扰,反反调试等都可以轻松实现。
换言之,这种调试的概念相当于用一个“摄像机”把被调试程序的一举一动都“录制”下来,之后的分析工作只要基于“录像”就足够了。扯点题外话,这有点像60-70年代乒乓球技术朝着畸形方向发展,乒坛高手都苦练各种隐蔽刁钻的发球姿势,后来高速摄像机的出现,这种战术才逐渐瓦解。

但是这个调试器仍然有一个致命的缺陷,虽然没有使用int3,int1等,但指令的单步跟踪仍然依靠修改被调试代码本身来完成,这很容易被恶意的代码检测到并予以反制。作为一个调试器,最理想的境界就是使被调试程序如同在没有调试器存在时一样的运行。要做到这一点,必须不能修改被调试代码,也不能依赖调试寄存器,更不能依赖单步中断。如果被调试的是操作系统核心代码,调试器不能向被调试目标的文件系统中写数据,一切数据必须另辟一套独立的途径保存......
2005-4-12 14:10
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
13
最初由 swift 发布
summerrose的调试器有一个idea相当不错,被调试程序执行到关键代码段时,每执行完一条指令,调试器就把这条指令造成的寄存器和内存的变化记录下来,为后期的分析提供依据。按照这个思路,调试器只需要详细记录每条指令执行前后寄存器和内存的变化,以一定的格式写到一个文本文件里面,之后的分析工作就可以完全基于这个文本文件进行。很多动态跟踪和静态分析中的难题,如指令回溯(back trace),去除花指令干扰,反反调试等都可以轻松实现。



OD 的 trace也做类似的工作,但是没有纪录缓存器

未来开发的新 OD 版本听说会对 trace 的能力加强

2005-4-12 15:05
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
每种调试器都有它的优点,也有它的缺点,就看你对它熟悉不熟悉,怎么用了!
要是什么都不改,就能调试,除非自己写一个操作系统,这种可能性不大。
源代码我已经放到网上,欢迎大家下载,有什么问题请与我联系,我的MSN是:wang_karl@yahoo.com.cn
2005-4-12 20:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我也觉得kanxue斑竹说的不错
还是先敲一个具体点的方案出来
建议新开一个置顶帖子
先在论坛中征求一下各位的意见
比如说调试器该具有一点什么样的特色
有什么功能
分析一下现存调试器的主要优点
已经存在那些不足
新的调试器该怎么来改进
怎么来完善
既然是做的话肯定也希望做的出色了
然后让论坛的兄弟发表一下自己的看法
也就是说做下市场分析了
其实技术细节可以慢慢讨论
关键的是前期的准备做充足
这样将来具体开发的时候也有底
而不用缝缝补补
到时候就搞的大家都没信心了
2005-4-12 20:20
0
雪    币: 82
活跃值: (301)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个帖子真是群牛共舞
真的是希望可以开发出一个好的调试器
声援一下
2005-4-12 23:20
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
17
我已经加入了riijj的开源项目,这里恐怕帮不上忙了,不过还是要支持,关注中,希望牛人们都来一起打造看雪论坛第1利器。
2005-4-12 23:33
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
18
最初由 swift 发布
summerrose的调试器有一个idea相当不错,被调试程序执行到关键代码段时,每执行完一条指令,调试器就把这条指令造成的寄存器和内存的变化记录下来,为后期的分析提供依据。按照这个思路,调试器只需要详细记录每条指令执行前后寄存器和内存的变化,以一定的格式写到一个文本文件里面,之后的分析工作就可以完全基于这个文本文件进行。很多动态跟踪和静态分析中的难题,如指令回溯(back trace),去除花指令干扰,反反调试等都可以轻松实现。
换言之,这种调试的概念相当于用一个“摄像机”把被调试程序的一举一动都“录制”下来,之后的分析工作只要基于“录像”就足够了。......

呵呵,原来,我无意中实现过一次,记录了想要的寄存器值到文件,即使不中断但是确实要修改指令啊,对于有自校验防范(包括内存补丁)的需要处理一下了。这个主意很好,不过是否需要机器很高才行吧,以一定的格式写到一个文本文件里面,这个文件估计会很大的。
2005-4-13 12:25
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
19
最初由 dlk0222 发布
我也觉得kanxue斑竹说的不错
还是先敲一个具体点的方案出来
建议新开一个置顶帖子
先在论坛中征求一下各位的意见
比如说调试器该具有一点什么样的特色
........

这个会尽快弄的.这两天我这里老是停电.今天都是刚刚才送的.
2005-4-13 16:27
0
雪    币: 3703
活跃值: (4267)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
20
强烈支持。希望先出方案,然后分工。
2005-4-13 22:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我水平低,但我会关注的!
2005-4-23 20:38
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
22
偶觉得应该分两拔
一拔R3级的
一拔R0级的
等到时候再来个大合并
--------------
------------
2005-4-23 23:12
0
雪    币: 219
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
顶了...希望能是一款很好调试器
2005-5-3 12:40
0
雪    币: 242
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我都支持
不过水平低,帮不上忙了
我声援一下吧
2005-5-3 15:36
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
最初由 swift 发布
但是这个调试器仍然有一个致命的缺陷,虽然没有使用int3,int1等,但指令的单步跟踪仍然依靠修改被调试代码本身来完成,这很容易被恶意的代码检测到并予以反制。作为一个调试器,最理想的境界就是使被调试程序如同在没有调试器存在时一样的运行。要做到这一点,必须不能修改被调试代码,也不能依赖调试寄存器,更不能依赖单步中断。如果被调试的是操作系统核心代码,调试器不能向被调试目标的文件系统中写数据,一切数据必须另辟一套独立的途径保存......


如果是这样,只能通过虚拟机来实现了。完全用软件来模拟一个80x86的硬件环境
2005-6-11 22:31
0
游客
登录 | 注册 方可回帖
返回
//