• XSS.stack #1 – первый литературный журнал от юзеров форума

Написание PE загрузчика.

TDL

HDD-drive
Пользователь
Регистрация
30.05.2020
Сообщения
46
Реакции
38
Здравствуйте. На данный момент занимаюсь написанием PE загрузчика, и в процессе возник вопрос. Есть исходник подобного на github - тык.
На 259 строке тут производится попытка зарезервировать память под образ, стартуя с адреса текущего образа ( 1 параметр Virtual Alloc). Далее, в том случае, если зарезервировать память не удалось - действие повторяется, но уже первым параметром передаётся NULL, что означает, что система сама выберет то место в памяти, с которого начнётся резервирование памяти. Зачем это делается? Почему изначально производится попытка резервировать память, начиная с адреса текущего образа? В каких случаях будет произведено резервирование памяти по произвольному адресу?
 
Зачем это делается? Почему изначально производится попытка резервировать память, начиная с адреса текущего образа? В каких случаях будет произведено резервирование памяти по произвольному адресу?
Ну тут все просто, в начале происходит попытка выделить память указанную в заголовке PE - образа, но этот адрес уже может-быть занят под нужды системы.
В этом случае мы просим систему выделить любой свободный адрес, это нормальный подход, за него не стыдно...)
 
Ну тут все просто, в начале происходит попытка выделить память указанную в заголовке PE - образа, но этот адрес уже может-быть занят под нужды системы.
В этом случае мы просим систему выделить любой свободный адрес, это нормальный подход, за него не стыдно...)
А зачем производить попытку выделения по адресу текущего образа, если можно выделить сразу по произвольному?
 
А зачем производить попытку выделения по адресу текущего образа, если можно выделить сразу по произвольному?
Ну в заголовке незря-же задан адрес, возможно есть какая-то специфика. Поэтому в большинстве случаев используется именно указанный адрес. Но что делать если этот адрес уже занят ?

Да можно вернуть ошибку, но лучше попробовать стартануть по другому адресу, как-то так...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А зачем производить попытку выделения по адресу текущего образа, если можно выделить сразу по произвольному?
Можно и сразу по произвольному, но как верно пишут выше, нужно чтоб были релоки.

Если у файла не будет релоков, то с таким балетом можно знатно прихуеть.
Тогда надо, чтоб сам загрузчик собирался с imagebase повыше, ну или с aslr..
А вообще, раньше же так и было? Ну во времена ХР, в основном релоки были у дллок, aslr не было.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх