問題タブ [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 - Detours で非決定論を減らしますか?
フック (Detours など) を使用して、任意のアプリケーションで非決定性を取り除くことができるかどうか疑問に思っていました。
シングル スレッド アプリケーションを想定できます (競合とスケジューリングによって引き起こされる非決定論を無視するため)。
rand()
私の最初の推測は、シードに関係なく、疑似乱数を要求する関数に対して予測可能で再現可能な出力を得るためにオーバーライドすることでした。
オーバーライドを検討する必要がある、よく使用される他の関数はありますか?
ここに完璧な解決策がないことはわかっていますが、ほとんどのアプリケーションで機能するものでおそらく解決できます。また、この問題を解決する別の方法があれば、それについて読むことに興味があります。
c - いつでも検索機能に接続することは可能ですか?
さまざまなアプリケーションの「時間に依存しない」リプレイを生成するために、システム時間を取得しようとする関数をフックする必要があります。疑似乱数生成などの一部のイベントはtime()の呼び出しに依存しますが、たとえば、timeGetTime()または_time64()を呼び出すイベントもあります。
関数を常に取得するために(Windowsで)フックする必要がある関数の最小セットは何ですか。これらの関数を実際にフックすることは可能ですか?time()で実行しようとしていますが、フックが無視されています。他の関数(randなど)へのフックに成功しましたが、time()フックは無視されているようです。
Detoursを使用していますが、他のAPIインターセプトツールを使用できます。
c++ - マイクロソフトの迂回路に問題がある
私はマイクロソフトの迂回路でいくつかの基本的なフッキングを行おうとしていますが、それを機能させることができません。私は基本的にこのスレッドに投稿されたコードを使用しました:
C / C ++でWindows関数をフックするにはどうすればよいですか?
しかし、サイコロはありません。DLLコードの送受信機能を更新して、データをファイルに記録するだけで、メインプログラムを「インターネットチェッカー」プログラムに接続しようとしましたが、ログファイルが作成されないため、dllが表示されます。注入されませんでした。
私はWindows764ビット、Visual Studio 10.0、Detours 3.0を実行しています(私の環境は正しくセットアップされているようで、ビルドなどの問題はありません)。上記のリンクからDLLコードに貼り付けたDLLプロジェクトを作成し、send/recvを次のように更新しました。
コンパイルされます。次に、別のプロジェクトを作成し、上記のリンクからメインコードに貼り付け、chkrzm.exe
プログラム(チェッカー)を検索するように設定し、DLLパスを次のようにハードコーディングしました。
そしてそれを実行しましたが、サイコロはありません。これを機能させることができない理由はありますか?
c++ - フック FindWindow
Detours 3.0 を使用して FindWindowA と FindWindowW をフックしようとしています。この 2 つの関数は正常にフックされ、要求されたクラスとウィンドウ タイトルを確認できます。しかし、私が好きな単語にアクセスしようとすると
またはそのようなもの:
エラー (フックされたプログラムでの例外) が発生します。この文字列にアクセスすることはできませんが、使用して読み取ることができます
http://s017.radikal.ru/i421/1201/73/54fa9046a46c.png何もわかりません...エラーコードが間違っています。私はこのコードを使用します:
そして弦は傷んでいません。すべての作業...これら 2 つのパラメーターを確認したり、直接アクセスしたりできないのはなぜですか?
delphi - ルーチンの内容をメモリ内の別の場所にコピーする
メモリ内のルーチン コードを別の場所にコピーしたい。例えば
ルーチンをメモリ内の別の場所にコピーしたいとします。私は次のようなことを宣言しました
いくつかの擬似コードは次のようになります
これを行う可能性があるかどうかを知りたいだけです。新しいルーチンを呼び出すルーチンにパッチを当てましたが、コード迂回路を使用して JMP 命令を配置しているため、古いルーチンで提供されていた機能を使用できない場合があります。
私の以前の質問の参照はここにあります
windows - フック静的にリンクされた「malloc」関数ファミリー
Detoursを使用して、ソース コードにアクセスせずにターゲット .exe の malloc/free をフックしています。
.exe から動的にリンクされる malloc/free をフックすることに成功しました。
Detours を使用して、静的にリンクされた malloc/free をフックできるかどうか疑問に思っています。
malloc/free コードは既に .exe 内にあり、それらを見つけることさえ困難であるため、それはより困難になる可能性があることを理解しています。「malloc」は「0x804f400」のようになる場合があります。しかし、.exe 内の malloc/free 関数を見つけることができる他の手法が存在する可能性があると思います。
誰もそれを試しましたか?それとも単に実現不可能ですか?
detours - Lnk エラー 2019 および 1120
迂回路のソリューションを構築するのに問題があります。次のようなエラーが表示されます。
エラー LNK2019: 関数 _DetourAttachEx@20 で参照されている未解決の外部シンボル _DetourCopyInstruction@20 および
エラー LNK1120: 1 つの未解決の外部情報。
私は今どうすればいい?
opengl - DetourCreateProcessWithDll を使用すると wglMakeCurrent が失敗する
私はDetourCreateProcesswithDLL
Visual Studio 2010 で使用しており、 glut デモ プログラムから abgr.exe デモ アプリケーションのプロセスを作成しながら、 Opengl32.dll 、 glu32.dll 、 glut32.dll の代替 dll を提供しています。
そうすれば、Opengl32、glu32、glut32 ライブラリを傍受できます。API は、システム フォルダまたは通常の dll からそれぞれの API を呼び出します。
これらの dll には、それぞれのライブラリで定義されたすべての API があります。
問題は、wglMakeCurrent
Win 7 x64 ビットの NVidia GTX480 で abgr.exe のような glut デモ アプリで 0 を返すか失敗することです。他のデモアプリでも動作しません。
abgr.exeまたは呼び出しているGLIntercept実行可能ファイルの互換性を変更すると機能しますDetourCreateProcesswithDLL
。つまり、exe を右クリック -> プロパティの変更 -> 互換性 -> 256 色で実行を確認します。
ただし、これは回避策のように見え、ディスプレイはそれほど見栄えがよくありません。それをしなくてもどうやって使うことができますか。の適切な値を取得する方法wglMakeCurrent
。
wglMakeCurrent
内から呼び出されますglutCreateWindow
。
これは、AMD Fusion GPU の問題ではありません。そこwglMakeCurrent
に良い値を返します。この問題は NVIDIA GTX 480 でのみ発生します。この問題を解決する方法を知っている人はいますか? ドライバーを更新したところ、NVIDIA コントロール パネルの [ヘルプ] -> [バージョン情報] にバージョン 4.3.790.0 が表示されます。
wglCreateContext は 0x00010000 を返します
linux - 迂回と GCC インライン アセンブリ (Linux)
(私たち) modder に API を提供するゲームの拡張機能をプログラミングしています。この API はさまざまなものを提供しますが、1 つの制限があります。API は「エンジン」専用です。つまり、エンジンに基づいてリリースされたすべてのモディフィケーション (モッド) は、いかなる種類の (モッド固有の) API も提供または持っていません。「署名スキャナー」を作成しました (注: 私のプラグインは共有ライブラリとしてロードされ、-share と -fPIC でコンパイルされます) 対象の関数を見つけます (これは Linux を使用しているので簡単です)。説明するために、特定のケースを取り上げます。目的の関数へのアドレスを見つけました。その関数ヘッダーは非常に単純です。int * InstallRules(void);
. 何も (void) を取り、(関心のあるオブジェクトへの) 整数ポインターを返します。今、私がやりたいことは、迂回を作成することです (関数の開始アドレスがあることを覚えておいてください)、自分の関数に、次のように動作させたいと思います:
これが取引です。私は関数フックについてまったく経験がなく、インライン アセンブリについての知識はほとんどありません (AT&T のみ)。インターネット上の事前に作成された迂回パッケージは、Windows専用であるか、まったく別の方法を使用しています (つまり、dll をプリロードして元のパッケージを上書きします)。だから基本的に; 軌道に乗るにはどうすればいいですか?呼び出し規則 (この場合は cdecl) について読んで、インライン アセンブリについて学ぶべきですか、それとも何をすべきですか? おそらく、Linux 迂回路用の既に機能するラッパー クラスが最適でしょう。最後に、次のような単純なものが欲しいです。
ここで完全に満足のいく答えを得ることができないことは理解していますが、私はここで薄い氷の上にいるので、道順についていくつかの助けをいただければ幸いです...迂回路について読みましたが、ほとんどありませんドキュメント (特に Linux の場合) はまったくありません。「トランポリン」として知られているものを実装したいと思いますが、この知識を習得する方法を見つけることができないようです。
注: _thiscall にも興味がありますが、私が読んだ限りでは、GNU 呼び出し規約 (?) で呼び出すのはそれほど難しくありません。
c++ - 迂回キャプチャ テクスチャ
レーシング ゲームがあり、テレメトリと統計を収集する必要があります。さらにHUDを追加するには
迂回路をまとめました。そして、アプリケーション ウィンドウの名前を変更するフックを作成できます。
withdll.exe で実行します。大丈夫。
しかし、direct3d をインターセプトする方法がわかりません。APIモニターの助けを借りて、プログラムが使用していることがわかりましたMicrosoft.Xna.Framework.Graphics.dll
IDirect3DDevice9::SetTexture
誰かがこのテクスチャを取得する方法を教えてもらえますか? 一般的に、リンクのようなものを取得したいと思います