사용할 때마다 사소한게 자꾸 헷갈려서 대충 적어둔다.
section .text
global main
;extern printf
main :
xor eax, eax
mov ecx, 100
cmp ecx, 0
je $ + 0x7
add eax, ecx
dec ecx
jmp $ - 0x8
push eax
ret
nop
nop
section .data
;string db "%d", 0
위는 short jump를 이용하여 1부터 100까지 더하는 for문 코드이다. 위처럼 대충 작성한 다음 다음처럼 nasm과 gcc를 이용하여 컴파일할 수 있다.
ch4rli3kop at ubuntu in ~
$ nasm -f elf32 test.asm -o test.o
ch4rli3kop at ubuntu in ~
$ gcc -m32 test.o -o test
ch4rli3kop at ubuntu in ~
$ objdump -d test -M intel | grep "\<main\>" -A4
000004f0 <main>:
4f0: 31 c0 xor eax,eax
4f2: b9 64 00 00 00 mov ecx,0x64
4f7: 83 f9 00 cmp ecx,0x0
4fa: 74 05 je 501 <main+0x11>
4fc: 01 c8 add eax,ecx
4fe: 49 dec ecx
4ff: eb f6 jmp 4f7 <main+0x7>
501: 50 push eax
502: c3 ret
503: 90 nop
504: 90 nop
'Information* > 알면도움됨' 카테고리의 다른 글
linux include 파일 찾기 (0) | 2020.06.26 |
---|---|
gif 편집할 때 (0) | 2020.06.24 |
IDA JNI Function 적용하기 (0) | 2020.05.25 |
[Visual Studio 2017] CL Casting Error (0) | 2020.05.10 |
vmware bridge (0) | 2020.05.06 |