It doesn't alter the login in any ways. Are you sure you weren't using CIDProxy before and now you have the decrypted server.dat file with local ips set?
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#pragma comment(lib, "User32.lib")
using namespace std;
void FillWithNops(HANDLE hwnd, UINT baseaddrs, int count);
int main(int argc, char* args) {
STARTUPINFO* sInfo = new STARTUPINFO();
PROCESS_INFORMATION* pInfo = new PROCESS_INFORMATION();
HMODULE hInstance = GetModuleHandle(NULL);
if(CreateProcess(L"Conquer.exe", NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, sInfo, pInfo) == 0) {
MessageBoxA(NULL, "Conquer.exe was not found, are you sure loader is in right folder?", "[Conquer Loader]", 0);
return 0;
}
WaitForInputIdle(pInfo->hProcess, 0);
//
BYTE DirectRun[] = { 0xEB, 0x41 };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00482B80, &DirectRun, sizeof(DirectRun), NULL);
BYTE DisableScanner[] =
{
0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90, 0x90, 0x90, 0x90,
0x90, 0x90
};
//
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00482AE5, &DisableScanner, sizeof(DisableScanner), NULL);
//
BYTE DisablePopup[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00495C4F, &DisablePopup, sizeof(DisablePopup), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00495701, &DisablePopup, sizeof(DisablePopup), NULL);
//
BYTE HighJump[] = { 0xEB, 0x1E };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C63FD, &HighJump, sizeof(HighJump), NULL);
//
BYTE Multiclient[] = { 0x6A, 0x7F };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00484927, &Multiclient, sizeof(Multiclient), NULL);
//
BYTE EnableCommands[] = { 0xEB, 0x17 };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C66FF, &EnableCommands, sizeof(EnableCommands), NULL);
#pragma region /unequip
BYTE DisableChecks[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A323, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A34B, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A373, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A39B, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A3C3, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A3EB, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A413, &DisableChecks, sizeof(DisableChecks), NULL);
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A43B, &DisableChecks, sizeof(DisableChecks), NULL);
BYTE Command[] = { 0x75, 0x6E, 0x65, 0x71, 0x75, 0x69, 0x70 };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x005CB424, &Command, sizeof(Command), NULL);
BYTE DisableLeftHand[] = { 0xEB, 0x1B };
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004D43EF, &DisableLeftHand, sizeof(DisableLeftHand), NULL);
BYTE CALLS[] =
{
0xE8, 0xA8, 0x3B, 0xF9, 0xFF,
0xE8, 0xCB, 0x3B, 0xF9, 0xFF,
0xE8, 0xEE, 0x3B, 0xF9, 0xFF,
0xE8, 0x11, 0x3C, 0xF9, 0xFF,
0xE8, 0x34, 0x3C, 0xF9, 0xFF,
0xE8, 0x57, 0x3C, 0xF9, 0xFF,
0xE8, 0x7A, 0x3C, 0xF9, 0xFF,
0xE8, 0x9D, 0x3C, 0xF9, 0xFF,
};
WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C6774, &CALLS, sizeof(CALLS), NULL);
FillWithNops(pInfo->hProcess, 0x004C679C, 52);
#pragma endregion
return EXIT_SUCCESS;
}
void FillWithNops(HANDLE hwnd, UINT baseaddr, int count) {
BYTE NOP = 0x90;
for(int i = 0; i < count; i++) {
WriteProcessMemory(hwnd, (LPVOID)(baseaddr + i), &NOP, 1, NULL);
}
}
Oops forgot to respond, I havnt checked in olly but I bet youre calling the xor. :)Quote:
Well for the unequip I just replaced the existing command "srcshot" or whatever it was with "unequip"
You have to nop those checks inside each unequip function ,_, (one function per item, stupid TQ could have just taken the slot id as param, lol) I suppose it checks whether it was a custom call or actually a game call.Code:#include "stdafx.h" #include <windows.h> #include <iostream> #pragma comment(lib, "User32.lib") using namespace std; void FillWithNops(HANDLE hwnd, UINT baseaddrs, int count); int main(int argc, char* args) { STARTUPINFO* sInfo = new STARTUPINFO(); PROCESS_INFORMATION* pInfo = new PROCESS_INFORMATION(); HMODULE hInstance = GetModuleHandle(NULL); if(CreateProcess(L"Conquer.exe", NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, sInfo, pInfo) == 0) { MessageBoxA(NULL, "Conquer.exe was not found, are you sure loader is in right folder?", "[Conquer Loader]", 0); return 0; } WaitForInputIdle(pInfo->hProcess, 0); // BYTE DirectRun[] = { 0xEB, 0x41 }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00482B80, &DirectRun, sizeof(DirectRun), NULL); BYTE DisableScanner[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; // WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00482AE5, &DisableScanner, sizeof(DisableScanner), NULL); // BYTE DisablePopup[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00495C4F, &DisablePopup, sizeof(DisablePopup), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00495701, &DisablePopup, sizeof(DisablePopup), NULL); // BYTE HighJump[] = { 0xEB, 0x1E }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C63FD, &HighJump, sizeof(HighJump), NULL); // BYTE Multiclient[] = { 0x6A, 0x7F }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x00484927, &Multiclient, sizeof(Multiclient), NULL); // BYTE EnableCommands[] = { 0xEB, 0x17 }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C66FF, &EnableCommands, sizeof(EnableCommands), NULL); #pragma region /unequip BYTE DisableChecks[] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A323, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A34B, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A373, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A39B, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A3C3, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A3EB, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A413, &DisableChecks, sizeof(DisableChecks), NULL); WriteProcessMemory(pInfo->hProcess, (LPVOID)0x0045A43B, &DisableChecks, sizeof(DisableChecks), NULL); BYTE Command[] = { 0x75, 0x6E, 0x65, 0x71, 0x75, 0x69, 0x70 }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x005CB424, &Command, sizeof(Command), NULL); BYTE DisableLeftHand[] = { 0xEB, 0x1B }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004D43EF, &DisableLeftHand, sizeof(DisableLeftHand), NULL); BYTE CALLS[] = { 0xE8, 0xA8, 0x3B, 0xF9, 0xFF, 0xE8, 0xCB, 0x3B, 0xF9, 0xFF, 0xE8, 0xEE, 0x3B, 0xF9, 0xFF, 0xE8, 0x11, 0x3C, 0xF9, 0xFF, 0xE8, 0x34, 0x3C, 0xF9, 0xFF, 0xE8, 0x57, 0x3C, 0xF9, 0xFF, 0xE8, 0x7A, 0x3C, 0xF9, 0xFF, 0xE8, 0x9D, 0x3C, 0xF9, 0xFF, }; WriteProcessMemory(pInfo->hProcess, (LPVOID)0x004C6774, &CALLS, sizeof(CALLS), NULL); FillWithNops(pInfo->hProcess, 0x004C679C, 52); #pragma endregion return EXIT_SUCCESS; } void FillWithNops(HANDLE hwnd, UINT baseaddr, int count) { BYTE NOP = 0x90; for(int i = 0; i < count; i++) { WriteProcessMemory(hwnd, (LPVOID)(baseaddr + i), &NOP, 1, NULL); } }
Anyways there's the code for it xD
00482AE5 /EB 0F JMP SHORT Conquer.00482AF6
00495618 /E9 EA000000 JMP Conquer.00495707 00495B66 /E9 EA000000 JMP Conquer.00495C55