전체 글

1. 프로그램 확인 abex' crackme1-voiees.exe ( 실습파일에는 voiees.exex 라고 되있을건데 확장자를 exe로 변경후 실습) 어셈블리 언어로 작성된코드이다. > stub code 추가되어 있지 않음 1.1 디버깅 abex' crackme1-voiees.exe 파일을 디버거에 올렸을때 나오는 첫 화면이다. 우리의 목표는 Ok, I really think ... 라는 문구를 출력하는 것이다. 코드가 짧고 배우는 초기단계 이므로 하나씩 실행해 보며 코드를 파악해 볼 것이다. 40100E 주소의 call 함수를 실행하자 프로그램을 처음 실행했을때 뜨는 창을 만났다. 확인을 누른후 계속 실행해보자 에러 메시지 출력까지 왔다. 다음 명령어가 으로 jmp 하는거고, 주소의 함수는 프로세스를..
1. 스택 - 프로세스에서 스택 메모리의 역할 함수 내의 로컬 변수 임시 저장 함수 호출 시 파라미터 전달 복귀 주소(address) 저장 - FILO (First In Last Out) 구조 1.1 스택의 특징 프로세스에서 스택 포인터(ESP)의 초기값은 Stack Botton 에 가깝다 PUSH (위) / POP (아래) 명령에 따라 스택포인터가 이동한다. 데이터는 높은 주소부터 먼저 쌓여간다.
1. CPU 레지스터란 ? CPU 내부에 존재하는 다목적 저장 공간 CPU 내부에 존재하므로, RAM에 비해 데이터의 고속 처리가 가능하다. 2. IA - 32의 레지스터 - IA -32는 지원하는 기능도 무척 많은 만큼 레지스터의 수도 많다. 위 그림에 나온 레지스터들 외 에도 다양한 레지스터가 존재한다. 애플리케이션 디버깅의 초급단계에서는 Basic program execution register에 대해 알아 보겠다. 2.1 Basic program execution register > Basic program execution register 은 크게 4개의 그룹으로 구성된다. General Purpose Registers / 범용레지스터 (32비트, 8개) Segement Registers / 세..
1. 바이트 오더링 바이트 오더링( Byte Ordering) 이란 데이터가 저장되는 방식(순서)를 의미한다. 바이트 오더링 방식에는 크게 빅 엔디언(Big Endian) & 리틀 엔디언(Little Endian) 이 있다. 1.1 빅 엔디언(Big Endian) 빅 엔디언 방식은 데이터를 저장할 때 사람이 보는 방식과 동일하게 순차적으로 저장된다. 비교 연산시 높은 비트열을 먼저 비교하므로 유리하다. 연산속도가 리틀 엔디언 방식에 비해 느리다는 단점이 있다. 1.2 리틀 엔디언(Little Endian) 리틀 엔디언 방식은 데이터를 저장할 때 역순으로 저장된다. 낮은 비트열이 먼저 들어와서 연산이 바로 가능하다. 비교 연산을 할 때는 빅 엔디언에 비해 불리하다는 단점이 있다. → 위 사진과 같이 총 4..
po3nyo
공부기록장