問題タブ [dll-injection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1467 参照

process - Windows プロセスへのフック

アプリケーションの起動直後と終了直前にいくつかの操作を実行する必要があります (UMDH を使用したある種の自動メモリ リーク検出)。

すべてのプロセスに挿入される DLL を準備し、DLL_PROCESS_ATTACH で最初の操作を実行しています (アプリケーションの起動直後)。これで、問題のこの部分は解決されました。

問題は 2 番目の部分にあります。プロセスが終了しようとしているときに操作を実行します。

DLL_PROCESS_DETACH で試してみましたが、これでは遅すぎます。以前にフックする必要があります。

Windows フック メカニズムを使用して、WH_GETMESSAGE にフックしました。

GetMsgProc() 関数:

しかし、この方法を使用すると、WM_CLOSE メッセージのみが検出されます (「X」ボタンを使用してアプリケーションを閉じるとき)。WM_QUIT メッセージを検出しない理由がわかりません。

アプリケーションが終了しようとしているときにいくつかの操作を実行する方法はありますか?

(私は回り道について知っていますが、私のプロジェクトでは使用できません...)

0 投票する
1 に答える
4026 参照

winapi - 挿入されたDLLをターゲットプロセスからアンロードする方法、完了したらDLLからアンロードする方法は?

CreateRemoteThread/LoadLibraryメソッドを使用して自分自身を挿入するDLLがあります。

DLLのデバッグと開発時に、ターゲットアプリケーションを終了して再起動する(ロード時間は10〜20秒)のは面倒なので、コードの動作を確認したらDLLをアンロードして、再コンパイルします。 /再注入します。

上記のDLLをロードおよびアンロードするためのフレームワークを使用して新しいDLLを作成することは避けたいと思います。

これはどのように可能ですか?

0 投票する
1 に答える
171 参照

c# - フックとメインプログラムの通信

特定の機能を他のプログラムに追加したり、プログラムの動作を変更したりするためのフックの作成方法に関する情報が記載された記事が多数あります。しかし、フックからプログラムにデータを送信するにはどうすればよいかわかりません。

私の英語はあまり得意ではないので、小さな例を書きます: 私のアプリケーション (myApp) と私のアプリケーション (notMyApp) ではありません。notMyApp のチャット ウィンドウから myApp テキストにアクセスしたい。たとえば、 MHOOKを使用して notMyApp のフックを作成できます。問題は、フックから myApp にチャット テキストを送信する方法です。

パイプなどを使用する必要がありますか?

PS私はC#を使うことを好みます

0 投票する
2 に答える
1240 参照

c++ - DLLインジェクション-別のプロセス内でのネイティブコードの記述

では、 C ++ Dllインジェクションのステップ3について質問があります。つまり、次のとおりです。

CreateRemoteThread()を使用します。これをLoadLibrary()エントリポイントとして指定し、手順1と2のファイルパスを引数として指定できます。正直なところ、これは少しハッキーですが、DLLを挿入している場合は、すでにかなりハッキーになっています。もう1つの手法は、手順1と2を使用して、マシンコードをリモートプロセスにロードし、それをポイントすることです。

だから私の質問は:を使用してメモリを割り当てVirtualAllocEx、を使用してコードを記述したWriteProcessMemory後、どのように呼び出しを行うのCreateRemoteThreadですか?つまり、4番目と5番目のパラメータは何ですか?

私のコード:

0 投票する
1 に答える
1011 参照

winapi - DLL インジェクション: DLL 内で関数を呼び出す

まず、コードの一部は、注入された DLL の Calling functionからのものですが、どこかで動作しません。

DLL インジェクションに関して質問があります: ライブラリを別のプロセスにロードした後:

そのスペース内から関数を呼び出したかったのです。

は、IDA から現在の場所を返します (これGetPayloadExportAddrは、関数が開始するスペースであると思います)。

したがって、InitPayload新しいスレッドを作成しようとすると問題が発生しますが、作成に失敗し、その理由がわかりません。

私のdllは次のとおりです。

問題は、Start メソッドを DLL_PROCESS_ATTACH に配置すると機能しますが、それ以外の場合は機能しません。

0 投票する
2 に答える
1006 参照

c++ - DLLコードを保護するためのヒントはありますか?

DLL(Win32、ダイナミック)ファイルが挿入されないように保護する方法と、コンパイルされたコードのセキュリティを強化する方法について、いくつかのヒントを知りたいと思います。

  1. MySQLへの接続に使用されるDDLソースコードにはSQLパスワードがあります。それを残すのに十分安全ですか?
  2. 'ユーザー'がHEXコードを変更するのを防ぐ方法はありますか?私はソースコードからより多くを保護することを意味します。
  3. プロジェクトプロパティのどのオプションがDLLの最適化と保護に最適でしょうか?

MVSC ++2010Expressを使用しているImとユーザーへのソースコードは利用できません。

0 投票する
1 に答える
820 参照

c++ - DLL インジェクション: DrawText と TextOut がすべてのテキストを返さない

DLL をプログラムに挿入することに成功しました。ただし、ListBox から情報を取得したいと考えています。WM_GETTEXT が機能しないため、dll インジェクションを実行する必要がありました。多くのテキストを受信して​​いますが、目的のコントロールからは何も得られません。

これが私のコードです:

私の質問は: 私が見逃しているものはありますか? アプリケーションからテキストを取得する他の方法はありますか? 私が調査を行ったので、これによりプログラムのすべてのテキストが得られるはずです。

ご助力ありがとうございます!

0 投票する
2 に答える
2400 参照

delphi - 外部アプリケーションからDelphiTStringGridへのデータの書き込み

Delphiで記述されたレガシーアプリケーションがあり、次のメカニズムを構築する必要があります。

  1. 読書と
  2. 書き込み

TStringGridとの間のデータ。

アプリケーションのソースコードがありません。自動化インターフェースがなく、ベンダーが提供する可能性はほとんどありません。

したがって、私は作成しました

  1. 注入するC++DLL
  2. Delphi DLL(私が書いた)に
  3. レガシーアプリケーションのアドレス空間。

DLL 2は、レガシーアプリケーション内のTStringGridインスタンスにアクセスし、セル値を読み取り、それらをデバッグログに書き込みます。

読書はうまくいきます。しかし、次のような呼び出しを使用してグリッドセルにデータを書き込もうとすると

アクセス違反が発生します。

コードは次のとおりです。

アクセス違反の問題が発生することなく、TStringGridにデータを書き込むにはどうすればよいですか?

0 投票する
1 に答える
533 参照

debugging - プロセス名を指定して (排他的に) プロセスのプロセス ID を見つける (すべてのプロセスの PID を与える netstat ではない)

次のことを実行する必要があります。

  1. ファイアフォックスを起動
  2. プラグイン コンテンツを含むページを読み込む
  3. プラグイン プロセスのプロセス ID を見つける
  4. processID を使用して cdb をプラグイン プロセスにアタッチします。
  5. プラグインによってロードされた DLL を検出する

バッチ スクリプトを使用してこれを自動化するには、プロセス名から processID を見つける方法が必要です。それを行う方法はありますか?

0 投票する
2 に答える
2730 参照

c# - 動的にロードされたマネージドライブラリをC#で処理する方法

私はC#でアプリケーションを作成し、そのための一種のAPIを追加しました。このAPIを使用すると、いくつかのインターフェイスルールの基礎となるdllとしてプラグインを記述できます。

OpenFileDialogを介してdllファイルを開き、そのコンテンツを使用できるようにしたいと思います。私のAPIはマネージドライブラリなので、参照を追加するだけですが、dllファイルの名前を知らなくてもdllを使用したいと思います。また、名前空間は別の各ライブラリです。

dllをロードしてその中でコードを実行するにはどうすればよいですか?