問題タブ [codecave]
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# - C#理論:asmのコードケーブにJMPを書き込む
コードケーブが配置されているアドレスをVirtualAllocEx
(アドレスを返す)を使用して割り当て、を使用してそのアドレスにコードを書き込んだとしますWriteProcessMemory()
。
ここに質問があります:
コードケーブへのジャンプを作成するにはどうすればよいですか?ジャンプが「」で始まることは知ってE9
いますが、返されるアドレスVirtualAllocEx
を正しいUInt32(dword)に変換して、デバッガー/コンパイラーが命令を理解できるようにするにはどうすればよいですか?
例えば:
私は住所00402020
(ネイティブアプリのOEP)にいます。004028CF
(空の場所)" "へのジャンプを書きJMP 004028CF
ます。バイト単位の命令は次のようになります。
「E9
」は、JMPを示す方法です。「AA080000
」はどうですか、これを生成するにはどうすればよいですか?
JMPをコードケーブに初期化できるように、同様のことを行う必要があります。コードケーブは、によって返されるアドレスにありますVirtualAllocEx()
。
どんな助けでもありがたいです!
前もって感謝します。
assembly - コード ケーブとは何ですか? また、正当な用途はありますか?
StackOverflow の質問「 C# Theoretical: Write a JMP to a codecave in asm 」で初めてこの単語に遭遇しました。Wiktionaryによると、コード ケーブは次のとおりです。
誰か (通常はソフトウェア クラッカー) がカスタム プログラミング コードを挿入してプログラムの動作を変更するために使用できる未使用のメモリ ブロック。
正しい定義を見つけましたか? もしそうなら、コード ケイブの正当な使用法はありますか?
c++ - 作成しようとしているトレーナーの問題 (教育目的)
教育目的で Icy Tower 1.4 のトレーナーを作成しようとしています。
私はそのような WriteProcessMemory 関数を短縮する関数を書きました:
これが、Icy Tower Clock を停止する関数です。
else ステートメントには、オペコードの元の AOB があります。status パラメーターを 1 に設定して ClockHack 関数を呼び出すと、ゲームがクラッシュします。
Cheat Engine では、このためにスクリプトを書きましたが、Code Cave を実行したため、同じアドレスに正確に書き込むことはできず、うまく機能します。
誰かが理由を知っていますか?ありがとうございました。
ちなみに、これは教育目的のみです。
winapi - エクスポートテーブルには、Win32 Exe関数のすべてのエントリが含まれていますか?
Exportテーブル内に含まれるすべてのWin32(PEファイル)関数またはクラスメソッドを知る必要があります。この情報はどこで入手できますか?PEファイル形式のすべてのセクションを理解していますが、続行する方法がわかりません。
c++ - コードケイブでスレッドを注入する
「codecave」手法を使用してコードを別のプロセスに挿入する。コードを挿入して新しいスレッドを作成し (また、新しいスレッドのコードを挿入し)、そのスレッドをターゲット プロセスのメイン スレッドと並行して実行することは可能ですか?
これは dll インジェクションで管理できますが、純粋なコード インジェクションだけで可能かどうかを知りたいです。
まず第一に、さまざまな注入手法について学習することを目的としていますが、最終的には、実行を監視するためにランダム プロセスのハートビート機能を作成します (高可用性)。Windows がターゲット OS で、言語は C/C++ (必要に応じてインライン ASM を使用) です。
ありがとう。
c++ - VirtualAlloc C ++、挿入されたdll、asm
アプリケーションでコードケーブ用のスペースを予約したい。VirtualAlloc関数を使用してこのスペースを予約します。Xの質問があります。
コードケイブにメモリを割り当てるには、どのパラメータ(割り当てタイプと保護)を使用する必要がありますか?
戻り値として、コードケーブのアドレスを取得します。プログラムの他の部分では、そのコードケーブにJMPしたいと思います。どうやってするの?私は、JMPが現在の場所からオフセットされたアグメントヌーバーとして受け取ることを知っています(私が間違っている場合は訂正してください)。しかし、私はコードケーブにJMPしたいと思います。このオフセットを計算する方法。
.net - MANAGED(.NET) プロセスをフックし、そのプロセス内の情報を収集する方法は?
マネージ (C#、C++/CLI) プロセスをフックする必要があります。ウィンドウの数 (関連するコントロールとそのプロパティ) に関する情報を見つけて、C# マネージ コードで記述されたターゲット アプリケーションに送信する必要があります。
そのために 私は何をする必要がありますか?その管理されたプロセスの IAT (インポート アドレス テーブル) と EAT (エクスポート アドレス テーブル) を調査する必要がありますか? C++ でインジェクター DLL を作成する必要がありますか? IAT と EAT の変更以外に何が必要ですか?
[編集]管理された実行中のプロセスをアプリケーションにアタッチする必要があります(他のプロセスをホストまたはアタッチします)。プロセスをアタッチした後、そのプロセスのウィンドウに関連付けられているすべてのコントロールのプロパティを取得する必要があります。
その接続されたプロセスのウィンドウを 1 つずつ反復し、そのウィンドウに関連付けられているすべてのコントロールを列挙し (コントロールの ID、名前、色、位置、サイズなどを取得します)、この情報全体を他のアプリまたはアプリに送信します。他のアプリを接続しました(実際には、ホストとしてのそのアプリは、その情報を使用して同じコントロールを再描画する必要があります。なぜこれを行う必要があるのか を尋ねないでください:-))
よろしくウスマン
c# - C# および C++/CLI でインジェクターのフックされたプロセスからデータをシリアル化する方法は?
インジェクターのフックされたプロセスからデータをシリアル化する際に、奇妙な問題に直面しています(スパイdllを他のプロセスに注入しました)。スパイ dll を他のマネージド プロセスに正常に着陸させています。しかし、そのspyDll(フックされた他のマネージドプロセス内に実際に着陸した)からカスタムオブジェクトをシリアル化したい場合、ここで問題が発生します。ここでは、データとリストまたは .NET 辞書をシリアル化したいと考えていますDictionary<IntPtr,List<Objects>>
。Dictionary<IntPtr,List<Objects>>
「シリアル化できません.....」などの例外が発生することもあれば、フックされたプロセス内のすべてのクラスと型をシリアル化可能としてマークすることもあります。私もそれを行うためにJsonを試しましたが、どういうわけか適切に使用できませんでした。
スパイ dll からインジェクターにデータを正常に取得する経験を持つ任意のボディは、インジェクターを使用しているモジュールに送信され、フックとインジェクションを介してリモート プロセスからデータを取得できます。シリアル化は、単純なコンソール ベースで完全に正常に動作します。アプリケーションですが、MessageHookProc
管理されたアセンブリを他の管理されたプロセスにロードする機能があるため、データを取得する方法はまったく異なります。
.NET プロセスのインジェクションとフックの専門家であり、フックされたプロセスの情報をうまく使用した組織はありますか?
ノート :
====
プロセス間通信として.NETリモーティングを介して、フックされたプロセスからフックプロセス(インジェクターとスパイDLLの助けを借りて他のプロセスをフックしたプロセス)にデータをディスパッチするために必要な提案はありますか?フックされたプロセスからフックされたプロセスへのデータのシリアル化の解決策がない場合...?
よろしく
ウスマン
c++ - エクスポート機能が利用できないネイティブ プロセスをフックする方法は?
ネイティブ プロセスのリバース エンジニアリングの問題を解決する必要があります。いくつかのコントロール (TextBox、Buttons、TextAreas、ComboBoxes など) を持つ管理されていない .exe があります。コントロールにすべてのデータを入力した後、ユーザーは「開く」を押します。
実際には、モデム ポートを開き、AT コマンドを送信します。モデムの COM ポートに送信されるデータとメッセージのフォーマットを確認したい。
したがって、プロセスをリバースエンジニアリングして関数をフックする必要がある方法(ほとんどの場合、モデムポートを「開く」関数であり、ユーザーが「開く」をクリックすると呼び出されます)。
提案?? 私の指示は正しいです。その機能をフックする必要がありますか?注射後、私の目標は達成されます.
ノート:
EXPORTED 関数は検出されません。そのために CFF/PE Explorer を使用しました。
よろしくウスマン