오랜만에 리버싱 교육 받으러옴. 64dbg 초기에 맛만봤었는데 이젠 이제 주 분석툴로 사용되는구나..그리고 사용법을 모르겠다 ㅎㅎㅎ 올리랑 비슷하면서 다르네..열심히 수업들으면서 따라가는 중
리버싱에서 가장 중요한건? 역시나 레지스터의 변화값을 캐치하는것이겠찌....그래서 레지스터에 대한 의미를 공부하고 넘어가기
참고 자료 : https://blog.naver.com/hellowhale0737/222862446531
----------------------------------------------------------------------------------------------------------------------------------------
범용 레지스터, 세그먼트 레지스터, 명령어 포인터 레지스터, 플래그 레지스터가 존재한다.
범용 레지스터 : 주용도가 있으나 다양한 용도로 사용될 수 있는 레지스터
rax(accrumulator register)
|
함수의 반환 값
|
rbx(base register)
|
주된 용도 없음
|
rcx(counter register)
|
반복문의 반복 횟수, 각종 연산의 시행 횟수
|
rdx(data register)
|
주된 용도 없음
|
rsi(source index)
|
데이터를 옮길 때 원본을 가리키는 포인터
|
rdi(destination index)
|
데이터를 옮길 때 목적지를 가리키는 포인터
|
rsp(stack pointer)
|
사용중인 스택의 위치를 가리키는 포인터
|
rbp(stack base pointer)
|
스택의 바닥을 가리키는 포인터
|
이 외에도 r8~r15까지의 범용레지스터가 존재
세그먼트 레지스터 : cs, ss, ds ,ed ,fs, gs 총 6가지로 각 레지스터의 크기는 16비트이다. 과거에는 사용 가능한 물리 메모리의 크기를 키우려고 사용되었으나, 현재는 cs, ds, ss 가 각각 코드, 데이터, 스택 메모리 영역을 가리킬 때 사용되고, 나머지는 운영체제 범용적인 목적으로 사용된다.
명령어 포인터 레지스터 : CPU가 어느 부분의 코드를 실행할지 가리키는 레지스터 rip이며 크기는 8바이트이다.
플래그 레지스터 : 프로세서의 현재 상태를 저장하고 있는 레지스터이다. RFLAG라는 64비트 레지스터가 존재한다. 실제로는 20여개의 비트만을 사용한다.
CF(Carry Flag)
|
부호 없는 수의 연산 결과가 비트의 범위를 넘을 경우 설정된다.
|
ZF(Zero Flag)
|
연산 결과가 0일 경우 설정된다.
|
SF(Sign Flag)
|
연산결과가 음수일 경우 설정된다.
|
OF(Overflow Flag)
|
부호 있는 수의 연산 결과가 비트 범위를 넘을 경우 설정도니다.
|
'포렌식 > 컴퓨터' 카테고리의 다른 글
윈도우 uuid 확인방법 (0) | 2023.07.20 |
---|---|
역공학 - test 연상에 대해(분기문 전 사용되는 연산) (0) | 2023.06.14 |
MessageAnalyzer(이벤트 로그 분석 프로그램) (0) | 2023.05.16 |
Study on Windows Event Log-Based Corporate Security Audit and Malware Detection (0) | 2023.05.15 |
윈도우 레지스트리에서 디바이스 정보 (0) | 2023.04.18 |