Что произойдет, если я удалю адрес таблицы перемещения из заголовка PE? - PullRequest
1 голос
/ 17 декабря 2011

Я анализирую некоторые трещины, и один из них изменил адрес и размер таблицы перемещений на 0. Чего взломщик пытался достичь с помощью этого?

Чтобы получить больше информации, цель взлома - загрузить другую DLL, изменив имя предыдущей Windows-библиотеки в таблице загрузки на пользовательскую.

Ответы [ 3 ]

3 голосов
/ 17 декабря 2011

Удаление таблицы перемещения гарантирует, что DLL не может быть перемещена.
Таким образом, новый код (код взлома) не должен вычислять какой-либо адрес в DLL и может использовать постоянные значения адресов.

Также часто таблица перемещений на самом деле не нужна, поэтому ее можно удалить, чтобы уменьшить размер модуля или заменить его некоторыми данными.

1 голос
/ 17 декабря 2011

Чтобы изменить имя DLL для загрузки, вы обычно просто меняете таблицу импорта.Все остальное - просто работа с догадками, не зная специфики рассматриваемых двоичных файлов.

Я считаю, что важно понимать, что не все «взломщики» знают, что именно они делают, возможно, вы анализируете что-тоэто вообще не нужно анализировать.

Тем не менее, вы можете удалить перемещение по нескольким причинам:

  • в исполняемых файлах, данные о перемещении бесполезны (и могут быть безопаснымиудалено), если только они не поддерживают ASLR.
  • возможно взломанный код, который потребует записи о перемещении.Вместо того, чтобы добавить их, взломщик просто полностью удалил таблицу перемещений (возможно, также отключив ASLR в заголовке)
  • , если файл был упакован, вы обычно запускаете программу восстановления PE для распакованного файла, чтобы удалить ненужные данные раздела вдиск и очистить PE заголовок.По умолчанию большинство этих инструментов удаляют данные перемещения из PE.
0 голосов
/ 17 декабря 2011

В соответствии с Portable Executable Specification , таблица перемещения необходима только тогда, когда библиотека должна быть загружена по другому адресу, чем ее предпочтительный адрес загрузки. Таким образом, удаление таблицы перемещения из каталога не оказывает никакого влияния, если библиотека загружается по своему предпочтительному адресу (что фактически происходит, когда изображение НЕ поддерживает ASLR).

...