전체 글

1. PE File 소개 PE(Portable Excutable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식이다. 기존 UNIX에서 사용되는 COFF(Commeon Object File Format)를 기반으로 Microsoft에서 만들었다. ● 분류 32비트 형태의 실행 파일 : PE (또는 PE32) 64비트 형태의 실행 팡리 : PE+ ( 또는 PE32+) 2. PE File Format ● 종류 종류 주요 확장자 실행계열 EXE,SCR 라이브러리 계열 DLL, OCX, CPL, DRV 드라이브 계열 SYS, VXD 오브젝트 파일 계열 OBJ 2. PE File 기본 구조 각 실행파일에는 UNIX 시스템에서 사용되는 실행파일, 개체 코드 및 공유 라이브러리 컴퓨터 파일의 형식인 CO..
1. 함수 호출 규약(Calling Convention) 함수 호출 후에 ESP(스택 포인터)를 어떻게 정리하는에 대한 약속 ● 함수를 호출할 때 파라미터를 어떻게 처리할까? 함수 실행 전 : 스택을 통하여 파라미터를 전달 함수 실행 후 : 사용한 스택 정리 → 스택에 저장된 파라미터는 삭제되지 않는다 → ESP 값을 수정하여 저장된 파라미터가 더 이상 유효한 데이터가 아님을 명시적으로 기록해둔다. ● 함수 실행 후, 누가 어떻게 스택을 정리할까? 함수 호출 규약 : cdelcl, stdcall, fastcall 1.1 cdecl 주로 C언어에서 사용되는 방식 Caller (함수를 호출한 쪽)에서 스택을 정리한다. cdecl 방식의 예제 코드이다. 컴파일후 x64dbg로 열어보면 add() 함수의 파라미..
1. 프로그램 확인 VB(Visual Basic) 으로 작성된 프로그램이다. 시리얼 키(serial key)를 검증하는 프로그램이다. 2. VB(Visual Basic) 파일의 특징 2.1 Visual Basic (VB) 전용 엔진 VB 파일은 MSVBVM60.dll (Microsoft Visual Basic Virtual Machine 6.0) 이 라는 VB 전용 엔진을 사용한다. → 메시지 박스를 출력하고 싶을때 VB 소스코드에서 MsgBox() 함수를 사용한다. → VB 컴파일러는 실제로 MSVBVM60.dll!rtcMsgBox() 함수가 호출되도록 만들고, → 이 함수 내부에서 Win32 API인 user32.dll!messageBoxW() 함수를 호출해주는 방식으로 동작한다. 2.2 N (Nat..
1. 스택 프레임 스택 프레임이란 쉽게 말해서 ESP (스택 포인터) 가 아닌 EBP (베이스 포인터) 를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법을 말한다. 스택 프레임을 이용해서 함수 호출을 관리하면, 아무리 함수 호출 depth가 깊고 복잡해져도 스택을 완벽하게 관리할 수 있다. 1.1 ESP vs. EBP ● ESP ESP : 스택에 저장된 데이터의 최하위 주소값 (FILO) 최근에 스택에 저장된 데이터의 주소값 PUSH or POP 명령에 의해서 가변적, 따라서 특정 데이터가 저장된 주소 값을 알기가 어렵다. ● EBP EBP : 함수에서 사용될 그택의 기준 주소 값 함수가 호출된 후, 종료될 때까지 변경되지 않는 주소 값 함수에서 스택에 저장된 데이터들의 주소값을 ..
po3nyo
공부기록장