ASM 1 - 2009/04/09
- 지역변수는 ebp - 로 접근
- 매개변수는 ebp + 로 접근
Add, Sub, Mul, Div # 산술 연산.
AND, OR, XOR # 논리 연산
AND EAX, EBX
XOR EAX, EAX <------ return 0; # 0을 리턴.
- // EAX 에 리턴값을 저장해서 보낸다. //
레지스터를 0으로 초기화 시킬때 XOR 사용.
push => 스택에 값을 저장한다.
- 백업
- 매개변수 전달
pop => 스택의 값을 뒤의 오퍼랜드에 저장. 후, esp - 4
> label || 명령 || Operands || ; 주석
Operands => 피연산자 들의 사이즈는 동일해야 한다.
mov esp, ebp / 리눅스는 방향 반대 /
레지스터/메모리주소. || 레지스터/메모리주소/값
-
세그먼트 레지스터들끼리는 연산을 할 수 없다.
- mov eax, DS
- mov CS, eax
- .586
- .model flat, stdcall
- option casemap:none
- include c:\masm32\include\user32.inc
- includelib c:\masm32\lib\user32.lib
- .data
- Titletxt db "샘플 프로그램", 0h
- Text db "Hello World~!",0h
- .code
- main proc
- pushebp
- movebp, esp
- push60h
- pushoffset Titletxt
- pushoffset Text
- push0
- callMessageBoxA
- movesp, ebp
- popebp
- ret
- main endp
- end main
0012FFC0 0012FFF0 # Main 스택 프래임. 이 지점부터 메인 함수가 사용.
0012FFC4 7C817067 RETURN to kernel32.7C817067 # OS로 돌아갈 주소.
0012FFC8 7C940208 ntdll.7C940208
0012FFCC FFFFFFFF
0012FFD0 7FFDA000
0012FFD4 805532FA
0012FFD8 0012FFC8
0012FFDC 89A70020
0012FFE0 FFFFFFFF End of SEH chain
0012FFE4 7C839AC0 SE handler
0012FFE8 7C817070 kernel32.7C817070
0012FFEC 00000000
0012FFF0 00000000 # main 함수를 호출한 함수의 ebp 위치
0012FFF4 00000000
0012FFF8 00401005 Noname1.<ModuleEntryPoint>
0012FFFC 00000000
Stepover => F8
ASM code
output
ABI = 함수 호출 규약
-
예약어
- 명령어
- 지시어
db => Define Byte.
0h => NULL
함수 프롤로그
push ebp
mov ebp, esp
함수 에필로그
mov esp, ebp
pop ebp
ret
MessageBox FunctionDisplays a modal dialog box that contains a system icon, a set of buttons, and a brief application-specific message, such as status or error information. The message box returns an integer value that indicates which button the user clicked.
Syntax
int MessageBox(
HWND hWnd, # 0 LPCTSTR lpText, # Text LPCTSTR lpCaption, # TextTitle UINT uType # 60h );
이 글은 스프링노트에서 작성되었습니다.
'Programming > Reversing' 카테고리의 다른 글
WinDBG (0) | 2009.04.23 |
---|---|
IDIV (0) | 2009.04.12 |
MASM32 / EditPlus 연동 (0) | 2009.04.09 |
Register (0) | 2009.04.08 |
Memory (0) | 2009.04.08 |
댓글