Study/App

[App]어셈블리어 & 레지스터

seomj 2022. 9. 22. 12:02

전에 리버싱 공부할 때 ebp, esp 관련해서 잠시 잠깐 공부를 했었으나.. 너무 오래전이라 다 까먹었당...

 

[Reversing]스택프레임/프롤로그&에필로그

함수호출 1.함수가 사용할 파라미터를 스택에 넣고 함수 시작지점으로 점프(함수 호출)한다. 2.함수 내에서 사용할 스택프레임을 설정한다. (프롤로그) 3.함수의 내용을 수행한다. 4.수행을 마치

seomj74.tistory.com

심지어 포스팅도 하나밖에 안함...ㅎ

 

이번 App을 공부하며 다시 공부하게 되었다.


레지스터

CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 다목적 공간

연산 제어, 디버깅 등등의 목적으로 사용

주황색으로 표시된 것이 범용레지스터로, 64비트 레지스터이다.

64비트가 되면서 E에서 R로 바뀌었다.

 

산술 연산 레지스터

AX: 산술 논리 연산에 사용. 그리고 함수의 리턴값이 여기에 저장

BX: 간접 번지 지정 시 사용. 배열의 인덱스 값을 저장

CX: 반복문의 반복 횟수 지정 시 사용(counter). 문자열 처리에도 사용.

DX: AX의 보조적인 역할. AX와 합쳐져서 확장된 메모리로 사용. I/O 주소를 지정할 때 사용.

 

인덱스 레지스터

SI(Source Index): 복사나 비교를 할 때 사용되는 소스 문자

DI(Destination Index): 복사나 비교를 할 때 사용되는 목적지 문자. stos, movs를 사용할 때 마다 1씩 증가.

 

포인터 레지스터

SP(Stack Pointer): 스택의 가장 윗부분을 가르킨다. 스택에 값이 쌓이면 ESP도 증가.

BP(Base Pointer): 스택의 제일 바닥 부분의 주소를 가르킨다. EBP밑에는 return 값이 있다.

 

 

 

출처: https://plummmm.tistory.com/113


실습

1. 

 

eax에 0x1234 값을, rbx에 0x56781234 값을, cl에 0xab 값을, edx에 eax(0x1234) 값을 mov 해주었다.

레지스터 값을 보니 잘 적용이 된 것을 확인할 수 있다.

eax는 32비트, rbx는 64비트, cl은 16비트, edx는 32비트

 

 

2.

변수 선언은 section .data 혹은 section .bss에 할 수 있다.

section .data는 초기값이 설정된 변수를 선언할 수 있다.

db 1 byte
dw 2 byte
dd 4 byte
dq 8 byte

section .bss는 크기와 변수의 개수를 지정할 수 있다.

resb 1 byte
resw 2 byte
resd 4 byte
resq 8 byte

 

a 변수에 2바이트 크기로 0x10의 초기값을 선언했다.

e 변수를 1바이트 5개의 크기로 선언했다.

 

a, b, c, d의 변수에 각각의 값이 잘 들어간 것을 메모리를 통해 확인할 수 있다.

 

 

3.

rax 레지스터 hex 값을 메모리에서 확인해보면 a의 값이 출력된다.

즉, 9번째 줄에서 a의 주소값을 rax로 복사하는 것을 알 수 있다.

 

 

4.

str1 변수에 문자열을 선언해 주었고, 메모리를 확인해보니 0x61, 0x62, 0x63, 0x64의 형태로 value 값에 저장이 되었다.

ascii 코드표와 비교해보면 알맞게 배정이 된 것을 확인할 수 있다. (a가 16진수로 0x61의 값을 가짐)

 

 

5.

al에는 1, bl에는 2를 넣은 후 13번째 줄에서 add를 사용하여 두 값을 더한 값을 al에 저장하고 출력하면 3이 출력된다.

 

 

 

https://ffoorreeuunn.tistory.com/48

'Study > App' 카테고리의 다른 글

[App]루팅된 단말기 adb 접속 및 frida  (0) 2022.09.24
[App]갤럭시s4 루팅  (2) 2022.09.24
[App]AndroGoat Binary Patching(smali)  (0) 2022.09.15
[App]AndroGoat Emulator Detection(frida)  (0) 2022.09.15
[App]AndroGoat Emulator Detection(smali)  (0) 2022.09.15