1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
SECTION header vstart=0
program_length dd program_end head_len dd header_end
stack_seg dd 0 stack_len dd 1 prgentry dd start code_seg dd section.code.start code_len dd code_end
data_seg dd section.data.start data_len dd data_end
salt_items dd (header_end-salt)/256 salt: PrintString db '@PrintString' times 256-($-PrintString) db 0 TerminateProgram db '@TerminateProgram' times 256-($-TerminateProgram) db 0 ReadDiskData db '@ReadDiskData' times 256-($-ReadDiskData) db 0 header_end:
SECTION data vstart=0
message_1 db 0x0d,0x0a db '[USER TASK]: Hi! nice to meet you,' db 'I am run at CPL=',0 message_2 db 0 db '.Now,I must exit...',0x0d,0x0a,0
data_end:
[bits 32]
SECTION code vstart=0 start: mov eax,ds mov fs,eax mov eax,[data_seg] mov ds,eax mov ebx,message_1 call far [fs:PrintString] mov ax,cs and al,0000_0011B or al,0x0030 mov [message_2],al mov ebx,message_2 call far [fs:PrintString] call far [fs:TerminateProgram] code_end:
SECTION trail
program_end:
|