0

リバースエンジニアリングソフトウェアで遊んでいます。基本的なコーディングの経験はありますが、Java や Python などのトップレベルの言語しか使用していません。

いくつかの exe を IDA pro で逆アセンブルしてフロー構造を調べ、Hex Workshop を使用して 16 進コードを編集し、再コンパイルしています。したがって、これらのメカニズムはすべてダウンしており、編集した exe を正常に作成できます。

コマンドとは何か、どのように機能するかについての良いガイドはありますか? 私のgoogle-fuでは何も見つかりませんでした。彼らが何と呼ばれているのかさえわかりません。私が慣れ親しんでいるコーディングとは非常に異なるため、頭の中で解析するのに本当に苦労しています。

jz、jnz、eax、lea、mov、cmp などについて話しています。個々のコマンドへの参照が散在していて、多少は役に立ちますが、有用なことを行うには十分ではありません。主題全体の優れた入門書を探しています。私が掘り下げて、彼らが何をしているのか、そして私が望むようにそれらを変更する方法についての基本的な理解を得ることができる何か.

ありがとう。

4

2 に答える 2

1

jzmov、など...それらはコマンドではなく命令と呼ばれます(レジスタeaxである を除く)。

編集しているバイトはオペコードと呼ばれ、プロセッサがメモリからフェッチして命令にデコードするものです。

例:あなたが見たとき

.text:00428E4A  8B F0    mov   esi, eax

この行を説明する正しい方法は次のとおりです。アドレス 0x00428E4A にはオペコード 8B F0 があります。これらのオペコードはmov命令にデコードされ、ソース オペランドはeaxレジスタ、デスティネーション オペランドはesiレジスタです。

ここでの重要な情報の確実な情報源は、Intel® 64 and IA-32 Architectures Software Developer Manualsです。具体的には、Volume 2、Instruction Set Reference、AZ が必要です。

于 2013-03-07T06:51:42.073 に答える
0

EXE がコンパイルされた CPU を特定する必要があります。次に、この CPU のアセンブリ言語をググってみます。まれに、CPU のデータシートを検索しても見つからない場合があります。

于 2013-03-07T06:51:12.543 に答える