我正在尝试从注入的Dll中访问char *。 但不知何故,它不想printf()...... 指针是正确的,我今天早些时候打印它(使用了一些奇怪的格式)。
有效(所以指针一定是错的吗?):
char* TestStr = "dsds";
printf("%s \n", TestStr);
不起作用:
int ClientDll = (int)GetModuleHandleA("client.dll");
int RadarBase = *(int*)(ClientDll + 0x4E8395C);
int Temp = *(int*)(RadarBase + 0x14);
int LastText = *(int*)(Temp + 0x11C);//Getting the right pointer from memory
printf("%s \n", (char*)LastText );
答案 0 :(得分:0)
首先,确保你拥有的那些偏移量(0x ....)是正确的。在添加整数指针的上下文中,它们将按适当的因子即,四个来扩展。如果那些应该是表示文字字节偏移的硬常量,那么你将不适当地将它们中的每一个乘以4(假设32位整数)。
最重要的是,所有这些废话与int * this和int *以及无尽的铸件在这里和那里?如果你想要的只是一个特定地址,即来自某个基地址的0xThisMany + 0xThatMany + 0xNextGap字节,那么你应该将它们加在一起并进行一次计算。
这可能是你的困难的第一个,也是最重要的。
答案 1 :(得分:0)
这是一个广泛的焦点。我不得不使用%ls
。