小编Rip*_*ide的帖子

C++ - unique_ptr 的转换/更改类型

编辑:谢谢,一如既往的惊人帮助:)

我找不到解决方案,我有一个基类的 unique_ptr,它具有派生类的数据,并且我想将其类型设置为派生类,以便我可以访问派生成员。看这段代码:

#include <memory>
#include <iostream>

class Base
{
public:
    int v1 = 0xAAAAAAAA;
};

class Derived : public Base
{
public:
    int v2 = 0xBBBBBBBB;
};

int main()
{

    std::unique_ptr<Base> b1(new Derived); //How to access b1->v2 ?
    std::unique_ptr<Base> b2(new Base);


    std::getchar(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

b1 的类型是 Base,但它的数据包含 Derived 的数据。看:

问题的屏幕截图。 我们可以看到Derived对应的数据字节

很难得到吗?我想过操纵内存字节,比如说 [b1+4] (伪思想)并访问它,但我想到了复杂的对象,因为我正在为游戏做一个实体系统,我不能这样做:(

谢谢 !

c++ types pointers unique-ptr

5
推荐指数
1
解决办法
8819
查看次数

如何找到具有负偏移的基础结构地址

我使用CE对旧游戏进行逆向工程.我找到了修改单元HP的代码,但我找不到基址,因为偏移是负的.

操纵杆:

问题是我甚至不知道它是如何工作的,这对我来说听起来很愚蠢,为什么编译器/ dev会这样做呢?它是一种堆栈临时指针吗?有没有办法找到它?(我很确定有一种方法)这是令人沮丧的,因为我发现像ID,HP和东西的偏移,但基础...我通常没有问题,抵消是积极的.

我认为基地将是一些东西[esi-STRUCTURE_SIZE] ,最后一项将是[esi]

或者也许我完全错了.

谢谢 :)

assembly reverse-engineering cheat-engine

5
推荐指数
1
解决办法
630
查看次数