// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
#include "patcher_x86.hpp"
#include "era.h"
#pragma warning( disable : 4996)
using namespace Era;
Patcher* globalPatcher;
// Читаем конфигурационный файл и проходимся по списку патчей.
void __stdcall ReadINI_AndRemove(TEvent* e)
{
// Основной буфер.
char buf[30];
// Узнаем количество патчей, которые необходимо удалить.
ReadStrFromIni("Count", "Main", "Pointer List.ini", buf);
// Превращаем строку в число.
int count = atoi(buf);
// Если количество больше нуля.
if (count > 0)
{
// Имя ключа.
char name[30];
// Цикл, в котором производится перебор всех адресов.
for (size_t i = 0; i < count; i++)
{
// Собираем имя ключа из текста и индекса.
sprintf(name, "Pointer%d", i);
// Читаем строку.
ReadStrFromIni(name, "Main", "Pointer List.ini", buf);
// Превращаем в число.
int adress = atoi(buf);
// Если адрес действительный.
if (adress > 0x400000)
{
// Удаляем все патчи.
globalPatcher->UndoAllAt(adress);
}
}
}
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
globalPatcher = GetPatcher();
ConnectEra();
// Читаем конфигурационный файл и проходимся по списку патчей.
RegisterHandler(ReadINI_AndRemove, "OnAfterCreateWindow");
/*case :
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;*/
}
return TRUE;
}