首页
社区
课程
招聘
版本更新OllyDbg跟踪记录插件prince's TracKV1.2
发表于: 2005-2-27 22:14 8913

版本更新OllyDbg跟踪记录插件prince's TracKV1.2

2005-2-27 22:14
8913
        OllyDbg跟踪记录插件 -- prince's TracKid V1.20(升级)  测试发布

        按照Luocong大侠的指点,使用OD自己的API获取中断地址EIP解决了上个版本地址错误的问题(仅在XP SP2下测试通过),看来OD自己对异常地址进行了处理。多谢Luocong大侠。暂时还没有在98和2K系统下测试,希望得到朋友们在这两个平台下的结果反馈,谢谢。
       
        修整文件记录F9分隔行没有回车换行的BUG。

        任何问题请致:Cracker_prince@163.com, QQ: 812937

                                                                                 prince 2005.03.01

---------------------------------------------------------------------------------------------------------------------------
        OllyDbg跟踪记录插件 -- prince's TracKid V1.10(beta) 测试发布

        相信广大小菜们都有这样的调试经验:F8, F8, F7, F8, 几步走来,突然程序跟飞了!又要重新来,麻烦。考虑到这种情况,利用空余写了记录跟踪过程的小插件,希望在调试的时候帮上点小忙。

        原理:调试时对F4, F7, F8, F9进行键盘监视,每次利用快捷键调试时都会被TracKid记录到文件中,以备事后查看。

        使用方法:加载程序,点击插件->Start Tracking,然后即可进行正常跟踪。结束跟踪点击插件->End Tracking。注意,由于使用键盘监视方式,所以只能使用快捷键F4, F7, F8, F9进行跟踪才能进行记录。TracKid会在OllyDbg.exe目录下新建TracKid Log文件夹,里面存放程序的调试记录,调试完可以到TracKid目录下查看相应的文件。

        存在的问题:TracKid通过GetThreadContext函数获取被调试程序的线程环境CONTEXT结构,该结构中的Eip存放的就是异常发生的地址。在98系统下CONTEXT结构的EIP值为发生异常地址+1,可是在2000下我得到的结果不全是这样,例如,某程序调试记录:

0041f3f4 -- F8             ---> 在OD中为0041f3f3
0041f3f5 -- F8
0041f3f7 -- F8
0041f40d -- F8
0041f40e -- F8
0041f415 -- F8             ---> 在OD中为0041f414
0041f416 -- F8
0041f421 -- F8
0041f424 -- F8
0041f42c -- F8
0041f42f -- F8
0041f435 -- F8
0041f436 -- F8
77f97b1d -- F9
-------------------------

        所以如果大家在记录中发现错误的地址,可以将该地址-1之后再下断点即可。
        小弟不才,不知道该如何解决这个问题,烦恼之极,如有哪位大侠知道,还请不吝赐教,多谢。

        声明:由于采用了键盘监视技术,所以您的杀毒软件或类似安全工具可能会报警说OllyDbg正在监视键盘输入,本人没有在插件中放置任何恶意代码,如有疑问,请勿使用。

        任何问题可致:Cracker_prince@163.com,    QQ: 812937

                                                                 prince 2005.02.27

升级文件V1.20(上个版本请版主删除):

附件:TracKid.rar

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (22)
雪    币: 244
活跃值: (265)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
我来做沙发,顶顶!
2005-2-27 22:20
0
雪    币: 303
活跃值: (461)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我来做板凳,顶顶!
2005-2-27 22:23
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
4
估计是OD插入了0xCC造成的(这个字节在OD的界面中是看不到的)。你可以使用OD自身提供的API来获得线程的Context,那样做其实也更方便。
2005-2-27 22:27
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
5
谢谢分享,辛苦
2005-2-27 22:27
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
6
最初由 luocong 发布
估计是OD插入了0xCC造成的(这个字节在OD的界面中是看不到的)。你可以使用OD自身提供的API来获得线程的Context,那样做其实也更方便。


OD的API手册看得我头都晕了,没找到能够得到Context结构的API,能告诉我是哪个API吗?
2005-2-27 22:30
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
支持你!!!!!
2005-2-27 22:31
0
雪    币: 1593
活跃值: (766)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
8
用Findthread()获得一个t_thread的结构,结构里面有个reg的成员,成员里面有个ip变量。

t_thread *thread = Findthread(Getcputhreadid());
// thread->reg.ip

还有一种方法是在ODBG_Pausedex()这个回调函数里面读取第三个参数t_reg的值。另外还有几个回调函数都有这个t_reg的变量,试试就明白了。

BTW,开源吧,这么简单的东西。
2005-2-27 22:39
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
9
多谢解答,我试试。
我是准备开源的,但不是现在,因为本来东西就简单,而且又有BUG,现在开源启不是让大家笑掉大牙?所以我要改进好之后才开源。
BTW,我的代码比你的差远了,呵呵,不好意思啊~
2005-2-27 22:44
0
雪    币: 182
活跃值: (226)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
被我看到了
支持一下
2005-2-27 23:56
0
雪    币: 206
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
强烈支持一下
2005-2-28 00:02
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
12
关注一下。。。。。。。。
2005-2-28 00:14
0
雪    币: 93944
活跃值: (200219)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
13
排版好一点,我只提个建议!
2005-2-28 00:21
0
雪    币: 154
活跃值: (216)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
好贴如美妇,我顶
2005-2-28 08:21
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
15
留意中。。。
2005-2-28 10:04
0
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持原创,而且造福大家!
2005-2-28 10:13
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
17
支持支持~很实用的插件~~~
2005-2-28 15:35
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
18
最初由 cyclotron 发布
支持支持~很实用的插件~~~


多谢支持。

BTW,能帮忙解释这个异常地址的问题吗?
2005-2-28 16:51
0
雪    币: 265
活跃值: (430)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
19
支持并关注着!
2005-2-28 17:22
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
20
流行时代Love8909关于OD的F8的分析:
    Od对F8的处理用了3种机制。
1.如果是F8过除call和rep ****以外的指令。是用设置TF实现的。
2.如果是过CALL和rep ****,又有2种处理。
  <1>.先检测dr0-dr3是否设置满了。如果没满。就用drx来设置断点
  <2>.如果4个drx都设置了。那么就放0CCh

再研究看看...
2005-3-1 09:07
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
光一个记录还不行,应该还要能调用记录文件,直接定位在出错点,让OD重新装载程序自动开始进入最后一个出错点并且下断才有用处。

其实这个功能,OD的跟踪记录已经做的很完善了,如果能把跟踪记录像IDA一样能够结构化,我看这是史上最有价值的功能。
2005-3-1 12:02
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
22
鸡蛋壳说的有道理,可以查看并设置断点功能确实会更方便,如果有时间就加上...
2005-3-1 17:16
0
雪    币: 416
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
等着
2005-3-1 17:45
0
游客
登录 | 注册 方可回帖
返回
//