From b590f4ed4db110bb61da35fec288a467d32c9a62 Mon Sep 17 00:00:00 2001 From: johannst Date: Sun, 5 Feb 2023 17:28:38 +0000 Subject: deploy: 728d263753b998b8944a66eec1be0e743961fa1c --- binary/objdump.html | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'binary') diff --git a/binary/objdump.html b/binary/objdump.html index e61f55a..e97b853 100644 --- a/binary/objdump.html +++ b/binary/objdump.html @@ -157,6 +157,39 @@

Disassemble section

For example .plt section:

  objdump -j .plt -d <elf>
+
+

Example: disassemble raw binary

+

This can be helpful for example as a cheap analysis tool when toying with JIT +generating code. We could just write thee binary code buffer to a file and +disassemble with objdump.

+

To re-create that case, we just assemble and link some ELF file and then create +a raw binary of the text section with objcopy.

+
# file: test.s
+.section .text, "ax"
+
+.global _start
+_start:
+    xor %rax, %rax
+    mov $0x8, %rax
+1:
+    cmp $0, %rax
+    je 2f
+    dec %rax
+    jmp 1b
+2:
+    # x86-64 exit(2) syscall
+    mov $0, %rdi
+    mov $60, %rax
+    syscall
+
+
# Assemble & link.
+as -o test.o test.s
+ld -o test test.o testc.o
+# ELF -> binary (only take .text section).
+objcopy -O binary --only-section .text test test-bin
+
+# Disassemble raw binary.
+objdump -D -b binary -m i386:x86-64 test-bin
 
-- cgit v1.2.3