[解決済み] HMODULEとは?
質問事項
ちょっとした問題があります。DLLをプロセスにロードし(それは私のものではありません)、私はその中の関数を使用する必要があります。私はこの関数へのオフセットを持っているので、私がしなければならないことは、DLLのアドレスを取得し、関数に到達するためのオフセットをそれに追加することです。
GetModuleHandle()
リターン
HMODULE
という変数がありますが、実は
HMODULE
とは何ですか?ロードされたDLLのアドレスなのか、それとも他のマークなのか?
また、DLLがロードされている場所のアドレスでない場合、このアドレスはどのように取得すればよいのでしょうか?私は自分自身を明確にすることを願っています。
解決方法は?
ご指摘の方法で問題ありません。
ターゲットプロセスにDLLを注入し、DLLを注入したプロセスからターゲットプロセス内のそのDLL内の関数のアドレスを取得したいようです。
また、ターゲットプロセスにDLLを注入したプロセスでDLLをロードし、ターゲットプロセスでリモートスレッドを作成し、ターゲットプロセスでターゲット関数を実行させたいのだと思います。
注入した dll が注入元プロセスと同じアドレスにロードされているとは限らないので、注入元プロセスの関数で GetProcAddress を呼び出して得られるアドレスをそのまま使用することはできません。
HMODULE は、DLL のベースアドレスに過ぎません ( この回答 をご覧ください)。したがって、注入するプロセスのDLLのHMODULEを取り、あなたの関数のGetProcAddressが返すアドレスからそれを引くことができます。次に、ターゲットプロセス内の注入されたDLLのHMODULEをこのオフセットに追加すると、ターゲットプロセス内の注入されたDLLのターゲット関数のアドレスが得られます。この関数が正しいシグネチャを持っていると仮定して、リモートスレッドを作成する呼び出しにスレッド関数としてこれを渡すと、ターゲットプロセスでターゲット関数が実行されることになります。
で詳しく説明しています。 この回答 .
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません