17_어셈블리(MOV)
- 분석 환경 : WindowsXP(32bit)
- 분석 도구 : OllyDbg, VS2008
1. MOV
- 형식 : MOV [Destination] [Source]
- 내용 : [Source]를 [Destination]로 대입/이동한다. 이때, [Source] 값은 변경되지 않는다.
- 예제 : MOV ECX, EAX
1) VS 2008을 이용하여 'mov.exe' 파일을 제작한다.
2) 'cl' 명령어를 이용한 최적화 컴파일 실시
3. 올리디버거를 이용한 'mov.exe' 분석
- 메모리 주소, 레지스터 저장 값, 스택 내용, 메모리 덤프 내용 확인
1) Main함수 찾기(F8)
2) Main함수 진입(F7) – 함수 프롤로그, 함수본체, 함수 에필로그 확인
< Main함수 >
< 함수 프롤로그 >
00401000 /$ 55 PUSH EBP
00401001 |. 8BEC MOV EBP,ESP
< 함수 본체 >
00401003 |. 83EC 08 SUB ESP,8
- 우선, int형 지역변수 num1,num2를 위한 공간을 할당하기 위해 SUB ESP,8 을 통해 4byte * 2 만큼 스택에 공간을 늘려준다.
-
00401006 |. C745 F8 06000>MOV DWORD PTR SS:[EBP-8],6
- 위의 명령어는 정수형 변수 num1에 6이라는 값을 초기화하는 명령어이다.
다음과 같이 [EBP-8]에 6이 저장된 것을 확인할 수 있다.
0040100D |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
- [EBP-8]에 있던 6을 EAX에 복사한 후,
00401010 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
- EAX의 값을 [EBP-4]에 저장한다. 위의 명령어는 정수형 변수 num2에 num1의 값을 대입하는 num2=num1; 의 정에 해당되는 명령어이다.
다음과 같이 num2자리인 [EBP-4]에 num1의 값이 대입된걸 확인할 수 있다.
00401013 |. 33C0 XOR EAX,EAX
그 후, EAX의 값을 0으로 초기화 한 후 함수 에필로그가 진행된다.
< 함수 에필로그 >
00401015 |. 8BE5 MOV ESP,EBP
00401017 |. 5D POP EBP
00401018 \. C3 RETN
함수 에필로그가 진행된 후, Main함수는 POP EBP를 통해 소멸된다.
'정보보안 > 리버싱' 카테고리의 다른 글
reverse_assembly 기본명령어 JE&JZ (0) | 2022.09.02 |
---|---|
reverse_assembly 기본명령어 IDIV (0) | 2022.09.02 |
reverse_assembly 함수 (0) | 2022.09.02 |
reverse_assembly 지역변수&전역변수 (2) | 2022.09.02 |
reverse _assembly 스택프레임 **다시 공부하고 쓰기 (1) | 2022.09.02 |