반응형

공부해요/리버싱_핵심원리 51

13. PE File Format

PE(Portable Executable) 파일은 Windows 운영 체제에서 사용되는 실행 파일 형식을 의미하며, Microsoft에서 기존 UNIX 시스템에서 사용된 COFF(Common Object File Format)를 기반으로 개발됨. 주로 32비트 및 64비트 Windows 시스템에서 실행되는 프로그램 및 라이브러리를 위해 설계됨.32비트 파일은 PE(Portable Executable) 형식을 따르며, 64비트 파일은 PE+ 또는 PE32+로 불림.  PE File Format종류주요 확장자실행 계열EXE, SCR라이브러리 계열DLL, OCX, CPL, DRV드라이버 계열SYS, VXD오브젝트 파일 계열OBJ EXE 파일: 주로 프로그램 실행 파일로 사용되며, 사용자가 직접 실행 가능함.D..

11장. Lena's Reversing for Newbies

파일을 실행해보았다. -모든 성가신 Nags를 업애라- registration code를 찾아라 확인버튼을 누르면 위에처럼 뜬다. 화면에 파란 글씨에서 SmartCheck를 사용하라함. 목표1. 메시지 박스 제거"Get rid of all Nags"올리디버거를 통해 파일을 열어보자 MSVBVM50.ThunRTMain함수를 찾을 수 있음 목표인 메시지 박스를 제거하려면 메시지 박스 함수 호출 부분을 조작하면 됨.[Search for] - [All intermodular call] 사용해서 API 호출 목록을 확인하였다.메시지 박스 함수를 하나 발견하고 모든 rtcMsgBox를 호출하는 코드에 BP를 설치해둔다. 이 상태로 프로그램을 실행시키면 break point가 설치된 곳에서 실행이 멈추게 된다.멈춘 ..

10장. 함수 호출 규약

함수 호출 규약 (Calling Convention)함수 호출 규약은 함수를 호출할 때 파라미터를 어떻게 전달하고 스택을 어떻게 관리하는지에 대한 규칙임. 이 규칙은 주로 함수 파라미터가 스택을 통해 전달될 때 적용되며, PE(Portable Executable) 헤더에 스택 크기가 명시되어 있음.스택 관리 개요파라미터 전달: 함수 호출 시 파라미터는 스택에 역순으로 전달됨. 스택 크기는 프로세스 실행 시 결정됨.함수 종료 후 스택 상태: 함수가 실행을 마친 후에도 스택에 입력된 파라미터는 그대로 둠. 불필요한 CPU 자원을 사용하지 않기 위해 값을 지우지 않고, 어차피 다음 호출에서 덮어씌워질 것임.ESP 복원: 함수 실행 완료 시 **ESP(스택 포인터)**는 함수 호출 전 상태로 복원되어야 함. 그..

9장. Process Explorer - 최고의 작업 관리자

Process Explorerhttps://learn.microsoft.com/ko-kr/sysinternals/downloads/process-explorer Process Explorer - Sysinternals프로세스가 열어 둔 어떤 파일, 레지스트리 키, 기타 개체, 로드한 DLL 등을 찾으세요.learn.microsoft.com 프로세스 관리 유틸리티 다운로드한 후 실행화면 위 좌측: 현재 실행 중인 프로세스들을 parent/child의 트리 구조로 표시우측: 프로세스 각각의 PID, CPU 점유율, 등록정보  Process Explorer의 장점- Parent/Child 프로세스 트리 구조- 프로세스 실행/ 종료 시 각각의 색깔(초록/빨강)로 표시- 프로세스 Suspend/Resume 기능(..

8장. abex' crackme #2

이 파일 다운받아서 시작해보겠습니다..  시리얼 키 알아내는 프로그램이다.  암거나 눌러보았는데 wrong serial 메시지 박스가 출력된다.  Visual Basic 파일 특징위에 파일은 Visual Basic으로 제작됨 VB 전용 엔진VB 파일은 MSVBVM60.dll (Microsoft Visual Basic Virtual MAchine 6.0)이라는 VB 전용 엔진 사용N(Native) code, P(Pseudo) codeVB 파일은 컴파일 옵션에 따라 N code와 P code로 컴파일이 가능N code: IA-32 Instruction 사용P code: Interpreter 언어 개념으로서 VB 엔진으로 가상 머신을 구현하여 자체적으로 해석 가능한 명령어(바이트 코드)를 사용∴ P code를..

7장. 스택 프레임

목표- 스택 프레임의 동작 원리 이해- 간단한 프로그램을 만들고 디버거를 이용해서 스택 프레임 확인- 간단한 어셈블리 명령어의 상세 설명 스택 프레임EBP(베이스 포인터) 레지스터 이용해서 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법ESP 레지스터 값은 프로그램 안에서 수시로 변경됨 -> 파라미터 접근하려할 때 ESP 기준으로 하면 프로그램 만들기 힘듦 -> EBP 기주능로 하면 안전하게 함수의 변수, 파라미터, 복귀 주소에 접근 가능 스택 프레임의 구조PUSH EBP함수 시작(EBP를 사용하기 전에 기존의 값을 스택의 저장)MOV EBP, ESP현재의 ESP(스택포인터)를 EBP에 저장 ...함수 본체여기서 ESP가 변경되더라고 EBP가 변경되지 않으므로안전하게 로컬 변수와 파라미터를 ..

5장. 스택

스택로컬 변수 저장, 함수 파라미터 전달, 복귀 주소 저장 등의 다양한 용도로 사용 스택의 역할1. 함수 내의 로컬 변수 임시 저장2. 함수 호출 시 파라미터 전달3. 복귀 주소(return address) 저장-> FILO(후입선출) 구조인 스택이 유리함 스택의 특징- 스택 포인터(ESP)의 초기값은 Stack Bottom에 근접- PUSH 명령에 의해 Stack에 값 추가 시 ESP는 Stack Top 향해 움직이고 POP 하면 Stack Bottom쪽으로 움직임 (높은 주소에서 낮은 주소 방향으로)

4장. IA-32 Register 기본 설명

CPU 레지스터Register: CPU 내부에 존재하는 다목적 저장 공간 Basic program execution register- General Purpose Register(32bit)- Segment Registers(16bit)- Program Status and Control Register(32bit)- Instruction Pointer(32bit)  범용 레지스터IA-32에서 32비트의 크기를 가짐상수/ 주소 등을 저장할 때 사용특정 어셈블리 명령어에서는 특정 레지스터를 조작 EAXAccumulator for operands and results data 함수 리턴값에 사용EBSPointer to data in the DS segmentECXCounter for string and loo..

2장. Hello World! 리버싱

올리디버거 메인 화면 구성Code Windowdisassembly code 표시코드 분석하여 loop, jump 위치 등의 정보 표시Register WindowCPU register 값을 실시간으로 표시Dump Window프로세스에서 원하는 memory 주소 위치를 Hex, ASCII/ 유니코드 값으로 표시Stack WindowESP register가 가리키는 프로세스 stack memory를 실시간 표시   EP(Entry Point): 디버거가 멈춘 곳, windows 실행 파일의 코드 시작점. 프로그램이 실행될 때  CPU에 의해 가장 먼저 실행되는 코드 시작 위치Address프로세스의 가상 메모리 내의 주소InstructionIA32(or x86) CPU 명령어Disassembled codeOP ..

반응형