Я новичок в реверс-инжиниринге. Когда я ввожу код в ollydbg с помощью F7, пока не появится диалоговое окно, ожидающее ввода пользователя, как мне правильно обработать ввод данных пользователем в программе?
Ollydbg, F7, ожидание ввода пользователя из диалогового окна?
Ответы (1)
ollydbg 1.10
используется для демонстрации 2.01
имеет аналогичную функциональность
я предполагаю, что ваш запрос означает, что после того, как ввод предоставлен и продолжается дальше
, нажав кнопку и т. д., как вернуться в код пользовательского режима
предполагая, что вы работаете с simple application
, который активно не мешает кому-либо отлаживатьpasuing
приложения в ollydbg и viewing call stack
должно быть достаточно
press f12
(Одной резьбовой программы предполагается здесь или вам нужно выбрать правильную тему)
Чтобы приостановить отладчик
press ctrl+k
Для просмотра стека вызовов
ollydbg покажет как вызываемого, так и вызывающего абонента, а также в контекстном меню (щелчок правой кнопкой мыши) и имеет несколько параметров, включая выполнение до возврата к конкретному вызову.
select any one of the call
в пользовательском коде и установите точку останова или
use execute till retn
Код для стека вызовов, показанного в SONS, заключается в следующем MessageBox ждет пользовательского ввода (для нажатия OK)
before pressing ok pause (f12) and view call stack (ctrl+k)
чтобы увидеть стек вызовов, похожий на изображение
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