問題タブ [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.
c++ - ExtTextOutW をフックしてテキストの場所を抽出する
Windows API のRedrawWindow、ExtTextOut、および BitBltについて質問があります。パラメータ lprcUpdate = NULL および hrgnUpdate = NULL を指定して RedrawWindow を呼び出すと、画面上のテキストの位置を抽出するために ExtTextOut をフックしています。
フックされた関数 ExtTextOut で、LPToDP API を呼び出して、場所をデバイス コンテキストの場所に変換します。その後、正常に動作します。テキストの位置は正しいです。
でも、電話したら
その後、失敗します。場所が正しくありません。LPToDP を使用して間違った場所に変換されていることがわかります。
誰でもこの問題について知っていますか? どうすれば修正できますか?
ありがとう。
c# - プロセスで新しい appdomain が作成されたときに通知する
次の状況を検討します。EasyHook を使用して、マネージ dll をプロセスに挿入しました。EasyHook は、個別の AppDomain を使用して dll を挿入します。ここで、現在のプロセスで新しい AppDomain の作成に関する通知を受け取る方法が必要です。プロセスで新しい AppDomain が作成されたときに通知を受け取る方法はありますか?
kernel - EasyHook カーネル モード フック
EasyHook を使用して、カーネル モードからいくつかの API (NtOpenProcess) をフックできますか? プロセス全体の dll インジェクションによるユーザー モード フックには興味がありませんが、簡単なフックには、カーネル モード フックに関連するコードで開発されたドライバーがあります。それとも私が間違っていますか? http://easyhook.codeplex.com/
このタスクの全体的な目標は、1 つのアプリケーション用の単純な保護システムを作成することです。つまり、特定のプロセスの openprocess をブロックし、特定のディレクトリで createfile をブロックし、さらに、プロセスが適切な API を呼び出そうとしたときに通知を受け取ることです。
何かアドバイス?
ホイールを再発明せずにカーネルモードをフックする方法が他にもあるのではないでしょうか?
c++ - Application Verifier により、EasyHook を使用してフックされた x64 アプリケーションがクラッシュする
現在、EasyHook を使用し、Application Verifier を有効にすると、次の問題が発生します。appverifier が無効になっている場合はアプリケーションが動作しますが、アプリケーション ベリファイアが有効になっているとターゲット アプリケーションがクラッシュします。そして、アプリケーション検証ツールを機能させることは非常に重要です。では、フックと appverifier を実行するためにできることはありますか?
私が作成した最も単純な x64 プログラムも、フックを使用するとクラッシュします。1 つのエクスポートされた関数でネイティブ dll を作成しました
オリジナル.dll: main.cpp
そして、メインプログラムは次のとおりです。
Application verifier は、基本テストのデフォルト オプションで調整されています。WinDbg の出力は次のとおりです。
OS: VS 2010 AppVerifier 4.1.1078 で構築された Windows 7 x64
ここに同様の質問を投稿しましたhttps://easyhook.codeplex.com/discussions/542316しかし、残念ながら結果はありません。
助けてくれてありがとう。
c# - C#でWin32 API呼び出しをインターセプトする方法は?
仮想ドライブをホストして I/O をインターセプトするか、ハード ドライブ上の特定のフォルダーへの I/O 呼び出しをインターセプトして、ファイルを 2 番目の場所に書き込むなど、その呼び出しに対して任意の処理を実行したいと考えています。たとえば、Notepad.exe がファイルを C:\Data\test.txt に書き込む場合、そのファイル名とファイルのデータにアクセスしたいと思います。同様に、ユーザーが C:\Data\test.txt を読み取ろうとしたとき、または C:\Data のディレクトリ リストを取得しようとしたときに、任意のコードを実行したいと考えています。
理想的には、ファイルが作成、更新、削除、または開かれたとき、および誰かが (コマンドラインまたはシェルから) ディレクトリの一覧を作成したときのハンドラーが必要です。
FileSystemWatcher を使用して書き込み部分を実行できますが、ディスクの「読み取り」を傍受することはできません。そこで、次に MS Detours と EasyHook を調べました。コンピューター上のすべてのプロセスを監視し、それらすべてで OpenFile にフックする必要があるため、これは実際には機能しません。この動作はコマンドラインからも存在する必要があるため、シェル拡張機能は使用したくありません。つまり、File System MiniFilter ドライバーを作成するか、C++ で独自のインストール可能なファイル システムを作成する必要があります。
これの一部を C++ で使用できます。ただし、ドライバーに関することは頭を悩ませていますが、最終的に残りのコードのほとんどは、理想的には C# である必要があります。
特定のフォルダまたは仮想ドライブへの I/O をインターセプトする簡単な方法はありますか? 答えが EasyHook または MiniFilter である場合、サンプルを持っている人はいますか? 特に EasyHook には 2000 年代後半のサンプルしかなく、それ以降 API が変更されています。ありがとう!
c# - C# と EasyHook を使用した DX11 ゲーム (CryEngine) 内のオーバーレイの描画
私がしたいこと:
DirectX11 である CrySDK に基づくゲームがあり、Steam オーバーレイのようなゲーム内オーバーレイを描画したいと考えています。
-> C++ をまったく知らないので C# を書いているので、C# でこれを行う方法を探しています。
-> EasyHook と SharpDX ライブラリを使用しています。これが最善の方法だと思われるからです。
->明らかに SC2 のある種のハックである参照プロジェクトを見つけましたが、オーバーレイ部分だけに興味があります。
-> Visual Studio 2013 を使用しています
-> 今のところ、ゲーム内でランダムなものを描画できれば幸いです
私がこれまでにやったこと:
私はGoogleとSOの検索結果を調べていましたが、問題は、内容がC ++、C、またはその他のいずれかであり、結果が2010年のものであり、現在のdx11と最新ではないか、デッドリンクが含まれているか、他の理由で使用できないことです. . これは、私が調べたすべての 95% をカバーしており、いくつかの役に立つヒントがコードに含まれています。
Injector.dll を作成してゲームに注入することができました (少なくとも、注入されていると思いますが、これまでのところ使用可能な結果はありません)。
私が持っているもの:
インジェクションを行うファイル:
インジェクター.dll 自体は、Hooks/Graphics/Direct3D11Hook.cs という名前のこのファイルで構成されています (他の sc2 参照プロジェクトと同様の構造を維持しようとしました)。
ここで、EndScene 関数のオーバーライド関数を提供しようとしました。これが必要な場所だと思うからです。言うまでもなく、何も描かれていないように見えます。
デリゲートの定義は、参照プロジェクトからのコピーペーストのようなものですが、関数を実際にレンダー パイプラインにフックする方法や、目的に役立つ可能性のあるイベントに反応する方法をまだ見つけていません。
この巨大なファイル [ https://github.com/jasonpang/Starcraft2Hook/blob/master/Game/Hooks/Graphics/Direct3D9.cs]もあり、DX9 で機能すると思われる関数アドレスを定義しています。コピペしてDX11にも使えますので、DX11にも新しい機能アドレスがあるのではないでしょうか?どうすればそれらを見つけることができますか? どこを見る必要がありますか?それはSharpDXが私を助けることができるものですか?
TL;DR
DX11 ゲーム用の Steam のようなオーバーレイを作成したい、D3D のものと魔法とたわごとにフックする必要がある、dll インジェクトが機能している、パイプライン インジェクションの助けが必要
c++ - DLL エクスポート関数シグネチャ
easyhook.h ヘッダー ファイルには、この関数宣言があります。
easyhook の作成者は次のように述べています。
挿入されたネイティブ DLL には、「NativeInjectionEntryPoint」としてエクスポートされた REMOTE_ENTRY_POINT が必要です。そのエクスポートの署名については、easyhook.h を見てください。
私のdllがすでに次のようになっていると仮定します:
私のdllはどのように見えるはずですか?
フィードバックについては、質問に回答できるほど明確に述べたかどうかを知りたいです。私の最後のものは反対票を投じられましたが、その理由はわかりません。
どんな助けでも大歓迎です。
c# - c# EasyHook、ウィンドウ タイトルの変更
申し訳ありませんが、理解できるようにコードのチャンクを配置する必要があります。
ウィンドウのタイトルが「何か100/200」から「何か150/300」に変わるまで、すべて正常に動作します。新しい価値を手に入れなければなりません。
これは私が更新しなければならないコードの平和です:
bigBlindAmount は、アプリケーション タイトルの 150/300 です。アプリケーションのタイトルが 100/200 から 15/300 に変更された場合、bigBlindAmount を 150/300 に変更する必要があります。
あなたの答えは大歓迎です!
c# - EasyHook .NET 4.0.x dllNotFound が EasyHook EasyHook32.dll にある
私は c# プロジェクトで EasyHook を使用しており、プロジェクトのリファレンスとして easyhook.dll を含めました。easyhook32.dll と easyhook64.dll を追加しようとしましたが、Visual Studio は言う
A reference to [path/to/easyhook32.dll] could not be added. Please make sure the file is accessible, and that it is a valid assembly or COM component
私のプログラムで EasyHook.dll を使用しようとすると、EasyHook はSystem.DllNotFoundException
を見つけられないために をスローしますEasyHook32.dll
。
bin フォルダーと debug フォルダーに入れてみましたが、どちらも問題を解決していないようです。また、VS とアプリケーションのコンパイル済みバージョンの両方を管理者として実行しようとしましたが、役に立ちませんでした。
何か案は?
Visual Studio 2013 で .NET 4.0.x と EasyHook の最新リリースを使用しています