Proses Pembuatan ELF author: mywisdom Dari suatu source code misal dari bahasa c hingga menjadi elf executable akan melalui 3 proses: 1. Proses Kompile 2. Proses Assemble 3. Proses Linking misal dari bahasa c. proses kompile akan mengubahnya ke bahasa assembly. Selanjutnya proses assemble bertujuan mengubah dari bahasa assembly ke binary (object). dan proses terakhir adl linking bertujuan untuk menggabungkan / menghubungkan semua objek menjadi 1 elf executable. misal kita siapkan sebuah file c sederhana dg fungsi puts() puts.c: #include int main() { puts("a"); } selanjutnya untuk melakukan kompile dengan gcc -S : gcc -S puts.c di mesin saya kurang lebih seperti inilah kode assembly at&t yang dihasilkan: # cat puts.s .file "puts.c" .section .rodata .LC0: .string "a" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $20, %esp movl $.LC0, (%esp) call puts addl $20, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (Ubuntu 4.3.2-1ubuntu12) 4.3.2" .section .note.GNU-stack,"",@progbits Selanjutnya untuk melakukan assembly untuk generate file object, bisa menggunakan : as # as -o puts.o puts.s puts.cmainputs file puts.o adl binary bahasa mesin hasil konvert dari kode assembly di atas di kode asm di atas terlihat ada fungsi main .globl main .type main, @function main: kita akan menggunakan gcc untuk proses linking: # gcc -o puts puts.o # ./puts a ? ? ?Q?A^%8\ \\04( ?L$????q?U??Q?? cat puts.oELF