2016-11-15 72 views
0

我試圖讓一個腳本或程序,將採取給予字節(以十六進制表示),並將其轉換成一個x86指令(例如C3 - > retq)如何把十六進制代碼爲x86指令

我試着通過只含

retq 
retq 

部件文件調用gcc -c,然後做它用腳本,將它說:「C3 C3」字節,然後使用objdump -d,看看它現在說。但它似乎會弄亂文件的格式,除非我只傳遞與原始指令字節相同大小的指令。

我使用SSH,BASH終端在Raspbian Pi(基於Linux的操作系統)上運行它。我正在使用BASH shell腳本和python,以及這裏列出的工具和gdb。

回答

4

反彙編平面二進制文件:objdump -D -b binary -m i386 foo.bin。或者使用來自彙編源的指令.byte創建目標文件,例如把.byte 0xc3foo.s然後gcc -c foo.s然後objdump -d foo.o

+1

如果你從字面上有hexdump都可以,不是非此即彼,你也可以將十六進制「undump」回二進制就可以拆卸。 'xxd -r'就是這樣做的,它可能比按照逗號分隔的字節列表更容易,作爲操作數指向'.byte'指令。 –

+0

非常感謝!這兩個工作非常好=] – Testare