首页
社区
课程
招聘
[求助]如何在附加数据中下断点?
发表于: 2008-10-14 22:08 4054

[求助]如何在附加数据中下断点?

2008-10-14 22:08
4054
各位好,我在跟一个程序的时候,发现字串参考内容全部都在附加数据中,在OD中无法直接找到。

请问这样的情况下,应该如何在有用的数据上下断点呢?非常感谢!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
附加数据只是外部程序补充,一般没有执行代码!最多是一些资源和字符串!

在程序内找到对那些资源的调用代码。
2008-10-14 23:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
按楼上朋友的说法,应该去找调用附加字串的代码,我去试试看,感谢!
2008-10-15 13:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是我在附加数据段中找到的有用信息,请问各位朋友下一步该如何处理呢??
上传的附件:
2008-10-23 20:23
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
不知道你从哪里得出结论这里有附加数据段。

OD已经明确指出是.data节。

还有,从数据入手分析是一个不错的主意,但还是要找到访问数据的代码。

你试过OD的超级字符串参考插件了吗??一般程序没有加密的话,用这个插件就可以找到使用字符串的代码位置。

最后的办法,就是实在没有其它办法的话,可以在数据上下数据断点,推荐使用硬件断点。在中断之后,再从堆栈中寻找函数的调用路径,或者CTRL + F9多执行几次,直到返回到所需要的代码位置。
至于哪里是需要注意的位置,这就靠你多多积累了。
2008-10-24 02:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
之前我已经将原程序脱壳并将附加数据添加到程序末尾,现在程序能够正常运行了。

OD载入后在字串搜索中找不到任何有用信息,用ultraedit可以搜索到诸如“注册不成功”之类的信息。

目前尝试在数据上下断点,一直没有成功。发这个帖的目的是想看看各位高手有没有成形的好办法,这样就不用走太多弯路了。
2008-10-24 11:42
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
7
脱壳了,这样啊,我误解了。

数据断点只有在数据被访问时会生效。如果你下断点的数据在程序的执行路径中要就不去访问,例如有一条if语句总是假而跳过了访问被下断点的数据,那么这个断点是不会生效的。

一般寻找关键点的方法是使用api断点,消息断点,以及“F12大法”(我起的名字),或者使用专门的分析软件如Dede,VB decompiler等找到相应的函数地址,然后去那里直接下断分析。

直接从数据入手,一般是没有办法的办法。在内存中或文件中暴力搜索数据,一般是字串,然后下内存断点,这样的方法都是没办法的办法
因为内存访问不具有确定性,你无法确定所找到的数据是在什么地方访问的,很多情况下内存断点会断在系统DLL的领空,就是因为程序有可能将变量或指针作为参数来调用系统API,这样内存断点常常会更麻烦而不是更简单。
还有一些程序,采用异步方式访问数据,比如判断注册码错误之后,将一个字串的指针当做参数,发消息给另外的线程,或直接创建新的线程,由另外的线程来显示消息,所以你断下来后,只看到显示消息的代码,而判断正确与否的代码离着十万八千里。

其实多动动脑子,多数程序都可以用API断点来寻找关键点的。
2008-10-24 13:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
其实多动动脑子,多数程序都可以用API断点来寻找关键点的。

为这句话而苦恼,
要不动脑子,可能不会来这里,这要发贴问的,
更主要的问题是脑子不知从何动起
2008-10-24 14:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
说的很对啊,回去再去捣鼓捣鼓吧。。
2008-10-24 16:20
0
游客
登录 | 注册 方可回帖
返回
//