티스토리 뷰
리버싱을 공부하다 보면 필히 어셈블리어를 공부해야 합니다.
그런 어셈블리어 명령의 대부분이 레지스터값을 조작하는 명령어들입니다.
ollydbg 프로그램을 이용할때 레지스터 윈도우창에 EAX, EBX, ECX, ESI등이 보일텐데요.
이는 레지스터 값으로써, 오늘은 이 레지스터 값에대해 알아보는 시간을 준비했습니다.
CPU 와 레지스터 가 뭔지 알아보고 넘어갑시다.
CPU?
중앙처리장치(CPU)는 컴퓨터의 가장 중요한 부분으로 프로그램 명령을 해독하고 수행하는 장치입니다.
CPU가 수행하는 명령어는 매우 단순합니다 이 명령어들은 레지스터에 있는 값들을 필요로 합니다.
Register?
레지스터는 CPU 내부에 존재하는 저장 공간으로 일반적인 데이터 저장소 보다 훨씬 빠르게 접근할 수 있으나,
레지스터의 크기가 매우 제한적이기 때문에 현재 사용되고 있는 데이터들만 저장하도록 해야 합니다.
레지스터는 크게 4개의 그룹으로 나눌 수 있습니다.
그중 오늘은 범용레지스터에 대해 알아봅시다.
◆ General Purpose Register - 범용 레지스터로 보통 상수,주소등을 저장할 때 사용
이게 범용레지스터들 입니다. 하나하나 뭐하는건지 봅시다.
◇EAX (Extended Accumaulator Register)
주로 산술 논리연산(ADD,SUB,XOR,OR 등)의 리턴값으로 사용됩니다.
◇ EBX(베이스 레지스터)
특정주소(간접주소) 저장에 이용됩니다.
◇ ECX(Extended Counter Register)
반복문에서 반복 카운트 값으로 사용되는 레지스터 입니다.
◇ EDX(Extended Data Register)
간접 번지 지정에 사용되며, EAX의 보조로 사용되기도 한다.
◇ ESI (Extended Source Index)
데이터 조작이나 복사에 이용됩니다.
◇ EDI (Extended Destination Index)
데이터 조작이나 복사에 이용됩니다.
◇ EBP (Extended Base Pointer)
스택의 맨 아래 부분을 가리키며, 보통 함수가 호출되었을때 그 순간의 ESP를 가리키고 있다가
함수가 리턴할때 값을 되돌려줘 스택이 깨지지 않게 합니다.
◇ ESP (Extended Stack Pointer)
스택의 가장 윗부분을 가리키며 ( Top pointer 라고한다)
※ 참 고
범용레지스터에서 EAX, EBX, ECX, EDX는 저렇게 나누어 사용할 수 있습니다.
EAX를 보면 , EAX 는 32 bit 로 사용할 수 있으며, AH(8-15 8bit) AL(0-7 8bit) AX (0-16 16bit) 와 같이 사용할 수 있습니다.
이렇게 사용하는 이유는 효율성이 증가합니다. 예로, 0010 값이 EAX 에 입력됬다고 생각해 봅시다.
0010은 4bit 인데 EAX 에 넣으면 나머지 28bit를 다 0으로바꿔줘야합니다. 너무 비효율 적이죠, 이럴때 AL 만을 사용하여 0000010 과 같이 표현 합니다.
즉, 4바이트를 다 이용하고 싶을때에는 EAX를 이용하고 2바이트만 사용할때는 AX를, AX의 상위 1바이트만 사용하려면 AH, AX 하위1 바이트를 이용하고 싶다면 AL을 사용하여 상황에 맞게 적절히 사용할 수 있습니다.
참고로 EAX,EBX,ECX,EDX는 데이터를 저장하는데 사용하기때문에 나눌 수 있고 ESI,EDI,EBP,ESP는 주소를 저장하는 용도로 사용되기 때문에 나누어 사용하지 않습니다.
'Reversing > Assembly' 카테고리의 다른 글
진법에 대하여 알아보자! (0) | 2014.10.30 |
---|
- Total
- Today
- Yesterday
- CTB-Locker
- Ransom
- CryptoLocker
- 한빛리더스
- 키로거
- 해커스쿨
- 악성코드
- 백신
- 뱅커
- 광고
- malware
- 팝업
- 실전 악성코드와 멀웨어 분석 연습문제
- IT·컴퓨터
- 리버싱
- 해커스쿨 ftz
- 크립토락커
- 에이콘 출판사
- 리버싱 공부
- 파밍
- CryptoWall
- banker
- 뱅킹
- 서비스
- 한빛아카데미
- 바이로봇
- 실전 악성코드와 멀웨어 분석 문제풀이
- 랜섬웨어
- 에이콘
- 실전 악성코드와 멀웨어 분석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |