【发布时间】:2016-04-03 08:50:56
【问题描述】:
当我进行 dll 注入时,我在尝试写入指向内存进程中的 double 的指针时遇到了这个问题。
这是我的课:
class SpeedHack : public MasterClass {
private:
SpeedHack() {};
struct Speed { double speed; };
public:
Speed* getAddy()
{
return (Speed*)(address);
}
bool isSpeedAtkon = false;
void writeMem()
{
getAddy()->speed = 3.1;
}
static SpeedHack& get()
{
static SpeedHack instance;
return instance;
}
};
//address is 0x767650 and value is a double 0.300000
我还有其他类似的课程和所有其他工作,但我在结构中从来没有双重(仅在这个课程中)
应用程序崩溃一旦我尝试调用 writeMemory() 方法...来自其他类的其他结构即使它们更复杂也总是可以工作...
记录这个:Logger::log("%f", SpeedHack::get().getAddy()->speed);按预期返回 0.300000 并记录地址返回正确的地址...
所以我不知道我做错了什么...(一旦我尝试更改此地址的双精度值,应用程序就会崩溃)...有人知道我该如何解决吗?
【问题讨论】:
-
我假设“双指针”实际上是指 to 一个
double(而不是例如sometype **)的指针? -
是的,对不起,我不是以英语为母语的人
-
如何程序崩溃了?因为您没有对该值的写入权限,或者因为 3.1 是一个不正确的值?还是别的什么?
-
我当然没有写权限...但是当我尝试使用内存编辑器时,它运行良好(作弊引擎)。这个程序告诉我地址是可写的,我尝试从作弊引擎更改为 3.1 也可以
标签: c++ pointers memory dll double