Форум программистов, компьютерный форум CyberForum.ru

Создание отладчика. DebugApi - C++

Восстановить пароль Регистрация
 
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
24.10.2012, 12:25     Создание отладчика. DebugApi #1
Здравствуйте!
Нужно написать небольшой отладчик, но столкнулся с обной проблемой.

Чтобы установить breakpoint, нужно прочитать один байт по нужному адресу и перезаписать его на int 3.

Но вызвать ReadProcessMemory\WriteProcessMemory получается не везде. При попытке вызова GetLastError = 299: Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

Например, нужно установить breakpoint на функцию GetProcessAddress:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        PROCESS_INFORMATION openedProcessInfo;
        STARTUPINFO startInfo;
        startInfo.cb = sizeof(STARTUPINFO);
        ZeroMemory(&startInfo, sizeof(STARTUPINFO));
        ZeroMemory(&openedProcessInfo, sizeof(openedProcessInfo));
 
        BOOL isOpened = CreateProcess(L"C:\\example.exe",
            NULL, 
            NULL, 
            NULL, 
            false, 
            DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS, 
            NULL, 
            NULL, 
            &startInfo, 
            &openedProcessInfo);
 
        SIZE_T bytesRead;       
        BYTE instruction;
 
        if(!ReadProcessMemory(openedProcessInfo.hProcess, GetProcAddress, &instruction, 1, &bytesRead)) {
            cout << "GetLastError = " << GetLastError() << endl;
            return 1;
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2012, 12:25     Создание отладчика. DebugApi
Посмотрите здесь:

C++ Дизасемблированный код в составе отладчика
Где поставить вторую точку останова отладчика? C++
C++ Магия отладчика
C++ Определить существует ли ромб с задаными сторонами a,b,c,d (без операторов ввода и ввывода,в режиме отладчика)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru