問題タブ [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 に答える
1042 参照

winapi - dllの注入が機能していませんか?

私は単純なdllを作成しました。プロセスに注入していますが、メッセージ ボックスが表示されません。メッセージ ボックスのコードは dll で記述されています。

dll コード:

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

c++ - Windows で Move コマンドをインターセプトする

ドキュメントタグ付けソフトウェアのプラグインに取り組んでいます。Windows エクスプローラーで MOVE 操作をインターセプトし、代わりにタグ付けソフトウェアに処理させたいと考えています。

フック、DLL インジェクションについて考えていました。ユーザーはいくつかの方法で MOVE を開始できますが、それらすべてをインターセプトする必要があります。

他のアイデアを持っている人はいますか。いくつかの例のリンクも投稿していただければ幸いです。

ティア

スジェイ

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

c - KeyboardProc / SetWindowsHookExを使用して、挿入されたDLLからキーボードをフックします

注:私はプレーンCで作業しています。C++ではなく、C#ではありません。

私はmodに取り組んでいます。動作するDLLインジェクターと、インジェクションされるDLLを既に作成しました。ユーザー入力を除いて、すべてが順調に進んでいます。

ホットキーを使用できるようにしたいので、SetWindowsHookExを使用してキーボードフックを設定しようとしました。以下は私のコールバック関数です:

そして、これは私がそれを設定する方法です:

私が知る限り、フックはうまくセットアップされます(以前は無効なパラメーターで問題がありましたが、GetCurrentThreadIDを使用して修正しました)。NULLではないハンドルを返します。

しかし、キーを押すたびに出力がありません。

さらに明確にするために:上記のコードは、挿入されたDLLからのものです。したがって、それは事実上ゲームプロセスに「属します」。AllocConsoleを使用して、デバッグメッセージを出力するコンソールを割り当てました。

私は何が間違っているのですか?

編集:(さらに)明確にするために:リストされたコードは挿入されたDLLからのものです。これは、DLLを挿入するために使用するアプローチではありません。これを行うために、別の(動作する!)プログラムを作成しました。

ホストプロセス内から呼び出すことを考えると、printf()が表示されないので、printf()を使用していることに驚かされます。はい、ホストプロセス内から呼び出しますが、動作中のコンソールをすでに割り当てているため、これは問題ではありません。ここで説明したものと非常によく似たアプローチを使用しました

EDIT2:printf()が機能しない理由(機能しているため)を尋ねているのではなく、このキーボードフックが機能していない理由を尋ねています。

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

c++ - WinAPI 別のアプリケーションのコントロールへのアクセスを取得します

win Calculator (calc.exe) からすべてのコントロールのリストを取得し、アプリケーションから calc のボタンを押す必要があります。コード インジェクションを試したところ、calc アプリケーションからコードを実行できるようになりました。例では、メッセージ ボックスを送信します。

しかし、ボタンをクリックして、calc のいくつかのコントロールからテキストを取得するにはどうすればよいでしょうか?

子ウィンドウを列挙しようとした方法:

0 投票する
5 に答える
3523 参照

c# - 実行時にファイルをEXEに挿入し、プログラム操作中にファイルを参照するにはどうすればよいですか?

ユーザーに自分のWebサイトからexeをダウンロードしてもらいたいのですが、ダウンロード時に(ダウンロード時に同期して)XMLファイルがこのアプリケーションに挿入されます。このXMLファイルには、公開鍵と署名が含まれています。

ダウンロードする前にファイルを挿入し、後で実行中に参照するにはどうすればよいですか?

理想的には、ファイルを挿入するためにシェルを使用するのではなく、ネイティブの.NETAPIを使用します。

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

c# - アンマネージ C++ DLL に厳密な名前を付けるにはどうすればよいですか?

私は、DLL インジェクション用のEasyHook ライブラリを使用する C# アプリケーションに取り組んでいます。EasyHook では、EasyHook を使用するすべてのアプリケーションに厳密な名前を付ける必要があります。アプリケーションに厳密な名前を付けるには、使用するすべてのライブラリにも厳密な名前を付ける必要があります。

これは、すべてのマネージ ライブラリに対して簡単に実行できますが、厳密に名前を付ける必要があるアンマネージ C++ ライブラリもあります。いくつか検索した後、ソース コードを使用しても、管理されていない dll に署名する方法が見つからないようです。これを行うことができますか?もしそうなら、私は何をする必要がありますか?

提案や支援をありがとう!

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

c# - デプロイされたクラス ライブラリ (DLL) を更新する方法は?

現在、クラス ライブラリ、インストーラー、およびセットアップ プロジェクトを含む C# ソリューションがあります。セットアップ プロジェクトは、私のクラス ライブラリ (dll) をインストールするための MSI を生成し、vsdrfCOM を登録します。これは、インストール後にエンド ユーザー クライアント上のサード パーティ アプリケーションによって参照されます。サードパーティのアプリを制御することはできません。これはすべて期待どおりに機能し、クラス ライブラリは問題なく参照され、展開された MSI を介してインストール/再インストールできます。

残念ながら、私が取り組もうとしている問題は、エンド ユーザーが MSI 経由でアンインストールし、新しい MSI をダウンロードして実行することを期待せずに、クラス ライブラリ (dll) に更新を適用する方法です。また、私が維持したい生成されたユーザー状態フォルダー/ファイルがあります。基本的にはクラスライブラリ(dll)を上書きするだけです。私が最初に撮影していたのは、ライブラリの初期化、リモートの場所へのヒット、バージョンのチェック、および必要に応じて新しい dll のダウンロードでした。次に、サードパーティ アプリケーションを再起動する必要があることをユーザーに通知します。

  1. 新しい dll をダウンロードして古い dll を上書きするだけでは、CLSID が維持されていても、レジストリが何かを気に入っていないように見えるため、機能しないようです。http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspxにある自動更新プロジェクトに触発されました。

  2. フォーム/コンソール アプリケーションが関連付けられていない限り、ClickOnce はクラス ライブラリで動作しないようです。

  3. 上記のユーザー状態ファイルを上書きせずに、新しい MSI をダウンロードして古い MSI を受動的に上書きできるかどうかは不明です。

では、上記の条件下で MSI と共にインストールされた dll を更新する方法はありますか?

ありがとう。

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

memory-management - DLL インジェクション、スレッド、メモリ解放

次の状況があります-Cで記述されたdllを別のプロセスに挿入します。そのdllはCLRをロードし、マネージドクラスライブラリからメソッドを呼び出すスレッドを開始します。

私の質問は、ターゲット プロセス (最初に dll を挿入する) が正常に終了してリソースを解放できるように、これらすべてのオブジェクトのメモリをいつ、どのように解放する必要があるかです。

0 投票する
0 に答える
260 参照

c# - C# および C++/CLI でインジェクターのフックされたプロセスからデータをシリアル化する方法は?

インジェクターのフックされたプロセスからデータをシリアル化する際に、奇妙な問題に直面しています(スパイdllを他のプロセスに注入しました)。スパイ dll を他のマネージド プロセスに正常に着陸させています。しかし、そのspyDll(フックされた他のマネージドプロセス内に実際に着陸した)からカスタムオブジェクトをシリアル化したい場合、ここで問題が発生します。ここでは、データとリストまたは .NET 辞書をシリアル化したいと考えていますDictionary<IntPtr,List<Objects>>Dictionary<IntPtr,List<Objects>>「シリアル化できません.....」などの例外が発生することもあれば、フックされたプロセス内のすべてのクラスと型をシリアル化可能としてマークすることもあります。私もそれを行うためにJsonを試しましたが、どういうわけか適切に使用できませんでした。

スパイ dll からインジェクターにデータを正常に取得する経験を持つ任意のボディは、インジェクターを使用しているモジュールに送信され、フックとインジェクションを介してリモート プロセスからデータを取得できます。シリアル化は、単純なコンソール ベースで完全に正常に動作します。アプリケーションですが、MessageHookProc管理されたアセンブリを他の管理されたプロセスにロードする機能があるため、データを取得する方法はまったく異なります。

.NET プロセスのインジェクションとフックの専門家であり、フックされたプロセスの情報をうまく使用した組織はありますか?

ノート :

====

プロセス間通信として.NETリモーティングを介して、フックされたプロセスからフックプロセス(インジェクターとスパイDLLの助けを借りて他のプロセスをフックしたプロセス)にデータをディスパッチするために必要な提案はありますか?フックされたプロセスからフックされたプロセスへのデータのシリアル化の解決策がない場合...?

よろしく

ウスマン