問題タブ [detours]
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++ - dllの挿入がWindowsXPで機能しない
だから、ゲームクライアントをフックするために使用する私のdllを注入するインジェクターを作ろうとしていDetours
ます、それは簡単です、しかし私はそれがうまくいくのに何が間違っているのかわからないという問題がありWindows Vista+
ます...これが私のコード
どちらもVC++2010で構築されているため、動作するはずですが、Windows XPではゲームを起動しますが、dllが挿入されていません。Idkここで何が問題になっていますか。
編集:それは私のXPにMSVCR100D.DLLがないためだと思いますが、dllがそれに依存しないようにする方法はありますか?
c++ - CreateProcessWithDLLEx-フックされたプロセスは開始されますが、再開できません
マイクロソフトの迂回路を使用して基本的なフックを取得しようとしています。私のプログラムはCreateProcessWithDllExを正常に実行し、dllを挿入することができます。しかし、実際のフックされたプログラムを再開することはできないようです。テストにメモ帳を使用していて、プロセスリストでnotepad.exeが実行されているのを確認できますが、メモ帳ウィンドウが実際に表示されることはありません。
私のdllは次のとおりです。
そして私のインジェクターは次のとおりです:
そして、.defファイルを使用してdllをビルドし、迂回が正しく機能するために序数1に必要な関数があることを確認します。
プロセスが実行されない原因を誰かが知っていますか?ちなみに、私は空白のdllでも試してみましたが、序数1で必要な関数が含まれているだけで、他には何も含まれておらず、同じ結果になるようです。
また、notepad.exeプロセスがプロセスリストに表示されている限り、インジェクターは永久に実行されます。これは、プロセスが正しく生成されたことを示しているように見えるWaitForSingleObjectへの応答です。
c++ - パラメータに不明なオブジェクトが含まれるメソッドをフックする
回り道を介して C++ メンバー メソッドをフックしました。
メソッドの宣言は、IDA のシンボル ファイル (*.pdb) から取得されます。
以下は、実際の方法を置き換える私の方法です
フックが機能しMyFoo
、実際のメソッドの代わりに呼び出されます。しかし、実際のメソッドを呼び出すとエラーが発生します:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
何か提案はありますか?パラメータの 1 つがオブジェクトとして渡されたときにこの種のフックを処理する方法ですが、その実装は私にはわかりません。
c++ - C ++関数フック(メモリアドレスのみ)
私はメモリアドレスを持っています。それは別のプログラム(そのdllの1つ)の関数のメモリアドレスです。私はすでにDLLインジェクションを介してプログラムにロードされています。私はすでに低音アドレスと、プログラムがロードされるたびに関数の実際の場所を持っています。したがって、これは問題ではありません。
その場所をフックして、変数を取得したいだけです。関数の擬似コードを知っています。したがって、これは問題ではありません。または、そのメモリ位置でブレークポイントを実行してデバッグレジスタを取得することもできます。
この明確な例は見つかりません。関数の「名前」もありません。メモリアドレスだけがあります。メモリアドレスだけを操作する方法はありますか?すべてではないにしても、ほとんどの例では、私が持っていない関数の名前を使用しています。
誰かが私を正しい方向に向けて、私がこの仕事を成し遂げることができれば、私はそれを大いに感謝します。それはまた同じ質問をするかもしれない他の多くの人々を助けるかもしれません。
編集:私はまた、他の誰かのコードでプログラムをオーバーロードするのではなく、ロールアップウィンドウを備えた基本的な車のように、必要最低限のものが欲しいだけであることにも言及する必要があります。贅沢なパッケージはありません。
hook - Win7x64でMSDetours3.0?
WinAPIフックについて詳しく説明したいと思います。これは、MSDetours3.0のダウンロードページからの引用です。
Detours Express 3.0は、研究、非営利、および非生産的な使用のために、無料のクリックスルーライセンスの下ですぐにダウンロードできます。Detours Expressは、x86プロセッサ上の32ビットプロセスに制限されています。
Win7x64を使用しています。それは、迂回路(少なくとも無料版)が私にとって役に立たないという意味ですか?MS Detoursを推奨する投稿をたくさん読んだので質問しますが、最近ではほとんどの人がx64マシンで作業していると思います。
誰かがx64OSでそれを使って作業しましたか?それは機能しますか?
c# - 迂回機能を防止します。割れないようにする
Check
DLL関数を使用してアクティベーションをチェックするアプリケーションがあります。Check
アプリケーションがアクティブ化されている場合は1を返し、それ以外の場合は0を返します。関数フックにMS迂回ライブラリを使用してMyCheck
、同じ署名と迂回関数を使用して、関数(常に1を返す)を含む単純なアプリケーションとDLLを作成します。Check
明らかにそれは機能し、アプリケーションは正常にクラックされるので、私はそれを避ける必要があります。
Check
を使用せずに(正確なアドレスを指定して)関数を直接呼び出そうとしましGetProcAddress
たが、detours libが関数本体自体を変更しており、テーブルをエクスポートしていないようです。}
次に、関数本体を読み取ろうとしましたが、迂回後のMD5チェックサムが元のチェックサムと異なることがわかりました。そのため、メモリ内のDLLの内容全体を読み取って、DLLの内容が変更されていないことを確認しようとしていますが、どちらも機能しません。投げ
AccessViolationException
ます。Process.EnterDebugMode();
ProcessModule module = Process.GetCurrentProcess()。MainModule; byte [] data = new byte [module.ModuleMemorySize]; Marshal.Copy(module.BaseAddress、data、0、module.ModuleMemorySize);
ここではMainModuleを使用しましたが、Process.GetCurrentProcess().Modules
コレクション内の各モジュールで同じエラーが発生します。
私はこれについて助けていただければ幸いです。私が説明する方法の1つでそれを解決することを必ずしも期待しているわけではありません。どんな良い解決策も受け入れられます。
ありがとう。
c++ - Deviarev2 フック API: 既存のプロセスの winapi 呼び出しにフックしますか?
Deviare V2 API を使用して、テスト アプリケーションからの winapi 呼び出しをインターセプトしたいと考えています。問題は、フックとシステム コールが同じプロセスにあることです。このため、呼び出しはインターセプトされません。
それぞれに対して個別のプロセスを開くと、インターセプトが機能します。他の誰かがこのシナリオ/問題を経験したことがありますか?
問題は、コードの平和にいくつかの単体テストを追加しようとしているということです。既存の製品コードを変更してすべてのシステム コールをラップ/モックする代わりに、このすべての呼び出しを単純にインターセプトして、必要に応じて偽造できると考えました。
c++ - コンパイラの最適化は、実行時に迂回されるスタブとなることを意図した同一の関数の実装をマージします
同じ実装を持つ多数のスタブ関数を含むC++テストプロジェクトがあります。これらのスタブは、WindowsDetoursを使用して実行時に「置換」されることを目的としています。問題は、リリースモードでは、コンパイラがこれらのスタブをすべて同じ実装を指すようにすることです。これを説明するために、次のコードについて考えてみます。
デバッグモードでは、ポインタ値は異なります。リリースモードでは、それらは同じです。プラグマ最適化ディレクティブを試しましたが(Microsoftコンパイラを使用しています)、問題は修正されませんでした。その結果、私のWindows Detoursフックは、同一のスタブへのすべての呼び出しをインターセプトします。
どうすればこれを修正できますか?ありがとう。
c++ - Detours 3.0 Express によるシンプルなパケット ロガー
私のシステム: Microsoft Windows XP Professional 32 ビット
IDE/コンパイラ: Microsoft Visual C++ 2010 Express Edition
ライブラリ: Detours 3.0 Express
対象: 単純なパケット ロガーを作成します。
私のコード:
mydll.cpp
インジェクター.cpp
エラーメッセージ:
(iexplore.exe) アプリケーション
質問: 私のコードの何が問題なのですか? なぜこのエラーが発生するのですか?
winapi - Windows でアプリケーションの単一インスタンス制限をオーバーライドする方法は?
ソースを持っていないアプリケーションの単一インスタンス制限をオーバーライドしようとしています。私は、アプリが CreateMutex を使用して実行中の別のインスタンスがあるかどうかを判断するという古き良きトリックを使用していることを知っています。(ミューテックスが正常に作成された場合は処理が続行されます。ミューテックスが作成されたと getlasterror が通知した場合は、すぐに終了します)。Win32 api 呼び出しをスニッフィングして見つけました。Detours を使えばうまくいくと思ったのですが、うまくいきません。CreateMutexW をインターセプトしていますが、何らかの理由で最初の 4 つの呼び出しをキャッチできません。(ここでも、win32 呼び出しをスニッフィングし、ミューテックスの名前を調べることで、これらの呼び出しが何であるかを知っています)。5 番目のものは傍受されますが、実際に傍受したいのは 1 番目のものです。
サンプル アプリケーション withdll を迂回して使用しています。問題は、回り道の開始が遅すぎることなのか、それともこれらの呼び出しが持つ何らかの保護のためなのか疑問に思います。迂回は最善のアプローチですか?おそらく、何か他のものを使用する方が良い考えかもしれませんか?