const DWORD PatchlenecekXignAddr1 = 0xadres;
const DWORD PatchlenecekXignAddr2 = 0xadres;
const DWORD PatchlenecekXignAddr3 = 0xadres;
const DWORD PatchlenecekXignAddr4 = 0xadres;
const DWORD CreateFileAdress1 = 0xadres;
const DWORD CreateFileAdress2 = 0xadres;
const DWORD ReadFileAdress1 = 0xadres;
const DWORD ReadFileAdress2 = 0xadres;
const DWORD SetFilePointerAdress1 = 0xadres;
BYTE XigncodePatch1 [] = { 0xE9,0xAD,0x00,0x00,0x00,0x90 };
BYTE XigncodePatch2 [] = { 0xEB, 0x0D };
BYTE XigncodePatch3 [] = { 0xEB, 0x23 };
BYTE XigncodePatch4 [] = { 0xEB, 0x5B };
VirtualPatch(DWORD MemAddr, BYTE* MemVal)
{
memcpy((void*)MemAddr,MemVal,sizeof(MemVal));
}
void VirtualFunction(DWORD CurFunction , DWORD NewFunction)
{
*(DWORD*)(CurFunction) = NewFunction;
}
void XigncodeThread() {
while (!FindWindow(NULL,"wolftü"))
{
VirtualPatch(PatchlenecekXignAddr1,XigncodePatch1);
VirtualFunction(CreateFileAdress1,(DWORD)CreateFileA);
VirtualFunction(ReadFileAdress1, (DWORD)ReadFile);
VirtualFunction(CreateFileAdress2,(DWORD)CreateFileA);
VirtualFunction(ReadFileAdress2,(DWORD)ReadFile);
VirtualFunction(SetFilePointerAdress1,(DWORD)SetFilePointer);
Sleep(100);
}
VirtualPatch(PatchlenecekXignAddr2,XigncodePatch2);
VirtualPatch(PatchlenecekXignAddr3,XigncodePatch3);
VirtualPatch(PatchlenecekXignAddr4,XigncodePatch4);
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)XigncodeThread, 0, 0, 0);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}