xiaomm250 发表于 2022-2-17 12:43

是否能对某一处函数调用时内部断点才停?

本帖最后由 xiaomm250 于 2022-2-17 12:45 编辑

假设在00538FBF行,调用一个函数为call 00000001,但是在程序的
00010000行也调用了函数call 00000001
00020000行也调用了函数call 00000001
00030000行也调用了函数call 00000001
总之很多行,都调用了这个函数,但是我是从00538FBF行进入函数内部的,然后在函数内部下了一个断点A,
我就希望从00538FBF进入函数时断点A停,从别的地方进入函数时断点A不停,能不能做到?


wslans 发表于 2022-2-17 13:01

那你直接关00538FBF处下断不就行了?

xiaomm250 发表于 2022-2-18 09:35

lies2014 发表于 2022-2-17 17:26
执行call之前会把返回地址A(call的下一行)压入堆栈地址B,从你需要的调用地址跟进去一次,当执行到需要 ...





执行call之前会把返回地址A(call的下一行)压入堆栈地址B
call的下一行是00684DA3,没在堆栈窗口看到这个数值呀。
堆栈窗口有这一行,
045BFE24   006856FFSE处理程序
但是这个00684DA3与006856FF相差了2396行呀
006856 FF - 00684 DA3=95C=2396行

xiaopengge 发表于 2022-2-17 13:19

条件断电啊

GJH588 发表于 2022-2-17 13:32

条件断点即可

xiaomm250 发表于 2022-2-17 13:47

GJH588 发表于 2022-2-17 13:32
条件断点即可

怎么个条件断点法????????

woflant 发表于 2022-2-17 14:27

在call段首下断,判断esp的值是否为调用地址

xiaomm250 发表于 2022-2-17 15:16

woflant 发表于 2022-2-17 14:27
在call段首下断,判断esp的值是否为调用地址

不是在断首下断点的

lies2014 发表于 2022-2-17 15:42

xiaomm250 发表于 2022-2-17 15:16
不是在断首下断点的

那就在断点处判断堆栈里的返回地址是否是调用地址

xiaomm250 发表于 2022-2-17 15:57

lies2014 发表于 2022-2-17 15:42
那就在断点处判断堆栈里的返回地址是否是调用地址

具体怎么操作,能举一个例子吗?

lies2014 发表于 2022-2-17 17:26

xiaomm250 发表于 2022-2-17 15:57
具体怎么操作,能举一个例子吗?

执行call之前会把返回地址A(call的下一行)压入堆栈地址B,从你需要的调用地址跟进去一次,当执行到需要下断点的位置时,用B减去当前esp得差值C,这时就可以在你的断点设置条件为==A
页: [1] 2
查看完整版本: 是否能对某一处函数调用时内部断点才停?