首页
社区
课程
招聘
请教OD中:ecx指向"abcdefghigklmn"这个字符串的条件断点如何下?
2006-2-24 10:15 16975

请教OD中:ecx指向"abcdefghigklmn"这个字符串的条件断点如何下?

2006-2-24 10:15
16975
收藏
点赞7
打赏
分享
最新回复 (22)
雪    币: 2506
活跃值: (995)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
CCDebuger 24 2006-2-24 10:25
2
0
ecx=="abcdefghigklmn"
雪    币: 239
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yyjpcx 2006-2-24 11:25
3
0
CCDebuger对OD用的很熟
雪    币: 302
活跃值: (410)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
Spring.W 10 2006-2-24 11:35
4
0
最初由 CCDebuger 发布
ecx=="abcdefghigklmn"


我想断:CreateFileA 条件是文件名字为 "abcdefghigklmn",我在CreateFileA上Shift-F4或Shift-F2设定条件,都不起作用。我用的不对?能否详细解说一下?谢谢!
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
zhaoocn 7 2006-2-24 15:02
5
0
用命令栏下吧
雪    币: 2506
活跃值: (995)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
CCDebuger 24 2006-2-24 15:41
6
0
最初由 Spring.W 发布
我想断:CreateFileA 条件是文件名字为 "abcdefghigklmn",我在CreateFileA上Shift-F4或Shift-F2设定条件,都不起作用。我用的不对?能否详细解说一下?谢谢!

不好意思,这几天太困,睡了一觉。如果是CreateFileA,你可以在命令行中这样下条件断点:
bp CreateFileA,[[STRING [esp+4]]]=="abcdefghigklmn"
若按 OllyDBG 中的帮助文档上说的,应该是
bp CreateFileA,[STRING [esp+4]]=="abcdefghigklmn"

bp CreateFileA,[[esp+4]]=="abcdefghigklmn"
但我测试过如果按 OD 帮助文档中所说的下条件断点的话,断不下来。原因尚不清楚,等有空再来测试看看。
雪    币: 222
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
koala 3 2006-2-24 17:02
7
0
又学一招
雪    币: 177
活跃值: (1866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xingbing 2006-2-25 09:46
8
0
CCDebuger 对OD研究的太透了。
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
W-94 2006-2-25 09:53
9
0
CCDebuger 对OD研究的太透了。
雪    币: 2506
活跃值: (995)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
CCDebuger 24 2006-2-25 11:28
10
0
昨天主要是赶着去医院看孩子,具体为什么这么设断没说明。今天白天回来睡觉前再来解释一下,对 Spring.W 兄来说应该是没必要,这里主要是想让新手了解一下:
首先我们看一下 CreateFileA 在 MSDN 中的解释:
HANDLE CreateFile(
  LPCTSTR lpFileName,          // pointer to name of the file
  DWORD dwDesiredAccess,       // access (read-write) mode
  DWORD dwShareMode,           // share mode
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
                               // pointer to security attributes
  DWORD dwCreationDisposition,  // how to create
  DWORD dwFlagsAndAttributes,  // file attributes
  HANDLE hTemplateFile         // handle to file with attributes to
                               // copy
);
从上面我们可以看出第一个参数就是文件名指针,也就是说这个参数中存放的就是文件名称的地址。在32位程序中调用这个函数时这个参数的堆栈地址就应该是esp+4(4×8=32),同理,下一个参数就应该是esp+8。其它类推,返回值是esp+0。我们现在要判断文件名,这里的文件名就是esp+4地址所指向的地址中的内容。取地址中的内容在OD中用双方括号来操作,如取esp+4中的内容就该写成这样:[esp+4]。现在我们取的[esp+4]中的内容还是个地址,所以要得到文件名则还要再取这个地址中的内容,就该这样:[[esp+4]]。而那个STRING前缀在OD中的解释是以零作为结尾的ASCII字符串。所以我们下条件断点时这样写:
bp CreateFileA,[STRING [esp+4]]=="abcdefghigklmn"
但却发现断不下来,写成这样:
bp CreateFileA,[[STRING [esp+4]]]=="abcdefghigklmn"
才能断下来,这里就应该是三层的地址了。为什么这样目前尚不清楚,等我以后有空写第六篇条件断点时我会再详细解释一下。
雪    币: 302
活跃值: (410)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
Spring.W 10 2006-2-25 20:12
11
0
刚刚回来,谢谢CCDebuger的回复!非常好用!
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
cyto 31 2006-2-25 20:51
12
0
解决了困惑多日的问题。
以前按F9按的快崩掉,现在又学了一招快捷方法。
谢谢。
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
hbqjxhw 16 2006-2-25 21:05
13
0
好用,支持CCDebuger
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ljy3282393 1 2006-2-25 22:30
14
0
最初由 koala 发布
又学一招
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 4 2006-2-25 23:27
15
0
哦,学习了,CCDebug几乎要成我的偶像了
解释问题十分细致,充分照顾新手
雪    币: 206
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
laofy 2006-2-26 00:21
16
0
bp CreateFileA,[[STRING [esp+4]]]=="abcdefghigklmn"
若按 OllyDBG 中的帮助文档上说的,应该是
bp CreateFileA,[STRING [esp+4]]=="abcdefghigklmn"

bp CreateFileA,[[esp+4]]=="abcdefghigklmn"

爽啊!
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yakly 2006-4-22 10:49
17
0
谢了.
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
inraining 2 2006-4-22 18:17
18
0
学习~TKS!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xuanqing 2006-4-23 21:16
19
0
OD在处理这些中括号的时候
好像是有些问题
在搞那些指针指来指去的时候
我就发现我的条件断点没用
后来有一招
可以先把你要用的条件表达式写成一个Watch
在那个Watch里可以检测一下对不对
不对就再加个[]试试
记得有一回我就加了一对[]才搞定
方法比较粗俗
但还算好用
加上用条件断的地方不多
也就没再细研究
写上来和大家分享
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
softKiller 2006-8-31 09:19
20
0
虽说这是个老贴,但是我也要强顶
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
softKiller 2006-8-31 09:55
21
0
不过按照方法做了还是不行,我想拦截程序对d:\test.jpg的调用,
下了这样一个命令bp CreateFileA,[[STRING [eax+4]]]=="d:\test.jpg"但是每次都被断下来,条件根本没起作用,后来又按照说明用了bp CreateFileA,[STRING [eax+4]]=="d:\test.jpg"还有这个bp CreateFileA,[[eax+4]]=="d:\test.jpg"好像条件根本没起作用.而且在命令行里符号"\"变成了钱币符号一样的东东.
雪    币: 31798
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2019-8-22 16:38
22
0
softKiller 不过按照方法做了还是不行,我想拦截程序对d:\test.jpg的调用, 下了这样一个命令bp CreateFileA,[[STRING [eax+4]]]=="d:\test.jpg&qu ...
明显少加一个\ 转义 
雪    币: 8267
活跃值: (4781)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
v0id_ 2019-8-24 11:48
23
0
ninebell 明显少加一个\ 转义
时隔十四年的回复
游客
登录 | 注册 方可回帖
返回