按值返回/按值调用内部结构

逆向工程 C++ dll注入
2021-06-23 00:29:56

各位专家,晚上好。

我正在摆弄一些东西,现在我被卡住了。

我想修改应用程序的行为(Windows 7,64 位)。因此,我将一个 DLL 注入正在运行的进程中以生成一个新线程,然后动态找出我打算调用的某个函数的地址。

为了方便起见,我有一个函数指针 typedef 来调用它。它看起来像这样:

typedef ReturnType (*certain_function)(void* this);

ReturnType是一个我不知道的类。我需要将ReturnType类型的返回值传递给另一个函数。

typedef void (*another_function) (ReturnType);

ReturnType 既不是原始类型也不是指针,它是一个我没有定义的类。

我不需要和班级一起工作,因此我真的不需要知道它是什么样子。

我的问题是: 显然,我必须自己定义ReturnType,例如:

class ReturnType {
    public:
        uint8_t padding[?];
};

但它必须有多精确?我可以只使用一个非常大的值吗?这肯定会为类对象提供足够的内存,还是大小必须准确?如何在 ASM 级别完成按值返回/按值调用?堆栈上的完整对象?

1个回答