说,有一个输入框,我输入文本。我能以某种方式找到输入文本的位置吗?

#1 楼

GetWindowText()GetDlgItemText()上设置断点,并让目标程序读取您的输入文本。如果遇到断点,则可以追溯调用堆栈以
查看正在读取输入文本的代码以及将其存储在内存中的位置。如果两个断点均未命中,则可以尝试在SendMessage()上设置条件断点,对其进行过滤以仅在WM_GETTEXT消息上断点。它在哪里创建文本框窗口以及如何处理文本框的输入。搜索窗口创建API调用和/或对与文本框相关的字符串(静态标签,错误消息字符串等)的交叉引用可能会有所帮助。

#2 楼

除了杰森所说的,我还要补充说,还有另一种可能有用的方式:测试-ExitProcess()

在进程的内存中搜索该字符串,并尝试分析引用该位置的代码。在某些情况下仍然可能会有所帮助。

#3 楼

在输入文本字符串press f12并暂停调试对象后,除了上述所有解决方案之外,现在还有几个选项可以搜索字符串
view call stack (ctl+k)并在堆栈中的return address上设置断点,按f9键运行
ollydbg很可能会在某些系统调用上中断
,当中断时,您可以搜索进程的整个内存
alt+m right click search ctrl+l for repeating)输入的字符串
设置一个访问断点(位置上的hardware break point on read)
,如果应用程序不太混乱,调用堆栈可能会向您显示应用程序代码进入系统的位置,如果应用程序未将其控件归类,您也可以从该位置进入系统如果应用程序使用DirectX,则在windowprocclassproc上设置断点也将为您提供正确的上下文以跟随字符串,您可以在SendInput()api或DrawText(...)apis上设置断点