来自char *的printf无效VS2013 C ++

时间:2016-07-03 00:26:31

标签: c++ string char

我正在尝试从注入的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 );

2 个答案:

答案 0 :(得分:0)

首先,确保你拥有的那些偏移量(0x ....)是正确的。在添加整数指针的上下文中,它们将按适当的因子,四个来扩展。如果那些应该是表示文字字节偏移的硬常量,那么你将不适当地将它们中的每一个乘以4(假设32位整数)。

最重要的是,所有这些废话与int * this和int *以及无尽的铸件在这里和那里?如果你想要的只是一个特定地址,即来自某个基地址的0xThisMany + 0xThatMany + 0xNextGap字节,那么你应该将它们加在一起并进行一次计算。

这可能是你的困难的第一个,也是最重要的。

答案 1 :(得分:0)

这是一个广泛的焦点。我不得不使用%ls