169 похожих чатов

Как в отладчике происходит шаг (например с заходом). А тоесть,

как он выполняет всего одну инструкцию и сразу останавливает поток? Если взять windows, то он использует какие-то манипуляции с контекстом, через системные функции?

6 ответов

13 просмотров

Продолжает исполнение, проверяет (E/R)IP на то, не равен ли он следующей инструкции с предыдущей. Если равен, то останавливает С Step Into - продолжает исполнение, получает адрес функции, в которую нужно войти, и если указатель на адресе функции - останавливает. Тем самым попадаем внутрь

записывает опкод int 3(cc), на следующую за call инструкцию если с обходом, либо на адрес куда ведет call если с заходом. Когда исполнение доберется до этой точки проц сам через прерывание дернет отладчик.

randomize usr
записывает опкод int 3(cc), на следующую за call и...

Логично, хотя иногда не будет работать, если не пресечь стандартные методы обнаружения отладчика, или какого-нибудь дампа памяти И да - вот так реализовано как раз в x64dbg в классе TraceDebug - TraceExecute Но там уже в настройках ядра встроена галочка на спуфинг BeingDebugged, и восстановливания флага записи на память

nano- Автор вопроса
Entusiast
Логично, хотя иногда не будет работать, если не пр...

Блин сижу внутри функции TraceExecute и вижу фигу, одна обработка и нигде адресации до прерывания. Привык как в си углублятся внутрь функций пока не дойдешь до этого самого прерывания. Даже асемблер легче читается... Лан посплю и завтра доразбираю. Всеравно надо с++ учится понимать. Спасибо огромное👌🙃

nano
Блин сижу внутри функции TraceExecute и вижу фигу,...

Ну вот верное решение было - на следующую функцию int3 всунуть, продолжить, а Windows сам процесс остановит, потом восстанавливаешь байты, которые заменил

eflags | 0x100 же.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Гляньте, че бывает: Сегодня по одному проекту одной вебстудии делал проект небольшой, на их хостинге. На Modx revo. В определенный момент , работая в админке, вдруг перестал р...
Artem
7
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Кто нибудь либу Zstandart использовал ? Это либа для сжатия от Цукерберга
Andrey Electron
9
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Карта сайта