Привет, у меня такая проблема; Я хочу вызывать функции из процесса с моей вложенной DLL, но я хотел бы иметь возможность изменять адрес функции, поскольку адреса отличаются от каждой версии программы.
В основном я получил DllMain, что привело к созданию нового потока, который делает то же, что и в этом главном примере.
typedef void (*func_t)();
func_t func = (func_t)0x2000; //as an example
int main(int argc, char* argv[]) {
int type = 1;
if(type == 0) {
*func = 0x2001; //altough *(int*)func = 0x2001; works but it doesn't change it
}
func(); //func will do the same in each version of the program except the addresses change so you can e.g change the type with cin >> type; and that'll it work
}
Я получаю следующее: ошибка: назначение местоположения только для чтения '* func
благодаря
*func = 0x2001;
Вы, вероятно, хотите сделать обратное. вместо func
*func
func
вместо *func
. Например, это будет работать:
func = (func_t)0x2001;