Гайд [Reverse-Engineering] Контрим LazyImport x64

Разработчик
Статус
Оффлайн
Регистрация
18 Мар 2020
Сообщения
435
Реакции[?]
856
Поинты[?]
180K
Весенний шалом.

ПРЕДИСЛОВИЕ
Я часто стал замечать, что многие абузят LazyImport, и вот на днях пока я готовил новую статью для Вас мне попалась эта либа, но т.к. она контриться очень легко, я решил запилить мини-статью с простым обходом, а основная статья выйдет через некоторое время :)

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

Код:
mov rax, qword ptr gs:[0x0000000000000030]
Где gs:[0x30] - адрес PEB

Вот пример, где лоадеру надо вызвать GetSystemDirectoryA

1647758493061.png

После некоторых манипулияции с хэшом либа вызывает импорт через call rax

1647758548845.png

Как я и написал сверху - LazyImport всегда вызывает PEB, поэтому ничего нам не мешает составить паттерн для нахождения всех WinAPI-вызовов
Сам паттерн: 65 48 8B 04 25 30 00 00 00
Можете юзать такую фишку везде, где используется LazyImport, только для х32 вам надо по новому составить паттерн, так как байткод будет совсем другой

С помощью моего паттерна я нашел 16 инструкции ( считая тот, который мы уже в ручную нашли ).

Вот сам список с вызовами:

1647758595179.png

Не всегда видно название импорта, поэтому ставьте бряк на call rax, чтобы глянуть адрес в регистре, в х32 это возможно call eax, я не проверял :)

Вот такой вот простенький обход LazyImport, долго думал делать для нее отдельную статью или засунуть в мою следующую статью. Ждите моей следующей статьи, она выйдет очень скоро!
Подписывайтесь на блог моей команды:
Пожалуйста, авторизуйтесь для просмотра ссылки.

 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
5 Сен 2020
Сообщения
986
Реакции[?]
275
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
норм , только не понятно как составлять патерн
 
unbound
Пользователь
Статус
Оффлайн
Регистрация
27 Окт 2019
Сообщения
257
Реакции[?]
86
Поинты[?]
56K
Начинающий
Статус
Оффлайн
Регистрация
10 Май 2019
Сообщения
19
Реакции[?]
22
Поинты[?]
2K
Забаненный
Статус
Оффлайн
Регистрация
3 Мар 2022
Сообщения
22
Реакции[?]
7
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Все понял, только не понял как он вызывает через call eax? Там же нет адреса
 
Начинающий
Статус
Оффлайн
Регистрация
29 Янв 2020
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
3 Мар 2022
Сообщения
22
Реакции[?]
7
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу