【发布时间】:2014-06-19 23:45:10
【问题描述】:
我是逆向工程的新手, 当我使用 F7 在 ollydbg 中单步执行代码时,直到出现一个等待用户输入的对话框,我该如何处理用户输入以正确编程?
【问题讨论】:
-
你想管理按钮点击吗?
标签: debugging reverse-engineering ollydbg
我是逆向工程的新手, 当我使用 F7 在 ollydbg 中单步执行代码时,直到出现一个等待用户输入的对话框,我该如何处理用户输入以正确编程?
【问题讨论】:
标签: debugging reverse-engineering ollydbg
ollydbg 1.10 用于演示 2.01 具有类似的功能
我假设您的查询意味着一旦提供输入并进一步处理
通过单击按钮等如何重新进入用户模式代码
假设您正在使用不会主动阻止任何人调试的simple applicationpasuing ollydbg 和viewing call stack 中的应用程序就足够了
press f12(这里假设是单线程程序或者你需要选择正确的线程)
暂停被调试者
press ctrl+k查看调用堆栈
ollydbg 将同时显示被调用者和调用者,并在上下文菜单中(右键单击),并具有多个选项,包括执行直到返回特定调用
select any one of the call 在用户代码中跟随并设置断点或
use execute till retn
snap 中调用堆栈的代码如下 MessageBox 正在等待用户输入(用于按下 ok)
before pressing ok pause (f12) and view call stack (ctrl+k)
查看类似于图片的call lstack
matryoshka:\>dir /b matryoshka.cpp
matryoshka:\>type matryoshka.cpp
#include <windows.h>
#pragma comment(lib, "user32.lib")
void funcg (void) {
MessageBoxA(NULL,"Matryoshka Doll\n","Matryoshka Doll",MB_OK);
}
void funcf (void) {
funcg();
}
void funce (void) {
funcf();
}
void funcd (void) {
funce();
}
void funcc (void) {
funcd();
}
void funcb (void) {
funcc();
}
void funca (void) {
funcb();
}
void main (void) {
funca();
}
matryoshka:\>cl /Zi /analyze /W4 /nologo matryoshka.cpp /link /RELEASE
matryoshka:\>dir /b *.exe
matryoshka.exe
matryoshka:\>OLLYDBG.EXE matryoshka.exe
【讨论】: