1

古い C++ コードをリバース エンジニアリングしていますが、通常の C++ コードからどのように達成できるか理解できないものを見つけました。DLL からの関数シグネチャは、public: void __thiscall MyClass::MyClass(int).

MS のドキュメントから、__thiscall関数にthisは ECX レジスタを使用して渡される非静的メソッドのメンバーがあります。さて、この特定の関数は、ECX レジスターの受け渡しを正しく使用しますが、逆アセンブルされたコードから、最初のパラメーターはint引数ではなく、オブジェクトへのポインターでもあります。

これは、DLL のパブリック名からわかることです。

void __thiscall MyClass::MyClass(int);  
main() {  
  MyClass *pmc;  
  MyClass *pmc2;  
  pmc = new MyClass(pmc2,0);  
}

したがって、この場合、コンストラクター (および他のメソッドも) は次のように定義されているようです。

void __thiscall MyClass:MyClass(MyClass *arg0, int arg1)

このようなことをどのように達成できるかについてのアイデアはありますか?

4

1 に答える 1