2010년 5월 10일
. : 지시자
.model : 메모리의 형태, stdcall은 함수호출 규약
Option casemap:none : -
.code : 여기부터 코드의 시작
Main proc : main함수 시작
Push ebp : 이전 함수의 stack frame 시작점을 백업
Mov ebp, esp : 새로운 stack frame을 오픈(새로운 함수의 시작점이 ebp에 저장됨 - esp가 최근 데이터의 주소 값을 가지고 있으므로)
→ 여기까지가 함수 프롤로그(prologue)
- Stack Frame을 설정하는 코드
Mov esp, ebp : esp가 실행 중인 함수의 스택 프레임 시작점을 가리키게됨 이곳에는 이전 함수의 스택프레임 시작 주소가 저장되어 있음
Pop ebp : esp가 가르키는 곳에 저장된 값을 ebp로 pop, 결국 ebp는 이전 함수의 스택 프레임 시작 주소를 가지게 됨
Ret
: 함수 에필로그(Epilogue)
- Stack Frame을 없애주는 코드
Main endp : main함수 종료
End main : 프로그램 종료
저장할때는 아래와 같이 확장자를 .asm(어셈블리 파일)으로 저장한다.
어셈블리 파일을 컴파일하여 오브젝트 파일을 생성한다.
CLI환경에서 아래와 같은 명령을 내린다.
컴파일
c:\masm32\bin\ml.exe /c /coff /Zi 파일명.asm
컴파일이 정상적으로 완료되면 아래와 같은 오브젝트 파일이 생성된다. 잘못된 코드일 경우에는 에러 메시지를 출력해준다.
생성된 오브젝트 파일을 실행파일로 만들기 위해 다시 링크 과정을 거친다.
링크
c:\masm32\bin\Link.exe /subsystem:windows 파일명.obj
최종적으로 아래와 같이 .exe(실행파일)이 생성된다.
이제 odbg 프로그램을 이용하여 생성한 .exe 파일을 불러오면 아래와 같은 창이 출력된다.
odbg 프로그램을 이용해서 프로그램이 동작되는 원리를 분석할 수가 있다.
'Programming > Hacking & Security' 카테고리의 다른 글
[Reversing] 지역변수 할당(sub이용), lea, rep By 용호 (0) | 2010.05.14 |
---|---|
[Reversing] 기본 연산(mov, push, pop) By 용호 (0) | 2010.05.14 |
[MCSE] Software update Services By 용호 (0) | 2010.05.07 |
[MCSE] Shadow Copies By 용호 (0) | 2010.05.07 |
[MCSE] ASR Backup By 용호 (0) | 2010.05.07 |
댓글