![](/img/trans.png)
[英]Difference between: Opcode, byte code, mnemonics, machine code and assembly
[英]Any way to get the mnemonics from the machine code?
我有一個簡單的程序集程序
.text
.globl _start
_start:
movl $1, %eax
movl $1, %ebx
int $0x80
我已經組裝好了。 我已將其內容轉儲如下
root@bt:~# objdump -d out
out: file format elf32-i386
Disassembly of section .text:
08048054 <_start>:
8048054: b8 01 00 00 00 mov $0x1,%eax
8048059: bb 01 00 00 00 mov $0x1,%ebx
804805e: cd 80 int $0x80
現在我的問題是,如果只給出下面的機器代碼\\xb8\\x01\\x00\\x00\\x00\\xbb\\x01\\x00\\x00\\x00\\xcd\\x80
,我可以找回助記符\\xb8\\x01\\x00\\x00\\x00\\xbb\\x01\\x00\\x00\\x00\\xcd\\x80
在如何反匯編原始x86代碼中有相當詳細的記錄?
為了做你的具體例子,這對我有用(在Linux機器上,使用GNU工具鏈):
printf '\xb8\x01\x00\x00\x00\xbb\x01\x00\x00\x00\xcd\x80' > /tmp/binary
objdump -D -b binary -mi386 /tmp/binary
以此作為選項的簡短文檔:
[-D|--disassemble-all]
[-b bfdname|--target=bfdname]
[-m machine|--architecture=machine]
i386指定目標。 我不得不從原始示例命令中刪除addr16和data16,否則這將無法工作。
您只需要告訴objdump
您想要在純二進制文件上操作:
$ hexdump -vC binaryFile
00000000 b8 01 00 00 00 bb 01 00 00 00 cd 80 |............|
0000000c
$ objdump -D -b binary -m i386 binaryFile
binaryFile: file format binary
Disassembly of section .data:
00000000 <.data>:
0: b8 01 00 00 00 mov $0x1,%eax
5: bb 01 00 00 00 mov $0x1,%ebx
a: cd 80 int $0x80
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.