Murasaki
-
Автор темы
- #1
Весенний шалом.
ПРЕДИСЛОВИЕ
Я часто стал замечать, что многие абузят LazyImport, и вот на днях пока я готовил новую статью для Вас мне попалась эта либа, но т.к. она контриться очень легко, я решил запилить мини-статью с простым обходом, а основная статья выйдет через некоторое время :)
Контрим LazyImport
Как я понял в проге, которую я реверсил решили дать шанс LazyImport и накрыть некоторые вызовы виртой, нежели протектору, но проблема либы в том, что она очень сильно палится в рантайме.
LazyImport всегда стучится в PEB, в дизассемблере это одна инструкция
Где gs:[0x30] - адрес PEB
Вот пример, где лоадеру надо вызвать GetSystemDirectoryA
После некоторых манипулияции с хэшом либа вызывает импорт через call rax
Как я и написал сверху - LazyImport всегда вызывает PEB, поэтому ничего нам не мешает составить паттерн для нахождения всех WinAPI-вызовов
Сам паттерн: 65 48 8B 04 25 30 00 00 00
Можете юзать такую фишку везде, где используется LazyImport, только для х32 вам надо по новому составить паттерн, так как байткод будет совсем другой
С помощью моего паттерна я нашел 16 инструкции ( считая тот, который мы уже в ручную нашли ).
Вот сам список с вызовами:
Не всегда видно название импорта, поэтому ставьте бряк на call rax, чтобы глянуть адрес в регистре, в х32 это возможно call eax, я не проверял :)
ПРЕДИСЛОВИЕ
Я часто стал замечать, что многие абузят LazyImport, и вот на днях пока я готовил новую статью для Вас мне попалась эта либа, но т.к. она контриться очень легко, я решил запилить мини-статью с простым обходом, а основная статья выйдет через некоторое время :)
Контрим LazyImport
Как я понял в проге, которую я реверсил решили дать шанс LazyImport и накрыть некоторые вызовы виртой, нежели протектору, но проблема либы в том, что она очень сильно палится в рантайме.
LazyImport всегда стучится в PEB, в дизассемблере это одна инструкция
Код:
mov rax, qword ptr gs:[0x0000000000000030]
Вот пример, где лоадеру надо вызвать GetSystemDirectoryA
После некоторых манипулияции с хэшом либа вызывает импорт через call rax
Как я и написал сверху - LazyImport всегда вызывает PEB, поэтому ничего нам не мешает составить паттерн для нахождения всех WinAPI-вызовов
Сам паттерн: 65 48 8B 04 25 30 00 00 00
Можете юзать такую фишку везде, где используется LazyImport, только для х32 вам надо по новому составить паттерн, так как байткод будет совсем другой
С помощью моего паттерна я нашел 16 инструкции ( считая тот, который мы уже в ручную нашли ).
Вот сам список с вызовами:
Не всегда видно название импорта, поэтому ставьте бряк на call rax, чтобы глянуть адрес в регистре, в х32 это возможно call eax, я не проверял :)
Вот такой вот простенький обход LazyImport, долго думал делать для нее отдельную статью или засунуть в мою следующую статью. Ждите моей следующей статьи, она выйдет очень скоро!
Подписывайтесь на блог моей команды:
Подписывайтесь на блог моей команды:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Последнее редактирование: