2013-03-07 52 views
0

我在玩逆向工程軟件。我有基本的編碼經驗,但只有像java和python這樣的頂級語言。十六進制彙編編輯器命令入門?

我已經解散了一些exe的IDA pro來徘徊流程結構,並使用Hex Workshop編輯十六進制代碼並重新編譯。所以,我將所有這些機制都關閉了,並且可以成功創建我編輯的exe文件。

對於這些命令是什麼以及它們是如何工作的,有沒有什麼好的指導?我用google-fu找不到任何東西。我甚至不知道他們叫什麼。它與我習慣的編碼完全不同,我真的很難在腦海中解析它。

我在說的是jz,jnz,eax,lea,mov,cmp等等。我可以找到一些對單個命令的分散引用,這些引用有點幫助,但不足以用來做有用的事情。我正在爲整個主題尋找一本好的入門書。我可以深入瞭解一些事情,並基本瞭解他們的工作以及如何改變他們做我想做的事情。

謝謝。

+0

查找「彙編語言」指南,專門針對x86或x86-64。 Reinhart的答案有一個鏈接到參考資料,但您可能想在使用它之前閱讀教程。 – mkfs 2013-03-07 08:42:00

回答

0

您需要確定編譯EXE的CPU。然後你谷歌這個CPU的彙編語言。在不太可能的情況下,您沒有找到它,您可以搜索CPU的數據表。

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。具體而言,您需要第2卷指令集參考A-Z。

+1

我總是很驚訝人們不知道英特爾手冊。如果您要做(x86)二進制分析,這些至關重要!一個小提示:在查看二進制代碼時(即拆卸,而不是彙編),請務必參考英特爾手冊第2卷中的「附錄A:操作碼映射」(當前位於Vol-2b PDF中)。雖然Vol 2允許您通過助記符查找asm指令,但Opcode Map允許您通過opcode(字節編碼)查找指令。 – mkfs 2013-03-07 08:16:49