Reklama
Dzisiaj jest 10 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

Objdump

objdump to program analizujący pliki obiektowe (tzn. ze skompilowanym kodem).

Reklama

Przykład

Lista dynamicznie relokowanych symboli, które będą podłączane do odpowiedniej biblioteki dzielonej

$ objdump -R hello
hello: file format elf32-i386
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
080495b4 R_386_GLOB_DAT __gmon_start__
080495ac R_386_JUMP_SLOT __libc_start_main
080495b0 R_386_JUMP_SLOT printf

Przykład 2

Fragment wyjścia deasemblacji programu hello world (objdump -S ./hello).
Odpowiednie fragmenty są oznaczone odpowiadającymi im częściami kodu (które są zachowane w pliku obiektowym dzięki opcji -g kompilatora gcc)

08048364

:
#include
int main()
{
8048364: 55 push %ebp
8048365: 89 e5 mov %esp,%ebp
8048367: 83 ec 08 sub $0x8,%esp
804836a: 83 e4 f0 and $0xfffffff0,%esp
804836d: b8 00 00 00 00 mov $0x0,%eax
8048372: 29 c4 sub %eax,%esp
printf(„Hello, world\n”);
8048374: c7 04 24 a4 84 04 08 movl $0x80484a4,(%esp,1)
804837b: e8 08 ff ff ff call 8048288 <_init+0x38>
return 0;
8048380: b8 00 00 00 00 mov $0x0,%eax
}
8048385: c9 leave
8048386: c3 ret
8048387: 90 nop
8048388: 90 nop
8048389: 90 nop
804838a: 90 nop
804838b: 90 nop
804838c: 90 nop
804838d: 90 nop
804838e: 90 nop
804838f: 90 nop
08048390 <__libc_csu_init>:
8048390: 55 push %ebp
8048391: 89 e5 mov %esp,%ebp
8048393: 57 push %edi
8048394: 56 push %esi
8048395: 31 f6 xor %esi,%esi
8048397: 53 push %ebx
8048398: 83 ec 0c sub $0xc,%esp
804839b: e8 a0 00 00 00 call 8048440 <__i686.get_pc_thunk.bx>
80483a0: 81 c3 00 12 00 00 add $0x1200,%ebx
80483a6: e8 a5 fe ff ff call 8048250 <_init>
80483ab: 8d 93 14 ff ff ff lea 0xffffff14(%ebx),%edx
80483b1: 8d 83 14 ff ff ff lea 0xffffff14(%ebx),%eax
80483b7: 29 c2 sub %eax,%edx
80483b9: c1 fa 02 sar $0x2,%edx
80483bc: 39 d6 cmp %edx,%esi
80483be: 73 1c jae 80483dc <__libc_csu_init+0x4c>
80483c0: 89 d7 mov %edx,%edi
80483c2: 8d b4 26 00 00 00 00 lea 0x0(%esi,1),%esi
80483c9: 8d bc 27 00 00 00 00 lea 0x0(%edi,1),%edi
80483d0: ff 94 b3 14 ff ff ff call *0xffffff14(%ebx,%esi,4)
80483d7: 46 inc %esi
80483d8: 39 fe cmp %edi,%esi
80483da: 72 f4 jb 80483d0 <__libc_csu_init+0x40>
80483dc: 83 c4 0c add $0xc,%esp
80483df: 5b pop %ebx
80483e0: 5e pop %esi
80483e1: 5f pop %edi
80483e2: 5d pop %ebp
80483e3: c3 ret
80483e4: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
80483ea: 8d bf 00 00 00 00 lea 0x0(%edi),%edi

Kategoria:Narzędzia do analizy programów

Reklama
Reklama
Reklama