TRW2000中如何当输入完毕Edit控件中的数据后获取中断?(50分)

  • 主题发起人 主题发起人 Gooder
  • 开始时间 开始时间
G

Gooder

Unregistered / Unconfirmed
GUEST, unregistred user!
我直接放了一个EDIT控件,一个BUTTON控件
在BUTTON控件单击事件中写下:
var
a: string;
begin
a:= edit1.text;
showmessage(a);
end;

运行后按下^N,进入TRW2000,敲入
bpx GetWindowTextA
这个可以获取,但并不是由a:=edit1.text取得的,而是Showmessage(a)取得的
另一个试了
bmsg xxx WM_GETTEXT
获取不是,不知道是什么原因
又试了
bpx GetDlgItemTextA
也是无法获取中断。
请问各位大侠,这是什么原因,应该如何才能获取呢
 
经典的用法是
BPX hmemcpy
 
Delphi是用内部消息处理的,分析一下VCL也许可以找到问题的解决办法.
 
看一看TEdit的GetText的代码。我这儿没有delphi,没法给你看。

或者你可以在buttonclick上下断点:

bmsg xxx wm_command or bmsg xxx wm_lbuttondown
 
查找了一下GetText代码,发现到最后它是使用CallWindowProc调用API的

而它发送的WM_GETTEXT消息一直都不调用SendMessage或PostMessage的

而是使用函数调用的方法,一直到调用CallWindowProc函数

那我是如何是好呢?

如果用bpx hmemcpy的话,那实在有太多地方是调用hmemcpy了

而CallWindowProc也是有太多地方调用了

而且怎样看CallWindowProc和GetWindowTexxt的调用参数
 
//而CallWindowProc也是有太多地方调用了
玩这个就是要有耐性:)

//而且怎样看CallWindowProc和GetWindowTexxt的调用参数
Delphi 调用函数的参数一般规则是:EAX, EDX, ECX 分别放前三个参数,
后续参数一次进栈。对于对象方法,第一个参数是隐含的类实例指针,实际
看到的参数实际上是第二个。

 
step1.'bpx hmemcpy'
step2.'pmodule'&'F12'Xn till you find there's no more 'Ret'.
then 'f8'Xn or 'f10'Xn and 'd e??'.you'll find the codes(numbers)
are easy to find.
 
有谁破过FlashGet的,传授点经验好吗,如何判断读取了注册表后的语句
bpx后面的if语句如何使用
如果说 ESP的内容只是一个地址,要判断ESP指向的地址的内容,如何写?
 
如果 ESP = 1234H,则察看内存地址为 1234H 的内存单元的内容啊。
 
我的意思是在bpx的if语句中如何让当esp指向的地址的内容为1234H时中断
例如:
ESP=1234H
内存中 01234H的内容为 4567H,是一个地址
而内存中04567H的内容为'abcde'
现在我就希望用bpx中的if语句判断当esp指向的地址指向的内容为abcde时就中断

我应该如何写呢?
 
内存断点:
bpm 04567H rw

呢?
 
bpm 后面的rw是什么意思呢?
 
在地址前加个星号表示地址里的内容。
比如你说的例子中,**ESP就是"abcde"。
 
rw 是read write 可以是 r,w, rw

就是说read or write时中断。

to yubufeng
是 [esp] 把。
 
有谁调用过RegQueryValue,它的参数分别是如何传递的

如果我想在众多读取注册表的语句中,想在软件读取'HKEY_CURRENT_USER/SOFDTWARE/WRegName'的数据时

中断进入调试,我应该如何呢?
 
RegQueryValue: 查查api帮助不就知道了?

就是push几个参数进去。

这样的条件断点。不知道这么设。
 
后退
顶部