各位专家,晚上好。
我正在摆弄一些东西,现在我被卡住了。
我想修改应用程序的行为(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 级别完成按值返回/按值调用?堆栈上的完整对象?