목록Hacking/Reversing (13)
minhui study
보호되어 있는 글입니다.
문제 파일은 위에서 다운 받으면 됩니다~! 다음 파일을 실행시켜 보면 다음과 같은 알림창이 뜬다. 확인 눌러보면 다음과 같이 에러가 뜬다. 열어보았더니 다음과 같다. MessageBoxA(1,2,3,4) ① : hOwner ( 메시지 박스의 오너 윈도우. 메시지 상자를 소유한 윈도우를 말하며 메시지 박스가 떠있는동안 다른 행위를 할수없다 ) ② : text ( MessageBox에 출력할 텍스트 " Make me think your HD is a CD-Rom" ) ③ : title ( MessageBox 윗부분의 텍스트 "abex' 1st crackme" ) ④ : style ( MB_OK = OK버튼 1개, MB_OKCANCEL = OK와 CANCEL 총 2개 버튼 등 몇몇 종류의 값이 있다.) 401..
함수 호출 규약 "함수를 호출할 때 파라미터를 어떤 식으로 전달하는가?"에 대한 일종의 약속 → 함수 호출 후에 ESP(스택 포인터)를 어떻게 정리하는지에 대한 약속이 바로 함수 호출 규약이다. ● cdecl ● stdcall ● fastcall 1. cdecl 주로 C언어에서 사용되는 방식이며 호출자(함수를 호출한 곳)에서 스택을 정리한다. #include "stdio.h" int add(int a, int b) { return (a+b); } int main(int argc, char* argv[]) { return add(1,2); } =======main()문========= PUSH EBP MOV EBP, ESP PUSH 2 ;파라미터 2 PUSH 1 ;파라미터 1 CALL 00401000 ;A..
메모리 구조 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같다. 코드 영역 메모리의 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 데이터 영역 메모리의 데이터 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 힙(heap) 영역 메모리의 힙 영역은 사용자가 직접 관리할 수 있는 그리고 해야만 하는 메모리 영역이다. 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다. 힙 영역은 메모리의 낮은 주소..
CPU 레지스터란? 레지스터란 CPU 내부에 존재하는 다목적 저장공간이다. CPU가 RAM에 있는 데이터를 Access하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸리지만 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다. IA-32 IA-32는 인텔의 32비트 마이크로프로세서에서 사용하는 명령 집합 아키텍처를 말한다. IA-32에서 지원하는 기능은 매우 많고 그 만큼 레지스터의 수도 많다. 어플리케이션 디버깅의 초급 단계에서는 Basic Program Execution Registers에 대해서 알아야 하는데 그 이유는 디버깅 할 때 가장 많이 보게 될 레지스터이기 때문이다. Basic program execution registers Basic Progra..