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

Друзья, решил поиграться немного с сырыми указателями на Линуксе. Суть: Есть очень

простая программа из crackmes, которая выводит в консоль "введите пароль: " и ожидает ввода пароля соответственно. Если ввёл правильно - выводит сообщение "молодец" и закрывается, если неправильно - то выводит сообщение "неверно" и закрывается.

Задача:
Изменить поведение программы через изменяемые сырые указатели (`*mut u8`), чтобы программа без ввода пароля, во время рантайма, сразу выдала "молодец". При этом, важно, не дизассемблируя её, то есть прямая работа с памятью процесса.

Проделанная работа (код - тык):
Определение PID процесса, диапазон и сдвиг адресов, что использует процесс. Для пробы, дёргая за ptrace, пытался изменить:
1) значение хотя бы одного адреса памяти;
2) значение 4-х/8-ми/16-и адресов памяти разом;
3) разом все значения адреса памяти;
Однако, понял, что все адреса памяти - нули. Куда посоветуете копать дальше? Нашел что-то про ASLR, но не очень понимаю что дальше.

p.s. я не пытаюсь "взломать" программу в прямом понимании - интересна конкретно работа и изменение памяти процесса во время рантайма с последующим in-place переопределением поведения, ну и также работа с сырыми указателями и unsafe Rust.

p.p.s.: необязательно помогать кодом) мне скорее требуется понять, куда дальше двигаться, чтобы я понял, почему вся доступная память процесса - это нули, и куда дальше двигаться, чтобы таки изменить память процесса на какое-нибудь любое значение.

7 ответов

30 просмотров

Сам крякми дай, чтобы проще было локально потыкать

А ты проверял, что сисколлы работают?

К|/|pи/\/\-6е3yглbIи Автор вопроса
Пух
Сам крякми дай, чтобы проще было локально потыкать

Минутку, сейчас найду, а то распаковал, а ссыль потерял.

Mikail Bagishov
А ты проверял, что сисколлы работают?

Просто тебя с легкостью могли послать нафиг еще на этапе attach, а никакой обработки ошибок я в твоем коде не вижу

К|/|pи/\/\-6е3yглbIи Автор вопроса
Mikail Bagishov
А ты проверял, что сисколлы работают?

Точно скажу, что нет, не проверял. Как я могу это проверить или чтобы не доставать, где можно узнать как проверить?)

К|/|pи/\/\ 6е3yглbIи
Точно скажу, что нет, не проверял. Как я могу это ...

Из man 2 ptrace: > RETURN VALUE On success, the PTRACE_PEEK* requests return the requested data (but see NOTES), the PTRACE_SECCOMP_GET_FILTER request returns the number of instructions in the BPF program, and other requests return zero. On error, all requests return -1, and errno is set appropriately. Since the value returned by a successful PTRACE_PEEK* request may be -1, the caller must clear errno before the call, and then check it af‐ terward to determine whether or not an error occurred.

К|/|pи/\/\-6е3yглbIи Автор вопроса

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта