C++ MMAP

Начинающий
Статус
Оффлайн
Регистрация
20 Фев 2020
Сообщения
13
Реакции[?]
4
Поинты[?]
1K
Братья славяне, есть вопрос.

Юзаю
Пожалуйста, авторизуйтесь для просмотра ссылки.
для внедрения моего DLL в процесс

Появилась такая проблема, при внедрении моего DLL в игру можно спиздить подменив функцию VirtualAllocEx и NtWriteVirtualMemory внедрив цыганский DLL в мой лоадер (пример такого вора говна -
Пожалуйста, авторизуйтесь для просмотра ссылки.
).

Пробывал создавать хуки функций VirtualAllocEx которые беэкапят оригинал, использовал их - помогло только от кражи через подмену VirtualAllocEx, NtWriteVirtualMemory я не использую :/ (как раз через него и воруется мое DLL, хз откуда у меня NtWriteVirtualMemory :NotLikeThis:)

Как можно защититься от этого?
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
NtWriteVirtualMemory я не использую :/ (как раз через него и воруется мое DLL, хз откуда у меня NtWriteVirtualMemory
WriteProcessMemory вызывает NtWriteVirtualMemory.

В принципе ты можешь вызывать NtWriteVirtualMemory через syscall'ы. Это откинет половину школьных реверсеров в любом случае, к тому же, хук на NtWriteVirtualMemory не будет тригериться, так как ты её не вызываешь ( почему и как оно работает можешь найти статейки в гугле ).
 
✊Rot Front✊
Пользователь
Статус
Оффлайн
Регистрация
2 Июл 2020
Сообщения
131
Реакции[?]
256
Поинты[?]
84K
1)Использовать syscall напрямую(помните, что через
Пожалуйста, авторизуйтесь для просмотра ссылки.
вам нужно перейти в x64 code)
2)Использовать драйвер для инжекта.
Так же помните, что вашу Dll могут сдампить после инжекта с помощью прогулки по памяти(NtQueryVirtualMemory и прогулка по подозрительной памяти):
Условие ~ такое:
C++:
if  (!(mbi.Protect & PAGE_GUARD) && !(mbi.Protect & PAGE_NOACCESS) &&
    mbi.Type == MEM_PRIVATE &&
    mbi.RegionSize > PAGE_SIZE * 3 &&
    mbi.Protect & PAGE_EXECUTE_READWRITE)//or PAGE_EXECUTE_READ
{
    //=dump suspect region
}

Даже если вы удалили PE заголовок, то не забывайте отключать создание
Пожалуйста, авторизуйтесь для просмотра ссылки.
при генерации кода т.к если у вас нет PE и при этом находится манифест, то это довольно тупая попытка скрыть Dll и CRT т.к он тоже создаёт сигнатуру.
<assembly xmlns='urn:schemas
3C 61 73 73 65 6D 62 6C 79 20 78 6D 6C 6E 73 3D 27 75 72 6E 3A 73 63 68 65 6D 61 73
P.S самое основное - сделать нерабочий дамп памяти(например,через сервер передавать адреса функций(например, копировать их в стек(посмотрите структуру того же PG,чтобы понять о чём я) и не вызывать напрямую,чтобы постепенно увеличивать неприятные моменты).
В любом случае, это игра в догонялки, где нет победителя и проигравшего окончательно
 
Начинающий
Статус
Оффлайн
Регистрация
20 Фев 2020
Сообщения
13
Реакции[?]
4
Поинты[?]
1K
Сверху Снизу