본문 바로가기

reversing55

함수의 사용 함수 시작 위치에서 스택을 확인하면, 스택에 매개변수가 입력된 후에 복귀주소(returnaddress)가 저장되어있다. 함수 시작 코드에는 이후에 EBP값을 저장하고 스택 크기를 변경하는 코드가 이싿. 이 부분을 함수의 프롤로그(prologue)라 한다. 함수 구조는 함수가 시작할 때 수행되는 프롤로그와 함수가 끝날 때 수행되는 에필로그(epilogue)가 있다. 함수 프롤로그와 에필로그는 다음과 같다. 코드 설명 함수 프롤로그 push ebp 이전 함수의 EBP 레지스터 값을 스택에 보관 mov ebp, esp 현재 함수의 EBP 레지스터 값을 새롭게 설정 sub esp, 10 ESP 값을 변경하여 지역변수 공간을 확보 함수 에필로그 leave (mov esp, ebp) ESP 값을 복원하고, (pop.. 2023. 3. 6.
루프 루프에 대한 어셈블리 코드 #include int main(void) { inti, n, num; sum = 0; for (i = 1; i 2023. 3. 6.
어셈블리어 명령어 (1) 데이터 이동 명령어 (mov) mov dst, src mov 명령 설명 mov eax, ebx EBX레지스터 내의 값을 EAX 레지스터로 복사 mov eax, 0x42 값 0x42를 EAX 레지스터로 복사 mov eax, [0x4037c4] 메모리 주소 0x4037C4에 있는 4바이트 값을 EAX레지스터로 복사 mov eax, [ebx] EBX 레지스터가 명시한 메모리 주소의 4바이트 값을 EAX 레지스터로 복사 mov eax, [ebx+esi*4] EBX+ESI*4 연산 결과가 명시한 메모리 주소의 4바이트 값을 EAX레지스터로 복사 데이터 이동 명령어 (lea) lea des, src 메모리 주소를 목적지에 넣을 때 사용한다. lea는 주소를 저장하는데 사용하고, mov는 값을 저장하는데 사용한다. .. 2023. 3. 4.
x64dbg 기본 구분 설명 프로그램 코드 어셈블리어 코드와 명령어코드를 나타내고 있는 목적 코드 부분 레지스터 CPU의 레지스터 값을 보여주는 창이며, 실행 단계에서 값의 변화를 볼 수 있음 실행 상태 값(힌트) 프로그램 코드 부분에서 실행되고 있는 각 해당 위치의 오프셋 값과 변경된 메모리 주소, 레지스터의 내용 등의 힌트 정보를 나타내줌 함수스택 변수 프로그램 코드에서 사용되는 매개변수와 지역변수의 위치를 레지스터 변위 값으로 표현함 메모리 메모리 공간의 값을 HEX코드(16진수)와 ASCII 코드로 보여주며, 관심 있는 주소를 설정하여 데이터 값의 변화를 확인 할 수 있음 스택 함수에서 사용하는 스택 내용을 보여주며, 원하는 주소의 스택 영역의 값들을 확인 할 수 있음 2023. 3. 2.
WinDbg 브레이크 포인트 명령어 모음 명령어 기능 bp 브레이크 포인트 설치 bl 브레이크 포인트 리스트 보기 bd 브레이크 포인트 비활성화 be 브레이크 포인트 활성화 bc 브레이크 포인트 해제 bu 브레이크 포인트 설치(WinDbg가 다시 동작할 때에도 브레이크 포인트 유지) 2023. 2. 22.
디버그 실행 및 정지 WinDbg에서 멈춰있는 Notepad.exe를 실행하는 세 가지 방법이있다. 첫 번째는 명령 창에서 g 명령을 수행하는 것, 명령줄에 g를 입력하고 엔터키를 누르면된다. 두 번째 방법은 F5키를 누르면된다. 세 번째 방법은 툴바에서 Go 버튼을 클릭하면 된다(자동으로 g 명령을 수행한다.) 실행된 상태에서 WinDbg로 제어하려면 notepad.exe 를 멈춰야한다. 멈추기 위한 방법은 두가지가 있는데 첫 번째 방법은 ctrl+Break 키를 누르는 것, 두 번째 방법은 툴바에서 Break 버튼을 누르는 것이다. 2023. 2. 22.
반응형