
1、通过编写好的脚本来获取按钮事件:
先将以下脚本保存至 .txt 文件中:
var Addrmov Addr,401000
loop:
find Addr,#740E8BD38B83????????FF93????????#
cmp $RESULT,0
je Exit
add $RESULT,0A
bp $RESULT
add $RESULT,1
mov Addr,$RESULT
jmp loop
Exit:
ret
用OD载入 Delphi 程序,右键 运行脚本-->打开,选择上面保存的文件,运行,如果d出了script finished 窗口就表示找到按钮事件断点位置。
2、用资源编辑工具+十六进制编辑工具来查找:
首先用ResScope或者其他工具打开目标程序,在RCData中能够找到窗体的资源信息,例如
object Form1: TForm1object Button1: TButton
Caption = 'Button1'
OnClick = Button1Click
end
end
此时假设我们要找“Button1”按钮事件,记住OnClick的名字(在这里就是Button1Click)
然后再用WinHex打开程序,查找事件名“Button1Click”,如下图所示: 事件名的前一个字节就是事件名的长度,再前面就是事件地址了:
找到地址后,用 OD载入程序,直接Ctrl+G前往该地址。
可以考虑使用 OnMouseDown 事件,并在 OnMouseDown 事件代码里,设置一个变量 为 True,用于指示当前“鼠标按下按钮”,当用户松开鼠标按钮后,编写 OnMouseUp 事件,并将上面的变量设置为 False,用于指示当前用户松开了按键。此外, OnDragDrop 、OnDragOver 事件也可以用于“鼠标按下不松”的拖放过程。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)