Loading article…
コードケーブとは、プロセスのメモリ内 にある未使用のバイト列のことです。プロセスのメモリ内にあるコード ケーブは、多くの場合、カスタム命令を挿入する能力を持つセクションへの参照です。
一般的な用途
コード ケイブの概念は、ハッカーやリバース エンジニアがコンパイル済みプログラムで任意のコードを実行するためによく使用されます。これは、追加のダイアログ ボックス、変数の変更、またはソフトウェア キー検証チェックの削除など、コンパイル済みプログラムに変更を加えるのに役立つ方法です。多くの場合、多くのCPU アーキテクチャで一般的に見られる呼び出し命令を使用して、コードは新しいサブルーチンにジャンプし、次のアドレスをスタックにプッシュします。サブルーチンの実行後、戻り命令を使用して、スタックから前の位置をプログラム カウンターにポップできます。これにより、既存のプログラムは、プログラム フロー自体に大きな変更を加えることなく、新しく追加されたコードにジャンプできます。
利点
- 簡単かつ高速 – これは、変更プロセスが高速かつ簡単であることを意味します。OllyDbg などのツールを使用して既存のコードを変更する場合、追加された関数は外部の依存関係なしで組み立ててテストできます。
- ソースは不要 –プログラマーにソース コードが提供されていない場合でも、コード ケイブを使用すると非常に効率的です。これにより、プログラマーは、プログラム全体を書き直したり、既存のプロジェクトに外部依存関係をリンクしたりすることなく、コード内の関数の追加や削除などの調整を行うことができます。
デメリット
- プログラムの破壊が容易 – 多くの場合、実行可能ファイルが変更されます。つまり、スクリプトで提供されるリソースが不足しているため、既存のスクリプトにコード インジェクション用のコード ケイブが存在しない可能性があります。既存のスクリプトを置き換えると、プログラムの障害/クラッシュが発生する可能性があります。
- 汎用性の欠如 – 既存のスクリプトにコードを挿入すると、限られたスペースでは単純な命令の変更しかできず、使用される言語はアセンブリのみになります。共有ライブラリ インジェクター ( DLL インジェクション[Windows] または LD_PRELOAD [Linux]) を使用すると、この問題を軽減できます。共有ライブラリ インジェクターを使用すると、挿入されたライブラリに既にコンパイルされたコードが含まれ、ターゲット バイナリ内の既存の命令は、そのコードを使用するために単純に変更されます。
ツール
- pycave: Portable Executable (PE) ファイル内のコード洞窟を見つけるためのシンプルなツール。[1]
- OllyDbg : コード分析用のデバッガー。スクリプトの呼び出しと実行をトレースし、ライブラリとバイナリの反復を表示します。このデバッガーを使用すると、EXE ファイルに直接コードを挿入したり、EXE ファイルからコードを削除したりできます。
- PE: エクスプローラー: PE ファイル(ポータブル実行可能ファイル)と呼ばれる実行可能ファイルを開いて編集できます。これには、.EXE、.DLL、およびその他のあまり一般的ではないファイル タイプが含まれます。
- Cheat Engine : プロセス メモリを読み取り、プロセス メモリに書き込む強力なツールです。これにより、クライアント側のデータ値を変更および編集できます。また、値の変更を表示することもできます。
- TSearch: プロセスメモリの読み取りと書き込みを行う強力なツール。Cheat Engineと同様に、クライアント側の値データを変更できます。[2] [3] [4] [5]
参考文献
- ^ “Pycave”. GitHub . 2021年10月27日.
- ^ Codecaves 初心者ガイド - CodeProject
- ^ バイナリの変更: スプラッシュダイアログの追加 2014-04-07 にWayback Machineでアーカイブ
- ^ ゲームハッキング - Code Caves の利用 2014-04-07ウェイバックマシンにアーカイブ
- ^ コード洞窟の理論と方法
外部リンク
- コード洞窟の説明(ドイツ語)
