官术网_书友最值得收藏!

The Linux Assembly template (32-bit)

On Linux, although files on disc are divided into sections, executables in memory are divided into code and data segments. The following is our template for the ELF 32-bit executable for Linux:

; File: src/template_lin.asm

; Just as in the Windows template - we tell the assembler which type
; of output we expect.
; In this case it is 32-bit executable ELF
format ELF executable

; Tell the assembler where the entry point is
entry _start

; On *nix based systems, when in memory, the space is arranged into
; segments, rather than in sections, therefore, we define
; two segments:
; Code segment (executable segment)
segment readable executable

; Here is our entry point
_start:


; Set return value to 0
xor ebx, ebx
mov eax, ebx

; Set eax to 1 - 32-bit Linux SYS_exit system call number
inc eax

; Call kernel
int 0x80


; Data segment
segment readable writeable
db 0


; As you see, there is no import/export segment here. The structure
; of an ELF executable/object file will be covered in more detail
; in chapters 8 and 9

As was mentioned in the preceding code, these two templates will be used as a starting point for any code we will write in this book.

主站蜘蛛池模板: 宁化县| 安宁市| 寿阳县| 沁阳市| 偏关县| 玉林市| 丰镇市| 蓝田县| 山西省| 奉贤区| 犍为县| 抚宁县| 泌阳县| 南木林县| 五莲县| 澄城县| 永年县| 潜山县| 平南县| 潼关县| 林州市| 丹凤县| 乌什县| 方山县| 珲春市| 象州县| 丘北县| 堆龙德庆县| 抚顺县| 东港市| 如皋市| 高唐县| 乌拉特后旗| 郯城县| 苏尼特左旗| 临洮县| 河津市| 上林县| 汕头市| 鹤壁市| 巴林左旗|