Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

LoadLibrary Detect

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
приблезительно, там смотреть уже нужно.
стоит сказать что сама идея блока апи тупая, гораздо лучше перехватывать и дампить читы, а потом себе на серв сборки слать и фиксить.
Код:
Expand Collapse Copy
#include <TlHelp32.h>
#include <psapi.h>
#pragma comment( lib, "psapi.lib")

char* GetModulePatchByName(HANDLE hProcess, char* module_name)
{
    HMODULE hMods[1024];
    DWORD cbNeeded;
    CHAR szModName[MAX_PATH];

    if (K32EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
    {
        for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
        {
            if (K32GetModuleFileNameExA(hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
            {
                if (strstr(szModName, module_name))
                {
                    break;
                }
            }
        }
    }
    return szModName;
}

bool BlockAPI_mono(HANDLE hProcess, char* api_name)
{
    CHAR _asm_ret[] = { 0xC3 };

    char* mono_patch = GetModulePatchByName(hProcess, "mono.dll");
   
    if (mono_patch == NULL)
        return false;

    HMODULE mono_lib = LoadLibraryA(mono_patch);

    if (mono_lib == NULL)
        return false;

    FARPROC func = GetProcAddress(mono_lib, api_name);

    if (func == NULL)
        return false;

    DWORD dwOldProtect = 0;
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), PAGE_EXECUTE_READWRITE, &dwOldProtect);
    bool write = WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(func), reinterpret_cast<LPCVOID>(_asm_ret), sizeof(_asm_ret), 0);
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), dwOldProtect, &dwOldProtect);

    return write;
}
int main()
{
    HANDLE hProcess = GetCurrentProcess();

    if (BlockAPI_mono(hProcess, "mono_get_root_domain")
        && BlockAPI_mono(hProcess, "mono_thread_attach")
        && BlockAPI_mono(hProcess, "mono_assembly_open")
        && BlockAPI_mono(hProcess, "mono_assembly_get_image")
        && BlockAPI_mono(hProcess, "mono_class_from_name")
        && BlockAPI_mono(hProcess, "mono_class_get_method_from_name")
        && BlockAPI_mono(hProcess, "mono_runtime_invoke"))
    {
        printf("mono inject fixed!\n");
    }
    else
    {
        printf("no!\n");
    }

    system("pause");
    return 0;
}
 
приблезительно, там смотреть уже нужно.

Код:
Expand Collapse Copy
#include <TlHelp32.h>
#include <psapi.h>
#pragma comment( lib, "psapi.lib")

char* GetModulePatchByName(HANDLE hProcess, char* module_name)
{
    HMODULE hMods[1024];
    DWORD cbNeeded;
    CHAR szModName[MAX_PATH];

    if (K32EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
    {
        for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
        {
            if (K32GetModuleFileNameExA(hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
            {
                if (strstr(szModName, module_name))
                {
                    break;
                }
            }
        }
    }
    return szModName;
}

bool BlockAPI_mono(HANDLE hProcess, char* api_name)
{
    CHAR _asm_ret[] = { 0xC3 };

    char* mono_patch = GetModulePatchByName(hProcess, "mono.dll");
   
    if (mono_patch == NULL)
        return false;

    HMODULE mono_lib = LoadLibraryA(mono_patch);

    if (mono_lib == NULL)
        return false;

    FARPROC func = GetProcAddress(mono_lib, api_name);

    if (func == NULL)
        return false;

    DWORD dwOldProtect = 0;
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), PAGE_EXECUTE_READWRITE, &dwOldProtect);
    bool write = WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(func), reinterpret_cast<LPCVOID>(_asm_ret), sizeof(_asm_ret), 0);
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), dwOldProtect, &dwOldProtect);

    return write;
}
int main()
{
    HANDLE hProcess = GetCurrentProcess();

    if (BlockAPI_mono(hProcess, "mono_get_root_domain")
        && BlockAPI_mono(hProcess, "mono_thread_attach")
        && BlockAPI_mono(hProcess, "mono_assembly_open")
        && BlockAPI_mono(hProcess, "mono_assembly_get_image")
        && BlockAPI_mono(hProcess, "mono_class_from_name")
        && BlockAPI_mono(hProcess, "mono_class_get_method_from_name")
        && BlockAPI_mono(hProcess, "mono_runtime_invoke"))
    {
        printf("mono inject fixed!\n");
    }
    else
    {
        printf("no!\n");
    }

    system("pause");
    return 0;
}
Приблизительно*. Извини, не мог не влезть.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
приблезительно, там смотреть уже нужно.
стоит сказать что сама идея блока апи тупая, гораздо лучше перехватывать и дампить читы, а потом себе на серв сборки слать и фиксить.
Код:
Expand Collapse Copy
#include <TlHelp32.h>
#include <psapi.h>
#pragma comment( lib, "psapi.lib")

char* GetModulePatchByName(HANDLE hProcess, char* module_name)
{
    HMODULE hMods[1024];
    DWORD cbNeeded;
    CHAR szModName[MAX_PATH];

    if (K32EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
    {
        for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
        {
            if (K32GetModuleFileNameExA(hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR)))
            {
                if (strstr(szModName, module_name))
                {
                    break;
                }
            }
        }
    }
    return szModName;
}

bool BlockAPI_mono(HANDLE hProcess, char* api_name)
{
    CHAR _asm_ret[] = { 0xC3 };

    char* mono_patch = GetModulePatchByName(hProcess, "mono.dll");
  
    if (mono_patch == NULL)
        return false;

    HMODULE mono_lib = LoadLibraryA(mono_patch);

    if (mono_lib == NULL)
        return false;

    FARPROC func = GetProcAddress(mono_lib, api_name);

    if (func == NULL)
        return false;

    DWORD dwOldProtect = 0;
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), PAGE_EXECUTE_READWRITE, &dwOldProtect);
    bool write = WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(func), reinterpret_cast<LPCVOID>(_asm_ret), sizeof(_asm_ret), 0);
    VirtualProtectEx(hProcess, reinterpret_cast<LPVOID>(func), sizeof(_asm_ret), dwOldProtect, &dwOldProtect);

    return write;
}
int main()
{
    HANDLE hProcess = GetCurrentProcess();

    if (BlockAPI_mono(hProcess, "mono_get_root_domain")
        && BlockAPI_mono(hProcess, "mono_thread_attach")
        && BlockAPI_mono(hProcess, "mono_assembly_open")
        && BlockAPI_mono(hProcess, "mono_assembly_get_image")
        && BlockAPI_mono(hProcess, "mono_class_from_name")
        && BlockAPI_mono(hProcess, "mono_class_get_method_from_name")
        && BlockAPI_mono(hProcess, "mono_runtime_invoke"))
    {
        printf("mono inject fixed!\n");
    }
    else
    {
        printf("no!\n");
    }

    system("pause");
    return 0;
}

Дампить я могу - но если указать mono image в чите,то dll уже не дампиться
 
Дампить я могу - но если указать mono image в чите,то dll уже не дампиться
да ты просто можешь из кода подписаться на событие загрузки сборки в домен через event, а там уже мосив байт сборки будет готовый)))))) чекать по хешу, цифровой подписи, мета данным. чему угодно. что за игра?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
да ты просто можешь из кода подписаться на событие загрузки сборки в домен через event, а там уже мосив байт сборки будет готовый)))))) чекать по хешу, цифровой подписи, мета данным. чему угодно. что за игра?
rust legacy
 
сам екземпол
Код:
Expand Collapse Copy
using System.Reflection;

//наша функция
static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку которая
            //грузится в домен, просмотри класс Assembly
        }
подписка:
Код:
Expand Collapse Copy
AppDomain dom = AppDomain.CurrentDomain;
            dom.AssemblyLoad += myAssemblyLoadEventHandler;

так моно инжекты палят изи
 
типо пиратка у тебя? или сервак свой делаешь? можно сборки пропатчить и жить на здоровье. а если лень, навесной античит расписать какой нить простой.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
сам екземпол
Код:
Expand Collapse Copy
using System.Reflection;

//наша функция
static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку которая
            //грузится в домен, просмотри класс Assembly
        }
подписка:
Код:
Expand Collapse Copy
AppDomain dom = AppDomain.CurrentDomain;
            dom.AssemblyLoad += myAssemblyLoadEventHandler;

так моно инжекты палят изи
 

типо пиратка у тебя? или сервак свой делаешь? можно сборки пропатчить и жить на здоровье. а если лень, навесной античит расписать какой нить простой.
сервера свой делаю - хочу поднять старую игру и добавить например тех же патрульных нпс например.Но была проблема с обноружением читом - вот кстати код,который прячет dll от дампа

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



В каком смысле сборки пропатчить?
 
сервера свой делаю - хочу поднять старую игру и добавить например тех же патрульных нпс например.Но была проблема с обноружением читом - вот кстати код,который прячет dll от дампа
В каком смысле сборки пропатчить?
в прямом, модифицировать файлы игры, и добавить туда свой код.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в прямом, модифицировать файлы игры, и добавить туда свой код.
Ну так это я и так делаю - тех же нпс загружаю.
Можешь поделиться информацией как дампнуть такие dll?который с кодом который я скинул

Ну или как загруженную dll превратить в байты из event
 
Н
Ну или как загруженную dll превратить в байты из event
Код:
Expand Collapse Copy
     static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку
            byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
        }
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
     static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку
            byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
        }
Уже из памяти додумались грузить
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кстати тот дампер то же не дампит dll с Monoimage
ахах) парси через Reflection типы) и листом высылай себе)

если там будет поле функция, или чтото еще, содержащее не нужные тебе слова, допустим хак, валхак, флайхак и так далее, можешь делать выводы.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ахах) парси через Reflection типы) и листом высылай себе)

если там будет поле функция, или чтото еще, содержащее не нужные тебе слова, допустим хак, валхак, флайхак и так далее, можешь делать выводы.
чет я намутил - при инжекте вообще вылетает :D

  1. public static void Test()
  2. {
  3. AppDomain dom = AppDomain.CurrentDomain;
  4. dom.AssemblyLoad += Dom_AssemblyLoad;
  5. }
  6. private static void Dom_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
  7. {
  8. Assembly loading = args.LoadedAssembly;
  9. byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
  10. File.WriteAllBytes("D:\\ " + Path.GetRandomFileName() + ".dll", buffer);
  11. UnityEngine.Debug.Log(loading.CodeBase);
  12. UnityEngine.Debug.Log(loading.DefinedTypes);
  13. UnityEngine.Debug.Log(loading.EscapedCodeBase);
  14. UnityEngine.Debug.Log(loading.ExportedTypes);
  15. UnityEngine.Debug.Log(loading.Location);
  16. }
 
чет я намутил - при инжекте вообще вылетает :D

  1. public static void Test()
  2. {
  3. AppDomain dom = AppDomain.CurrentDomain;
  4. dom.AssemblyLoad += Dom_AssemblyLoad;
  5. }
  6. private static void Dom_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
  7. {
  8. Assembly loading = args.LoadedAssembly;
  9. byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
  10. File.WriteAllBytes("D:\\ " + Path.GetRandomFileName() + ".dll", buffer);
  11. UnityEngine.Debug.Log(loading.CodeBase);
  12. UnityEngine.Debug.Log(loading.DefinedTypes);
  13. UnityEngine.Debug.Log(loading.EscapedCodeBase);
  14. UnityEngine.Debug.Log(loading.ExportedTypes);
  15. UnityEngine.Debug.Log(loading.Location);
  16. }
try ... catch, file.exits
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нашел из за чего - у пути было file:///

Слушай последний вопрос - не подскажешь как это на C# сделать?

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



В на C# - dll реально не чем не открывается из декомпиляторов
 
просто под личный хайд скинь дллку
 
нашел из за чего - у пути было file:///

Слушай последний вопрос - не подскажешь как это на C# сделать?



В на C# - dll реально не чем не открывается из декомпиляторов
мап файл открывай и читай)
 
Назад
Сверху Снизу