問題タブ [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.
process - Windows プロセスへのフック
アプリケーションの起動直後と終了直前にいくつかの操作を実行する必要があります (UMDH を使用したある種の自動メモリ リーク検出)。
すべてのプロセスに挿入される DLL を準備し、DLL_PROCESS_ATTACH で最初の操作を実行しています (アプリケーションの起動直後)。これで、問題のこの部分は解決されました。
問題は 2 番目の部分にあります。プロセスが終了しようとしているときに操作を実行します。
DLL_PROCESS_DETACH で試してみましたが、これでは遅すぎます。以前にフックする必要があります。
Windows フック メカニズムを使用して、WH_GETMESSAGE にフックしました。
GetMsgProc() 関数:
しかし、この方法を使用すると、WM_CLOSE メッセージのみが検出されます (「X」ボタンを使用してアプリケーションを閉じるとき)。WM_QUIT メッセージを検出しない理由がわかりません。
アプリケーションが終了しようとしているときにいくつかの操作を実行する方法はありますか?
(私は回り道について知っていますが、私のプロジェクトでは使用できません...)
winapi - 挿入されたDLLをターゲットプロセスからアンロードする方法、完了したらDLLからアンロードする方法は?
CreateRemoteThread/LoadLibraryメソッドを使用して自分自身を挿入するDLLがあります。
DLLのデバッグと開発時に、ターゲットアプリケーションを終了して再起動する(ロード時間は10〜20秒)のは面倒なので、コードの動作を確認したらDLLをアンロードして、再コンパイルします。 /再注入します。
上記のDLLをロードおよびアンロードするためのフレームワークを使用して新しいDLLを作成することは避けたいと思います。
これはどのように可能ですか?
c# - フックとメインプログラムの通信
特定の機能を他のプログラムに追加したり、プログラムの動作を変更したりするためのフックの作成方法に関する情報が記載された記事が多数あります。しかし、フックからプログラムにデータを送信するにはどうすればよいかわかりません。
私の英語はあまり得意ではないので、小さな例を書きます: 私のアプリケーション (myApp) と私のアプリケーション (notMyApp) ではありません。notMyApp のチャット ウィンドウから myApp テキストにアクセスしたい。たとえば、 MHOOKを使用して notMyApp のフックを作成できます。問題は、フックから myApp にチャット テキストを送信する方法です。
パイプなどを使用する必要がありますか?
PS私はC#を使うことを好みます
c++ - DLLインジェクション-別のプロセス内でのネイティブコードの記述
では、 C ++ Dllインジェクションのステップ3について質問があります。つまり、次のとおりです。
CreateRemoteThread()を使用します。これを
LoadLibrary()
エントリポイントとして指定し、手順1と2のファイルパスを引数として指定できます。正直なところ、これは少しハッキーですが、DLLを挿入している場合は、すでにかなりハッキーになっています。もう1つの手法は、手順1と2を使用して、マシンコードをリモートプロセスにロードし、それをポイントすることです。
だから私の質問は:を使用してメモリを割り当てVirtualAllocEx
、を使用してコードを記述したWriteProcessMemory
後、どのように呼び出しを行うのCreateRemoteThread
ですか?つまり、4番目と5番目のパラメータは何ですか?
私のコード:
winapi - DLL インジェクション: DLL 内で関数を呼び出す
まず、コードの一部は、注入された DLL の Calling functionからのものですが、どこかで動作しません。
DLL インジェクションに関して質問があります: ライブラリを別のプロセスにロードした後:
そのスペース内から関数を呼び出したかったのです。
は、IDA から現在の場所を返します (これGetPayloadExportAddr
は、関数が開始するスペースであると思います)。
したがって、InitPayload
新しいスレッドを作成しようとすると問題が発生しますが、作成に失敗し、その理由がわかりません。
私のdllは次のとおりです。
問題は、Start メソッドを DLL_PROCESS_ATTACH に配置すると機能しますが、それ以外の場合は機能しません。
c++ - DLLコードを保護するためのヒントはありますか?
DLL(Win32、ダイナミック)ファイルが挿入されないように保護する方法と、コンパイルされたコードのセキュリティを強化する方法について、いくつかのヒントを知りたいと思います。
- MySQLへの接続に使用されるDDLソースコードにはSQLパスワードがあります。それを残すのに十分安全ですか?
- 'ユーザー'がHEXコードを変更するのを防ぐ方法はありますか?私はソースコードからより多くを保護することを意味します。
- プロジェクトプロパティのどのオプションがDLLの最適化と保護に最適でしょうか?
MVSC ++2010Expressを使用しているImとユーザーへのソースコードは利用できません。
c++ - DLL インジェクション: DrawText と TextOut がすべてのテキストを返さない
DLL をプログラムに挿入することに成功しました。ただし、ListBox から情報を取得したいと考えています。WM_GETTEXT が機能しないため、dll インジェクションを実行する必要がありました。多くのテキストを受信していますが、目的のコントロールからは何も得られません。
これが私のコードです:
私の質問は: 私が見逃しているものはありますか? アプリケーションからテキストを取得する他の方法はありますか? 私が調査を行ったので、これによりプログラムのすべてのテキストが得られるはずです。
ご助力ありがとうございます!
delphi - 外部アプリケーションからDelphiTStringGridへのデータの書き込み
Delphiで記述されたレガシーアプリケーションがあり、次のメカニズムを構築する必要があります。
- 読書と
- 書き込み
TStringGridとの間のデータ。
アプリケーションのソースコードがありません。自動化インターフェースがなく、ベンダーが提供する可能性はほとんどありません。
したがって、私は作成しました
- 注入するC++DLL
- Delphi DLL(私が書いた)に
- レガシーアプリケーションのアドレス空間。
DLL 2は、レガシーアプリケーション内のTStringGridインスタンスにアクセスし、セル値を読み取り、それらをデバッグログに書き込みます。
読書はうまくいきます。しかし、次のような呼び出しを使用してグリッドセルにデータを書き込もうとすると
アクセス違反が発生します。
コードは次のとおりです。
アクセス違反の問題が発生することなく、TStringGridにデータを書き込むにはどうすればよいですか?
debugging - プロセス名を指定して (排他的に) プロセスのプロセス ID を見つける (すべてのプロセスの PID を与える netstat ではない)
次のことを実行する必要があります。
- ファイアフォックスを起動
- プラグイン コンテンツを含むページを読み込む
- プラグイン プロセスのプロセス ID を見つける
- processID を使用して cdb をプラグイン プロセスにアタッチします。
- プラグインによってロードされた DLL を検出する
バッチ スクリプトを使用してこれを自動化するには、プロセス名から processID を見つける方法が必要です。それを行う方法はありますか?
c# - 動的にロードされたマネージドライブラリをC#で処理する方法
私はC#でアプリケーションを作成し、そのための一種のAPIを追加しました。このAPIを使用すると、いくつかのインターフェイスルールの基礎となるdllとしてプラグインを記述できます。
OpenFileDialogを介してdllファイルを開き、そのコンテンツを使用できるようにしたいと思います。私のAPIはマネージドライブラリなので、参照を追加するだけですが、dllファイルの名前を知らなくてもdllを使用したいと思います。また、名前空間は別の各ライブラリです。
dllをロードしてその中でコードを実行するにはどうすればよいですか?