Self-Improvement

MOV vs LEA 본문

리버싱 기초

MOV vs LEA

JoGeun 2018. 10. 28. 15:10

*MOV

옵코드 MOV는 단지 값을 넣는 역할을 한다. 예를 들면 MOV eax, 1은 eax에 1을 넣는 코드가 되고, MOV ebx, ecx는 ebx에 ecx를 넣는 코드가 된다.


*LEA

LEA는 MOV와 다르게 단순하다. MOV는 값을 가져오는 것이라면 LEA는 주소를 가져온다. 따라서 LEA는 가져올 src 오퍼랜드가 주소라는 의미로 대부분 []로 둘러싸여 있다.


*예시

esi : 0x401000

*esi : 5640ec83

esp+8 : 0x13ff40

*(esp+8) : 33


1. lea eax, dword ptr ds:[esi]

= esi가 0x401000이므로 eax에는 0x401000이 들어온다.


2. mov eax, dword ptr ds:[esi]

= esi가 0x401000이므로 eax에는 0x40100 번저기 가리키는 5640ec83이라는 값이 들어온다.


3. lea eax, dowrd ptr ss:[esp+8]

= esp+8은 스택이며, eax에는 0x13ff40라는 값이 들어온다.


4. mov eax, dword ptr ss:[esp+8]

= esp+8은 스택이며, eax에는 0x13ff40이 가리키코 있는 값인 33이 들어온다

'리버싱 기초' 카테고리의 다른 글

PE 구조 (DOS 헤더)  (0) 2018.11.11
함수 호출 규약  (0) 2018.11.03
리버싱 기초 4 (어셈블러 명령어)  (0) 2018.10.23
리버싱 기초 3 (어셈블러 명령어)  (0) 2018.10.23
리버싱 기초 2 (어셈블리어)  (0) 2018.10.20