問題タブ [easyhook]

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 投票する
3 に答える
6472 参照

c# - EasyHook recv がすべてのパケットを「フック」しない

recv 関数をフックする半作業の EasyHook の例を書くことができました。フォームを作成し、WebBrowser コンポーネントを追加して、アプリケーションを開始しました。問題は、HTTP パケットを取得することですが、ソケットがある場合、recv が「フック」を停止するようです。問題は、外部アプリケーション Spystudio を使用すると、recv をフックできることです。それで、私は何が欠けていますか?

編集:recvについて疑いの余地はありません。ここでapimonitorが教えてくれます:

それで、誰かが私を助けることができますか?

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

c# - Easyhook が System.NotSupportedException を発生させる

私はまだフックとイージーフックの仕組みを完全に理解しようとしています. 簡単な例を書きました: webbrowser 要素を含むフォームで、そこから行われた recv 呼び出しをフックしようとしています。コンパイル時に、プログラムは次のエラーを返します。

46 行目に、次のコードがあります。

どこに問題があるのか​​ よくわかりません。誰か助けてもらえますか?

0 投票する
3 に答える
2720 参照

c# - Easyhookはvs2010で「GACにアセンブリをインストールできません」エラーを発生させます

私はまだeasyhookexercizeを実行しようとしています。今、私はこのエラーを受け取ります:

問題はここで発生しているようです:

私が構築しようとしているソリューションは、ライブラリとアプリケーションの2つのプロジェクトで構成されています。ソリューションをビルドしたら、testinject.dllをhooktestデバッグフォルダーにコピーし、デバッグモードで実行します。たぶん、testinject.dllがどこにあるかを示すために絶対パスを使用する必要がありますか?またはどこかにライブラリを追加しますか?

更新1

この変更を行っても、同じエラーが発生します

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

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

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

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

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

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

c# - オリジナルの関数呼び出しを持つ EasyHook

EasyHook ライブラリを使用して目的のプロセスにコードを挿入し、特定の dll からの呼び出しをインターセプトするアプリケーションを開発しています。私の場合、ライブラリは Oracle Call Interface、OCI.dll です。クライアント側で SQL クエリ ログを作成するために、実行された SQL ステートメントをインターセプトしたいと考えています。以前は Microsoft detours (バージョン 2.1) を使用していましたが、ライセンス上商用利用が許可されておらず、バージョン 3.0 は高額です。EasyHook ライブラリを使い始めました。配布された例のコードを変更して、kernel32.dll から関数 CreateFileW をインターセプトし、oci.dll の関数 OCIStmtFetch2 で動作するように調整しました。

ヘッダー ファイルまたは oci ライブラリを持っているので、関数のパラメーターと戻り値の型を正確に知っています。ヘッダーファイルによると、署名は次のとおりです。

剣 OCIStmtFetch2 ( OCIStmt *stmtp, OCIError *errhp, ub4 nrows, ub2 向き, ub4 scrollOffset, ub4 モード);

Oracle から提供された他のヘッダー ファイルによると、OCIStmt は構造体であり、OCIError はエラー関数のハンドルです。ub2 と ub4 は、unsigned short (16 ビット) と unsigned int (32 ビット) の typedef です。Sword は、signed int (同じく 32 ビット) への typedef です。

ご覧のとおり、ub4 を UInt32 に、ub2 を UInt16 に、sword を Int32 にマッピングしました。最初はポインター (最初の 2 つのパラメーター) に IntPtr を使用しましたが、コードが正しく動作しませんでした。挿入された dll インターセプト関数呼び出しは完全に、元の関数の前にコードを実行でき、元の関数を呼び出すことができ、期待値を返しますが、return E が実行されると、ターゲット アプリケーションでメモリ違反例外が発生して終了します。コードでわかるように、void* ポインターと unsafe キーワードを使用して、C# でポインターを操作できるようにしましたが、結果は同じでした。Detours ライブラリを使用したコードと比較すると、デバッガーを使用して確認できるパラメーターとポインター値は両方のライブラリーで同じであるため、型マッピングは適切に見えます。それにもかかわらず、DOCIStmtFetch2_Hooked から戻るとコードが壊れます。

誰が何が間違っているのか知っていますか? タイプマッピングは問題ないと思いますが、エラーのせいにしています。

よろしく。


ソースを短くするためにロック部分を外しました。キューをロックするかどうかに関係なく、問題は残ります

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

c++ - x86-DLL をフックする x64 プロセスに挿入された x64-DLL が C++ および EasyHook を使用して失敗する

x86-DLL をフックする x64 プロセスに挿入された x64-DLL は、C++ および EasyHook を使用すると失敗します。Loader、InjectionLibrary、および InjectionTarget (両方のバージョンで利用可能であり、両方をフックする必要があります) が x86 の場合に機能します。エクスポートされたプロシージャ (GetProcAddress 自体) のアドレスを取得することは、x64 では問題になりません。InjectionTarget には、x64 でも依存関係として HookTarget(Kernel32.dll) があります。LhInstallHook(...) は、「ターゲット エントリ ポイントにサポートされていない命令が含まれている」場合に発生するとソース コメントが示す STATUS_NOT_SUPPORTED を返します。

ソースは x86 ビルドに適しているため、追加しないことにしました。

私は少し図を引っ掻いた ここに画像の説明を入力

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

c# - C#-フックexplorer.exe

ファイルをフックして監視するためのソースコードをダウンロードしました

リンク: http ://code.google.com/p/easyhook-continuing-detours/downloads/list

しかし、プログラム「FileMon」を実行するとき。。次のエラーが発生しました:ファイルまたはアセンブリを読み込めませんでした'EasyHook、Version = 2.5.0.0、Culture = neutral、PublicKeyToken=4b580fca19d0b0c5'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません

このエラーを解決する方法は?

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

c++ - 管理されていないEasyHookを使用して、プロセス内の任意のスレッドからメソッドをフックする方法は?

メソッドフックを機能させるのにいくつか問題がありました。「I」がフックされているメソッドを呼び出すと、フックを機能させることができます。しかし、それがプロセス操作中に自然に発生する場合、それは夢中になりません。私の問題はおそらく、私がスポーンした自分のスレッドにこれらのフックを実際に設定しているという事実に起因しています。そして明らかに、LhSetInclusiveACL()メソッドはフックしたいスレッドを知る必要があります。さて、ここに私の問題があります...

どのスレッドがフックを適用するかはあまり気にしません。すべてをフックしたいのです。たとえば、プロセス「iexplorer.exe」全体にフックされた「gdi32.dll」ライブラリのCreateICW()メソッドが必要だとします。スレッドID番号48291などからだけではありません。フックすることに関心のあるルーチンを呼び出すスレッドを知るには、フックしているプロセスの内部動作についての深い知識が必要です。私はそれが一般的に実行可能ではなく、確かに私にとって実行可能ではないと推測しています。したがって、どのスレッドIDをフックする必要があるかを事前に知ることは不可能です。

次のコードは、「UnmanageHook」の例から抜粋したものです。

状況を説明するコメントをLhSetInclusiveACL()メソッド呼び出しに追加しました。また、LhSetExclusiveACL()およびこれらのメソッドの「グローバル」バージョンも役に立たないようです。

参考までに、LhSetExclusiveACLのドキュメントを次に示します。

私はこれを間違って使用していますか?これが実装の大部分がこのライブラリを使用する方法であると想像しますが、なぜこれが私にとって機能しないのですか?

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

c# - EasyHook と CallWndProc

私は必死にCallWndProcEasyHook を使用してフックしようとしていますが、失敗しています。

これは、「指定されたメソッドは存在しません。」でスローされます。したがってCallWndProc、user32.dll に含まれていないか、名前が微妙に異なるか、パズルの基本的なピースが欠けていると推測しています。

乾杯

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

c++ - explorer.exe で NotifyIcon のコンテキスト メニューを変更するにはどうすればよいですか?

デフォルトの Speakers 通知 (トレイ アイコン) の右クリック コンテキスト メニューを新しい項目で拡張したいと考えています。また、C++ を使用してマウスクリックを処理したいと考えています。

ここに画像の説明を入力

私がこれまでに知っていること

CreateRemoteThread()を使用して dll を注入する方法を学びました。私の問題は: 挿入された dll 内で何をすべきか? たとえば、NotifyIcon オブジェクトにアクセスする方法は?

単純な Windows API 呼び出しで可能かもしれませんが、私はそれに慣れていません。