Как найти адреса, которые использовала программа?
Я хочу найти адреса памяти, которые использует исполняемый файл. У меня есть исполняемый файл, и я хочу иметь список адресов, которые он использует.
Это должно быть сделано статически и без запуска самого исполняемого файла. Кто-нибудь может мне помочь, пожалуйста?
Также, если вы знаете динамичный способ сделать это, пожалуйста, сообщите мне.
1 ответ
Вы должны заглянуть в заголовок exe. Существует список адресов, которые загрузчик должен адаптировать относительно базового адреса при запуске исполняемого файла. Это называется таблицей перемещения. Когда вы смотрите в exe через дизассемблер, такой как IDA, вы можете предположить адрес загрузки, или exe может указать его.
Обычно адреса являются относительными, поэтому даже если вы найдете адрес один раз, не гарантируется, что он всегда будет в том же месте. Если программа написана или скомпилирована с позиционно-независимым кодом, то она не зависит от абсолютного адреса.
Просто для разборки вы можете посмотреть на такие инструменты, как IDA или аналогичные.