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

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

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

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

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

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

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

7 ответов

35 просмотров

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

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

К|/|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и Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
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
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта