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