네이버 블로그 글 이전 (4) 썸네일형 리스트형 OllyDbg 디버거 명령어 디버거 동장 명령(Code Window에서 동작함) 명령어 단축키 설명 Restart Ctrl+F2 다시 처음부터 디버깅 시작(디버깅을 당하는 프로세스를 종료하고 재실행) Step Into F7 하나의 OP code 실행 (Call 명령을 만나면, 그 함수 코드 내부로 따라 들어감) Step Over F8 하나의 OP code 실행(Call 명령을 만나면, 따라가지 않고 그냥 함수 자체를 실행) Execute till Return Ctrl+F9 함수 코드 내에서 RETN 명령어까지 실행(함수 탈출 목적) Go to Ctrl+G 원하는 주소로 이동(코드/메모리를 확인할 때 사용. 실행되는 것은 아님) Execute till Cursor F4 cursor 위치까지 실행(디버깅하고 싶은 주소까지 바로 갈 수 .. IA-32 Register 기본 Basic Program Execution registers 1)범용 레지스터 범용 레지스터들의 크기는 32비트이며 보통은 상수/주소등을 저장할 때 주로 사용된다. 특정 어셈블리 명령어에서는 특정 레지스터를 조작하기도 한다. EAX : 주소 산술연산(ADD,SUB,XOR,OR 등) 명령어에서 상수/변수 값의 저장 용도로 많이 사용된다. 함수의 반환값을 저장한다. EBX : ESI나 EDI와 결합해 인덱스에 사용된다. ECX: 반복 명령어를 사용할 때 반복 카운터를 저장한다. EDX: EAX와 같이 사용되며 부호 확장 명령 등에 활용된다. 밑의 4개는 주로 메모리 주소를 저장하는 포인터로 사용된다. EBP: 하나의 스택 프레임의 시작 주소가 저장된다. 현대 사용되는 스택 프레임이 살아있는 동안 .. 바이트 오더링 바이트 오더링이란 데이터를 저장하는 방식을 말합니다. 크게 두 가지가 있습니다. 빅 엔디언(Big Endian)과 리트엔디언 (Little Endian)방식입니다. 빅엡니던 방식은 사람이 보는 방식과 동일하게 앞에서부터 순차적으로 저장하지만 리틀 엔디언 방식은 데이터를 저장할 때 역순으로 저장합니다. 즉 저장되는 바이트의 순서가 뒤집어져있습니다. 그러나 리트 엔디언일지라도 바이트 자체는 정상적인 순서로 저장이됩니다. 오로지 2바이트 혹은 4바이트 자료형과 멀티바이트인 경우 각 바이트가 역순으로 저장되는 것입니다. *str 문자열은 엔디언 형식에 상관없이 동일 TYPE Name SIZE 빅 엔디언 리틀 엔디언ㅠ BYTE b 1 [12] [12] WORD w 2 [12][34] [34][12] DWORD.. 스택 프로세스에서 스택 메모리의 역할 1. 함수 내의 로컬 변수 임시 저장 2. 함수 호출 시 파라미터 전달 3. 복귀 주소(return address)저장 (출처. 리버싱 핵심원리) 프로세스에서 스택포인터(ESP)의 초기값은 Stack Bottom 쪽에 가깝습니다. PUSH 명령에 의해서 Stack에 값이 추가되면 Stack Top을 향해 움직이고, POP 명령에의해 스택에서 값이 제거되면 스택 포인터는 Stack Bottom 을 향해 아래쪽으로 움직입니다.\ 중요! 스택은 높은 주소에서 낮은 주소 방향으로 자라난다!! 예제 !) ESP=12FF8C PUSH 100 명령 실행 -----------------------------------------------ESP의 값 4바이트만큼 감소 .. 이전 1 다음