問題タブ [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.
32-bit - 32 ビット Detours ライブラリの構築
Microsoft の Detours ライブラリを使用しており、32 ビット バージョン (無料) を使用していました。現在、Windows 7 の 64 ビット インストールを使用していますが、nmake で Detours をコンパイルできないようです。
エラーは次のとおりです。
ご覧のとおり、64 ビット用にコンパイルしようとしています。nmake を強制的に 32 ビット用にビルドするにはどうすればよいですか?
ありがとう、デイブ
c - __usercall、__ userpurge(__ spoils)関数をフックする方法は?
__usercall
関数のフックタイプについて誰か知っていますか?フックに成功し__thiscall
、電話__stdcall
を__cdecl
かけましたが、これで十分です。
__usercall
のライブラリをフックしている人、またはへの変換を使用してこのタイプの関数をフックする方法を知っています__stdcall
か__cdecl
?
私が最初にフックしなければならない関数は次のとおりです。
c++ - Microsoft Detours の使用 - 未定義の束
Google でコンパイラ エラーを検索してみましたが、検索結果すら返されませんでした。だから、私はここで少し迷っています。Microsoft detours をダウンロードしてビルドし、そこから detours.h、detours.lib、detoured.lib、および detoured.dll ファイルを取得しました。次に、自分のプロジェクトで使用しようとすると、次のエラーが発生します。
http://friendpaste.com/4egvgn7lOeIVOGkbROCnOC
それがソース コードで、一番下にコンパイル エラーがあります。誰かがこれらの問題の原因を明確にすることができれば、それは役に立ちます. ありがとう!^_^
c++ - DetourAttachEx を使用してトランポリン関数を作成する方法は? (MS迂回あり)
dll があり、そのエクスポートされた関数の 1 つに迂回したいのですが、
- dll は Windows の一部ではありません。
- 迂回後に実際の関数を呼び出せるようにする必要があります (迂回した関数から実際の関数を呼び出す)
- 関数の正確なシグネチャを知っています。
- 私はすでに関数を迂回することができましたが、今は本当の関数を呼び出すことはできません.
トランポリン機能を使用する必要があることに気づきました。オンラインで例を見ました。問題は次のとおりです。これらの例はすべて、Windows API 関数を迂回する方法を示しています。DLL のインポートを完全に取得する関数についても同じことを行う必要があります。
どんな助けでも大歓迎です
--edit 明確にするために、元の関数をそのポインターで呼び出そうとしましたが、機能しません。このスタックオーバーフローの記事の方法も使用してみました
それはクラッシュさえしませんが、無限ループに入るように見えます(元の関数には迂回した関数へのジャンプがあるためだと思います)
編集 -- 解決!何が解決したのかわからないので、これを参考にしてください。
- getProcadder の使用をやめ、代わりに DetourFindFunction の使用を開始しました
- コードをクリーンアップしました(問題の原因を一掃したことは間違いありません)
動作します、とにかくありがとう
c# - 管理されていない関数のフック、呼び出し規約のスタック/レジスタの問題?
これは EasyHook に関する特定の機能ではなく、一般的なフックに関する機能です。この署名で関数をフックしたい:
これは明らかに管理されていないコードであり、EasyHook を使用して管理されている C# コードでフックしようとしています
。
しかし、フックを挿入するとすぐに、フックされたプログラムがクラッシュし続けます-大きな驚きではありません。それは呼び出し規約の問題であり、フック関数がフックされたプログラムのスタックに何らかの形で干渉していると思います。
そこで、同じ関数をフックする別のプロジェクトを見てみましたが、c++ で回り道があります (フック部分):
そして、呼び出された関数:
(ターゲット アセンブリと C++ の例は、どちらも Visual C++ でコンパイルされています)。元の関数を呼び出す前に、いくつかのレジスタを保存してスタックを修復する必要があると思いますか? または、私がここで間違っていることは何か他の考えはありますか?
detours - 関数迂回パッケージはどのようにセキュリティを回避しますか
DetourXS という関数 detour パッケージを使用するコードを見ています。私のアプリケーションは、Microsoft Server オペレーティング システムを対象としています。Microsoft Research にも Detours パッケージがあり、その仕組みに関する記事があります。メモリにロードされたマシン コードにパッチを適用し、新しく挿入されたコードに無条件でジャンプするコードを挿入します。
実行時にマシン コードを変更することでこのコードが機能する場合、オペレーティング システムによるセキュリティ制限に直面しているはずです。これは、kernel32 などの重要な DLL を変更してやりたいことを何でもできるため、OS の重大なセキュリティ違反になります。私の理解では、ユーザー プロセスが既にメモリにロードされている dll のコードを変更しようとすると、OS によって停止される必要があります。このチェックを有効/無効にする Widows Server OS の設定はありますか?
彼らはこれをどのように克服しますか?
エンタープライズ実稼働環境のアプリケーションで、この種の迂回パッケージを使用した経験のある人はいますか?
windows - Microsoft Detours はどのように機能し、それを使用してスタック トレースを取得する方法を教えてください。
Microsoft Detours は初めてです。プロセスが行うシステムコールを追跡するためにインストールしました。Webから取得した次のコマンドを実行します
ログファイルを取得します。問題は、ここで何が起こっているのかを完全には理解していないことです。迂回路はどのように機能しますか? システムコールをどのようにトレースしますか? また、log.txt の出力を読み取る方法もわかりません。これはlog.txtの1行です
最後に、プロセスのスタック トレースを取得します。どうすればそれを手に入れることができますか?
c# - QWidget::find() でエクスポートされたライブラリ フックが機能しない
detours.dll を使用してサードパーティ アプリケーションに挿入された QT hook.dll ライブラリがあります。QWidget::find() メソッドを hook.cpp に追加すると、このフックのインストール中に DllNotFoundException が発生します。QWidget::find() を .cpp に追加しない場合は、フックを正常に確立します。VS2008 を使用した QT 4.7.1 によるフック構築
助けてください、私はこのバグで2日間苦しんでいました:(
c++ - MS Detours Library、非 win API 関数を迂回
Windows detours ライブラリを使用して、win 以外の API 関数を迂回したいと考えています。この関数は Qt ライブラリ (QtGui4.dll) の一部です。の関数シグネチャをどのように設定するのか疑問に思っています:
私はこれを試してみましたが、いつものようにエラーが発生しました。要件の少しの説明も興味深いでしょう:
これは、Windows API での TextOut の場合の外観です。
だから、私が試したジーンの提案に続いて:
しかし、「組み込み型への関数スタイルの変換では、1 つのパラメーターしか使用できない」というエラーが発生しました。
とにかく、公の場で少し屈辱を与えるのは魂に良いと彼らは言う、私の魂は最高の時間を過ごしているに違いない...
ありがとう。
c++ - アセンブリで関数を迂回しようとしている問題
楽しみのために、クラスの vtable を変更して迂回を作成することにより、メンバー関数を迂回する簡単な迂回ライブラリを作成しようとしています。私は奇妙な振る舞いをしています。これがプログラム全体です(私はMSVC++ 2010を使用しています):
新しい関数のjmp
アドレスに正しく ing していますが、その後クラッシュします。ollydbg でクラッシュの原因を確認すると、非常に奇妙なことが起こります。何もせずにいくつかの命令を通り抜けます。デバッガーでa が表示push xxx
されている場合、スタックは変更されません。私が a を見ているところは、sretn 4
で満たされた機能の間の空間へと進み続けint 3
ます。なぜこれが起こっているのか誰にも分かりますか?
編集:気にしないで、答えを見つけました。