У меня есть хакерская программа; он вводит некоторые функции в целевой процесс для управления им. Программа написана на C ++ со встроенной сборкой.
class GameProcMain {
// this just a class
};
GameProcMain* mainproc; // there is no problem I can do =(GameProcMain*)0xC1EA90
Теперь я хочу определить функцию класса (которая устанавливает ecx в указатель класса) вместо написания ассемблера.
PPLYDATA GetNearblyMob(__Vector3* cordinate) {
__asm {
mov ecx, 0xC1EA90
enter code here
push cordinate
mov edi, 0x4A8010
call edi
}
}
Я хочу определить его и назвать как.
PPLYDATA (DLPL::*GetNearblyMob)(__Vector3* cordinate);
mainproc->GetNearblyMob(ADDR_CHRB->kordinat)
Когда я пытаюсь GetNearblyMob=(PPLYDATA (DLPL::*)(__Vector3*)) 0x4A8010;
Там написано что-то вроде error: invalid type conversion: "int" to "PPLYDATA (DLPL::*)(int, int)"
но я могу сделать это, чтобы установить указатель:
void initializeHack() {
__asm {
LEA edi, GetNearblyMob
MOV eax, 0x4A8010
MOV [edi], eax
}
}
Теперь я хочу узнать «как я могу установить GetNearblyMob без использования ассемблера и законно в C ++».