2010-12-28 11 views
1

私は.dllを別のプロセスのアドレス空間に注入しています。ターゲットアプリはQTライブラリを使用します。 QT関数 ?rowsInserted @ QListView @@ MAEXABVQModelIndex @@ HH @ Zがmy関数と呼ばれるたびに呼び出され、呼び出しが引き継がれるように、迂回路を挿入することができます。しかし、どのように渡されたパラメータにアクセスするには?rowsInserted @ QListView @@ MAEXABVQModelIndex @@ HH @ Z?この名前は文字化けしていますか?その場合、通常は何ですか?IATフック、QTライブラリ

ありがとうございました。

+0

は実際にあなたが正しく機能を迂回することはできません。それ以外の場合は、アプリをクラッシュさせます。 Qtのドキュメントを見て、このメソッドの説明を見つけてください。そして確かに、これが実際にdllからエクスポートされていることを確認する必要があります。 – Andrey

答えて

1

機能がおそらくQListView::rowsInserted(const QModelIndex &, int, int)のようです。パラメータは関数リファレンスにリストされています。

+0

グレッグさん、ありがとうございます。どうしたらいいですか、それともこれが一番近いのですか?また、名前が文字化けしていますか?心に浮かんだ別の質問は、IDAが名前を壊すことに責任があるだろうか?もう一度ありがとう。 – flavour404

+0

名前が変更された名前は 'rowsInserted @ QListView @@'で始まりました。MSVCが 'QListView'クラスの' rowsInserted'という関数の名前を変更することが分かっていました。その名前の関数は1つだけです。コンパイラがこれを行う理由(IDAではない)の詳細については、[Name mangling](http://en.wikipedia.org/wiki/Name_mangling)を参照してください。 –

1

undnameツールを使用して、関数呼び出しをデコレートすることができます。 Visual C++に付属しています。
レイモンドチェンはそれについてブログ:あなたは正確にその署名(およびx86アプリケーションのための呼び出し規約を)知っている限りUndecorating names to see why a function can't be found

C:\Program Files\Microsoft SDKs\Windows\v7.1>undname [email protected]@@[email protected]@[email protected] 

Undecoration of :- "[email protected]@@[email protected]@[email protected]" 
is :- "protected: virtual void __thiscall QListView::rowsInserted(class QModelIndex const &,int,int)" 
関連する問題