Doc Flabby wrote: |
Also you can also change the splash screen by creating splash.bm2 and putting it in the graphics folder ![]() |
Quote: |
I still distribute a patched version of continuum with the correct directory servers as default. This version has a patched version of menu040.dll.
Comparing the files, this version only has a modified menures.dll. This file contains all the resources for the menus and dialogs, but contains no code logic. |
Snrrrub wrote: |
While you're free to change the resources, you won't be able to modify the DLL's code. There's a check against a checksum in Continuum.exe. If you want to disable that check, you're going to have to modify Continuum.exe in addition to menu40.dll. Even if you manage to do all of that, you won't be able to log in to any zones because the executable checksum is sent to the server and the server rejects you if there's a mismatch.
-Snrrrub |
Samapico wrote: |
resource hackers and/or hex-editing programs, I suppose |
Code: Show/Hide #include <windows.h>
#define AboutBox() MessageBox(NULL,"Made by hellzlaker@hotmail.com\n\nF1 - About box...\nF2 - Speed hack with messages (sucks)\nF3 - Speed hack without messages (good)\nF4 - Freeze\nF5 - Turn off Speed Hack/Freeze","About conthack40.dll",0); #define gKey(a) if(GetAsyncKeyState(a)) DWORD OldProt; DWORD SpeedAddr = 0x0042D1FA; BYTE SpeedWithMSG[] = {0x89, 0x9E, 0x40, 0x5A, 0x00, 0x00}; BYTE SpeedWithoutMSG[] = {0x0f, 0x84, 0x66, 0xe9, 0xe9, 0x78}; BYTE Freeze[] = {0x89, 0xb6, 0x40, 0x5a, 0x00, 0x00}; BYTE NoSpeed[] = {0x89, 0xbe, 0x40, 0x5a, 0x00, 0x00}; void t() { while(1) { gKey(VK_F1) { AboutBox(); Sleep(1000); } gKey(VK_F2) { VirtualProtect((void*)SpeedAddr, sizeof(SpeedWithMSG), PAGE_EXECUTE_READWRITE, &OldProt); memcpy((void*)SpeedAddr, (void*)&SpeedWithMSG, sizeof(SpeedWithMSG)); VirtualProtect((void*)SpeedAddr, sizeof(SpeedWithMSG), OldProt, &OldProt); } gKey(VK_F3) { VirtualProtect((void*)SpeedAddr, sizeof(SpeedWithoutMSG), PAGE_EXECUTE_READWRITE, &OldProt); memcpy((void*)SpeedAddr, (void*)&SpeedWithoutMSG, sizeof(SpeedWithoutMSG)); VirtualProtect((void*)SpeedAddr, sizeof(SpeedWithoutMSG), OldProt, &OldProt); } gKey(VK_F4) { VirtualProtect((void*)SpeedAddr, sizeof(Freeze), PAGE_EXECUTE_READWRITE, &OldProt); memcpy((void*)SpeedAddr, (void*)&Freeze, sizeof(Freeze)); VirtualProtect((void*)SpeedAddr, sizeof(Freeze), OldProt, &OldProt); } gKey(VK_F5) { VirtualProtect((void*)SpeedAddr, sizeof(NoSpeed), PAGE_EXECUTE_READWRITE, &OldProt); memcpy((void*)SpeedAddr, (void*)&NoSpeed, sizeof(NoSpeed)); VirtualProtect((void*)SpeedAddr, sizeof(NoSpeed), OldProt, &OldProt); } } } extern "C" { __declspec(dllexport) BOOL __stdcall DllMain(HINSTANCE hInst,DWORD reason,LPVOID lpv) { DisableThreadLibraryCalls(hInst); if(reason == DLL_PROCESS_ATTACH) { AboutBox(); CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&t,0 ,NULL,NULL); return TRUE; } if(reason == DLL_PROCESS_DETACH) { ExitThread(0); } return true; } } |