Я в процессе реинжиниринга исполняемого файла Windows. Я нашел класс, который хочу использовать из некоторого кода, который я вставляю в исполняемый файл (другой поток, собственный стек). Как мне объявить такой класс, учитывая адреса методов и структуру переменных-членов?
Например, допустим, я нашел класс с именем foo, с его конструктором @ 0x4012D30 и функцией doTheMario @ 40125D4. Я также знаю, что он содержит три DWORD личных данных. Поскольку оба метода являются _thiscalls, я объявляю класс в своем коде следующим образом:
class GuessedFoo {
private:
int bar;
char *cafebabe;
float deadbeef;
public:
GuessedFoo(int a, int b);
void doTheMario();
};
Так вот, это совершенно отличный класс, но теперь есть ли способ заставить компилятор / компоновщик связать методы класса с двумя предыдущими адресами, которые я указал? Конечно, я могу написать оболочку asm для преобразования stdcall в thiscall для каждого метода, который мне нужно использовать, и затем использовать структуры вместо классов, но должен быть лучший способ.
В данный момент я использую gcc / g ++, но я могу переключиться на VC ++ (поскольку встроенный ассемблер gcc в любом случае вызывает у меня головную боль).