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

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

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

6 ответов

26 просмотров

Продолжает исполнение, проверяет (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 же.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта