从注入的 DLL 中调用 thiscall 方法

逆向工程 dll注入 调用约定
2021-06-17 00:08:28

我正在尝试创建一个(32 位)DLL 以注入到目标进程中。

我的 DLL 应该在原始进程中调用一个函数。到目前为止没有什么特别的,但是目标函数使用 thiscall 调用约定。

我正在尝试使用我自己的假类对象。该方法仅在此类对象中设置一些变量。

我的尝试:

class HashClass
{
public:
    byte data[1024];
    LPVOID HashFunc(float, char, char);
};

typedef LPVOID (HashClass::*HASHFUNC)(float, char, char);

HASHFUNC *HashFunc = (HASHFUNC *) 0xD34DB33F;

void CallHashFunction()
{
   HashClass *hashClass = new HashClass();
   (hashClass->*HashFunc)(1.0f, 'a', 'b');  // Getting an error here
}

最好和最简单的方法是什么?

我得到的错误:

Error   1   error C2297: '.*' : illegal, right operand has type 'HASHFUNC *'
        2   IntelliSense: expression must have pointer-to-member type
1个回答

你得到什么错误?

尝试这样的事情:

class HashClass
{
public:
    byte data[1024];
    LPVOID HashFunc(float, char, char);
};

typedef LPVOID (HashClass::*HASHFUNC)(float, char, char);

 HASHFUNC *HashFunc = (HASHFUNC *) 0xD34DB33F;

 void CallHashFunction()
 {
    HashClass *hashClass = new HashClass();
    (*hashClass.*HashFunc)(1.0f, 'a', 'b');
 }