Исходник Aye-imports | прячем импорты в dll

Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
Содержит 2 части:
  1. изменение адреса самого импорта
  2. инлайн ксор

Как работает первый метод:
  • выделить в целевом процессе 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 вы должны добавить все модули, импорты которых вы вызываете

Сурс с примером использования:
Пожалуйста, авторизуйтесь для просмотра ссылки.


 
НАЧНИ ПРОДАВАТЬ СОЛЬ ПРЯМО СЕЙЧАС
Забаненный
Статус
Оффлайн
Регистрация
15 Дек 2020
Сообщения
69
Реакции[?]
83
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ауе буткит когда епта
 
BattlEye – The Anti-Cheat Gold Standard
Забаненный
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
181
Реакции[?]
99
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Не проще юзать вмп?
Он автоматически генерирует такие стабы для импортов и прячет их, при этом остается один рандомный импорт засчет которого загрузчик подгрузит библиотеку, а все остальные принимают примерно такой вид:
Код:
.text:FFFFF801F9761C42                    push    rax
.onetap0:FFFFF801FC93C3CE                 mov     rax, FFFFF80177921C6Dh
.onetap0:FFFFF801FC974601                 xchg    rax, [rsp+0]
.onetap0:FFFFF801FC987870                 push    rax
.onetap0:FFFFF801FC92797F                 lea     rax, FFFFF801C833271h // расшифровывает адрес
.onetap0:FFFFF801FC9DDADE                 mov     rax, [rax+31762C8h]
.onetap0:FFFFF801FCA9C8A2                 lea     rax, [rax+532F3169h]
.onetap0:FFFFF801FC9AB657                 xchg    rax, [rsp+0] // подменяет адрес возврата
.onetap0:FFFFF801FC91B668                 retn // прыгает на апи
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Не проще юзать вмп?
Он автоматически генерирует такие стабы для импортов и прячет их, при этом остается один рандомный импорт засчет которого загрузчик подгрузит библиотеку, а все остальные принимают примерно такой вид:
Код:
.text:FFFFF801F9761C42                    push    rax
.onetap0:FFFFF801FC93C3CE                 mov     rax, FFFFF80177921C6Dh
.onetap0:FFFFF801FC974601                 xchg    rax, [rsp+0]
.onetap0:FFFFF801FC987870                 push    rax
.onetap0:FFFFF801FC92797F                 lea     rax, FFFFF801C833271h // расшифровывает адрес
.onetap0:FFFFF801FC9DDADE                 mov     rax, [rax+31762C8h]
.onetap0:FFFFF801FCA9C8A2                 lea     rax, [rax+532F3169h]
.onetap0:FFFFF801FC9AB657                 xchg    rax, [rsp+0] // подменяет адрес возврата
.onetap0:FFFFF801FC91B668                 retn // прыгает на апи
они просто еще верят в волшебный анпакер
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не проще юзать вмп?
Он автоматически генерирует такие стабы для импортов и прячет их, при этом остается один рандомный импорт засчет которого загрузчик подгрузит библиотеку, а все остальные принимают примерно такой вид:
Код:
.text:FFFFF801F9761C42                    push    rax
.onetap0:FFFFF801FC93C3CE                 mov     rax, FFFFF80177921C6Dh
.onetap0:FFFFF801FC974601                 xchg    rax, [rsp+0]
.onetap0:FFFFF801FC987870                 push    rax
.onetap0:FFFFF801FC92797F                 lea     rax, FFFFF801C833271h // расшифровывает адрес
.onetap0:FFFFF801FC9DDADE                 mov     rax, [rax+31762C8h]
.onetap0:FFFFF801FCA9C8A2                 lea     rax, [rax+532F3169h]
.onetap0:FFFFF801FC9AB657                 xchg    rax, [rsp+0] // подменяет адрес возврата
.onetap0:FFFFF801FC91B668                 retn // прыгает на апи
Некоторые античиты детектят его.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Некоторые античиты детектят его.
Некоторые это мрак?
Сомневаюсь что он детектит именно это, т.к. такие вызовы не имеют четких сигнатур: кфг раздроблен (в примере выше собрано для демонстрации), константы всегда разные.
Тоже самое касается мутации и виртуализации, слишком затратно затаскивать деобфускацию для анализа паттернов.
Скорее там что-то простое, вроде детекта секций имя0 && имя1 или возможно прыжка на вм например в точке входа.
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Некоторые это мрак?
Сомневаюсь что он детектит именно это, т.к. такие вызовы не имеют четких сигнатур: кфг раздроблен (в примере выше собрано для демонстрации), константы всегда разные.
Тоже самое касается мутации и виртуализации, слишком затратно затаскивать деобфускацию для анализа паттернов.
Скорее там что-то простое, вроде детекта секций имя0 && имя1 или возможно прыжка на вм например в точке входа.
Мрак не детектит вмп
 
bibitka
Пользователь
Статус
Оффлайн
Регистрация
26 Июн 2020
Сообщения
133
Реакции[?]
66
Поинты[?]
0
Не проще юзать вмп?
Он автоматически генерирует такие стабы для импортов и прячет их, при этом остается один рандомный импорт засчет которого загрузчик подгрузит библиотеку, а все остальные принимают примерно такой вид:
Код:
.text:FFFFF801F9761C42                    push    rax
.onetap0:FFFFF801FC93C3CE                 mov     rax, FFFFF80177921C6Dh
.onetap0:FFFFF801FC974601                 xchg    rax, [rsp+0]
.onetap0:FFFFF801FC987870                 push    rax
.onetap0:FFFFF801FC92797F                 lea     rax, FFFFF801C833271h // расшифровывает адрес
.onetap0:FFFFF801FC9DDADE                 mov     rax, [rax+31762C8h]
.onetap0:FFFFF801FCA9C8A2                 lea     rax, [rax+532F3169h]
.onetap0:FFFFF801FC9AB657                 xchg    rax, [rsp+0] // подменяет адрес возврата
.onetap0:FFFFF801FC91B668                 retn // прыгает на апи
Какой смысл твоего комментария? Давай на форуме не будет никакого обучающего контента, все будем тупо юзать вмп.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Какой смысл твоего комментария? Давай на форуме не будет никакого обучающего контента, все будем тупо юзать вмп.
И так почти все тупо юзают вмп, даже очень известные бренды.
Смысл его в том, что я предлагаю более удобную альтернативу, которая дает даже результаты получше, полезна информация в отличии от твоего доеба.
Мне например как реверсеру вообще пофиг, декриптовать импорты вмп или самописную лабуду, дело пяти минут допилить деобфускатор для этого.
 
bibitka
Пользователь
Статус
Оффлайн
Регистрация
26 Июн 2020
Сообщения
133
Реакции[?]
66
Поинты[?]
0
И так почти все тупо юзают вмп, даже очень известные бренды.
Смысл его в том, что я предлагаю более удобную альтернативу, которая дает даже результаты получше, полезна информация в отличии от твоего доеба.
Мне например как реверсеру вообще пофиг, декриптовать импорты вмп или самописную лабуду, дело пяти минут допилить деобфускатор для этого.
Какая нахер альтернатива, человек? Это обучающий контент, никто не претендует на уровень вмп.
 
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
почти все тупо юзают вмп
кто все то……
у нас тут игровой форум, следовательно это сделано чтобы прятать импорты в чите……..
в говно играх, где на вес длл можно не смотреть, юзайте свой вмп сколько угодно. а если игра имеет еак/батлауе, то вы с вмп далеко не уедете……
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
кто все то……
у нас тут игровой форум, следовательно это сделано чтобы прятать импорты в чите……..
в говно играх, где на вес длл можно не смотреть, юзайте свой вмп сколько угодно. а если игра имеет еак/батлауе, то вы с вмп далеко не уедете……
В обоих случаях такая самописная штука будет проигрывать.
То что ты предложил никак не скрывает импорты лучше чем вмп, вызовы в итоге приходят в стандартные либы, это же не прямые сисколлы.
А если говорить о сигнатурных детектах, то вмпом можно защитить каждую функцию мутацией, и он достаточно неплохо собьет сигнатуры, добавить сюда пересборку на сервере для каждой версии и клиента и детектируемость по сигнатурам будет минимальной.
П.с. понятия не имею причем здесь вес либы и как он может влиять на детект.
 
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
понятия не имею причем здесь вес либы и как он может влиять на детект
ну смотри значит, решает античит пробежаться по сегментам
бежит, бежит, видит твою пасту, которую ты мапнул, видит, что сегмент довольно большой да еще и rwx память выделена не как image....
ведь именно так и получится: ты мапнешь свои 5 мб длл с вмпротектом, выделив MEM_PRIVATE память, в которую можно писать, которую можно читать, и, боже мой, выполнять!!
угадай что произойдет в ближайшие пару часов.................
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
ну смотри значит, решает античит пробежаться по сегментам
бежит, бежит, видит твою пасту, которую ты мапнул, видит, что сегмент довольно большой да еще и rwx память выделена не как image....
ведь именно так и получится: ты мапнешь свои 5 мб длл с вмпротектом, выделив MEM_PRIVATE память, в которую можно писать, которую можно читать, и, боже мой, выполнять!!
угадай что произойдет в ближайшие пару часов.................
Ну смотри значит
Если ач детектит твою память в памяти ему абсолютно поебать какого она размера, ни один ач не будет это использовать в качестве фактора, скорее всего он отправит этот участок памяти на сервер где его и будут реверсить.
Как раз таки когда они его среверсят тебе поставят детект по твоему сырому (зато без вмп) файлу и действительно накроют всех твоих юзеров разом.
Дальше, файл будет 5мб если только ты будешь использовать вм, причем новую версию, т.к. примитивы там разворачиваются вместо единой таблицы.
Кроме того, если мы говорим о детекте в памяти, сканирование можно обойти многими вариантами, например скрыть память из гпв, или замаппить поверх загруженной разрешенной библиотеки, нужно лишь шевелить извилинами.
И еще, не смей мне говорить про пасты, ты меня не знаешь, я на порядок больше тебя занимаюсь кодингом и реверсом, причем мной реализовано практически все, от контейнеров,фс,логгера, до гуя,криптографии,трединга,дизасма и сетевой части, никакого std/imgui/zydis, так что не рассказывай мне про пасты, и в обфускации разбираюсь гораздо лучше, было несколько проектов по морфингу кода и девиртуализации.
 
Модератор форума
Модератор
Статус
Оффлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
Если ач детектит твою память в памяти ему абсолютно поебать какого она размера, ни один ач не будет это использовать в качестве фактора, скорее всего он отправит этот участок памяти на сервер где его и будут реверсить.
1622135157077.png

в процессе всегда есть rwx память, особенно в steam играх (хуки, виндовс постирония)

скорее всего он отправит
И еще, не смей мне говорить про пасты, ты меня не знаешь, я на порядок больше тебя занимаюсь кодингом и реверсом, причем мной реализовано практически все, от контейнеров,фс,логгера, до гуя,криптографии,трединга и сетевой части, никакого std или imgui, так что не рассказывай мне про пасты.
больше вопросов к вам у меня нет, о великий кодер и реверсер, до свидания
 
Сверху Снизу