Модератор форума
-
Автор темы
- #1
Содержит 2 части:
Как работает первый метод:
То есть, когда ваша программа вызовет импорт, функция не будет вызвана напрямую
Как работает второй метод:
Обратите внимание на
Эта строка содержит список модулей, экспорты которых вызываются через wrap_import, соответственно при использовании wrap_import вы должны добавить все модули, импорты которых вы вызываете
Сурс с примером использования:
- изменение адреса самого импорта
- инлайн ксор
Как работает первый метод:
- выделить в целевом процессе 0x1000 RWX байтов (не важно сколько выделять, главное убедитесь, чтобы этого было достаточно)
- вместо обычного изменения адреса в IMAGE_THUNK_DATA::Function, этот адрес заменяется на указатель к выделенной памяти
- эта память заполняется следующим:
Код:
mov eax, xored_function_address
xor eax, xor_key
jmp eax
Как работает второй метод:
- инструкция
call dword ptr[...]
заменяется при компиляции на:
Код:
mov eax, hashed_function_name
xor eax, xor_key
call eax
- используя Hacker Disassembler Engine в каждой инструкции ищется hashed_function_name чтобы изменить его на адрес функции ^ ключ ксора
Обратите внимание на
Пожалуйста, авторизуйтесь для просмотра ссылки.
Эта строка содержит список модулей, экспорты которых вызываются через wrap_import, соответственно при использовании wrap_import вы должны добавить все модули, импорты которых вы вызываете
Сурс с примером использования:
Пожалуйста, авторизуйтесь для просмотра ссылки.