LoadLibrary Detect

Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
приблезительно, там смотреть уже нужно.
стоит сказать что сама идея блока апи тупая, гораздо лучше перехватывать и дампить читы, а потом себе на серв сборки слать и фиксить.
Код:
#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;
}
 
Главный модератор
Главный Модератор
Статус
Оффлайн
Регистрация
2 Апр 2017
Сообщения
2,544
Реакции[?]
1,203
Поинты[?]
41K
приблезительно, там смотреть уже нужно.

Код:
#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;
}
Приблизительно*. Извини, не мог не влезть.
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
приблезительно, там смотреть уже нужно.
стоит сказать что сама идея блока апи тупая, гораздо лучше перехватывать и дампить читы, а потом себе на серв сборки слать и фиксить.
Код:
#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 уже не дампиться
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Дампить я могу - но если указать mono image в чите,то dll уже не дампиться
да ты просто можешь из кода подписаться на событие загрузки сборки в домен через event, а там уже мосив байт сборки будет готовый)))))) чекать по хешу, цифровой подписи, мета данным. чему угодно. что за игра?
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
да ты просто можешь из кода подписаться на событие загрузки сборки в домен через event, а там уже мосив байт сборки будет готовый)))))) чекать по хешу, цифровой подписи, мета данным. чему угодно. что за игра?
rust legacy
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
сам екземпол
Код:
using System.Reflection;

//наша функция
static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку которая
            //грузится в домен, просмотри класс Assembly
        }
подписка:
Код:
AppDomain dom = AppDomain.CurrentDomain;
            dom.AssemblyLoad += myAssemblyLoadEventHandler;
так моно инжекты палят изи
 
типо пиратка у тебя? или сервак свой делаешь? можно сборки пропатчить и жить на здоровье. а если лень, навесной античит расписать какой нить простой.
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
сам екземпол
Код:
using System.Reflection;

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

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

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



В каком смысле сборки пропатчить?
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
сервера свой делаю - хочу поднять старую игру и добавить например тех же патрульных нпс например.Но была проблема с обноружением читом - вот кстати код,который прячет dll от дампа
В каком смысле сборки пропатчить?
в прямом, модифицировать файлы игры, и добавить туда свой код.
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в прямом, модифицировать файлы игры, и добавить туда свой код.
Ну так это я и так делаю - тех же нпс загружаю.
Можешь поделиться информацией как дампнуть такие dll?который с кодом который я скинул

Ну или как загруженную dll превратить в байты из event
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Н
Ну или как загруженную dll превратить в байты из event
Код:
     static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку
            byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
        }
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
     static void myAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
        {
            Assembly loading = args.LoadedAssembly;
            //вот тут можешь разбирать сборку
            byte[] buffer = System.IO.File.ReadAllBytes(loading.CodeBase);
        }
Уже из памяти додумались грузить
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Кстати тот дампер то же не дампит dll с Monoimage
ахах) парси через Reflection типы) и листом высылай себе)

если там будет поле функция, или чтото еще, содержащее не нужные тебе слова, допустим хак, валхак, флайхак и так далее, можешь делать выводы.
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ахах) парси через 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. }
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
чет я намутил - при инжекте вообще вылетает :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
 
Забаненный
Статус
Оффлайн
Регистрация
12 Май 2017
Сообщения
375
Реакции[?]
11
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нашел из за чего - у пути было file:///

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

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



В на C# - dll реально не чем не открывается из декомпиляторов
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
просто под личный хайд скинь дллку
 
нашел из за чего - у пути было file:///

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



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