Information*/알면도움됨

nasm을 이용한 asm 코딩

ch4rli3kop 2020. 5. 26. 03:05
반응형

nasm을 이용한 asm 코딩

사용할 때마다 사소한게 자꾸 헷갈려서 대충 적어둔다.

test.asm

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