您好我遇到了这个问题;我想用我注入的DLL调用进程中的函数,但是我希望能够更改函数的地址,因为地址与每个程序版本不同。
基本上我得到了DllMain,因此制作了一个新的Thread,其功能与此主要示例相同。
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
谢谢
答案 0 :(得分:1)
*func = 0x2001;
你可能想要做相反的事情。将func
而不是*func
更改为该函数的地址。例如,这将起作用:
func = (func_t)0x2001;