전체 글 (42) 썸네일형 리스트형 PE File Format4 EAT (Export Address Table) Windows 운영체제에서 라이브러리(Library) 란 다른 프로그램에서 불러 쓸 수 있도록 관련 함수들을 모아놓은 파일(DLL/SYS) 이다. Win32 API 가 대표적인 Library 이며, 그 중에서도 Kernel32.dll 파일이 가장 대표적인 Library 파일이라고 할 수 있다. EAT란 라이브러리 파일에서 제공하는 함수를 다른 프로그램에 가져다 사용할 수 있도록 해주는 메커니즘 이다. 앞서 설명한 IAT 와 마찬가지로 PE 파일내에 특정 구조체(IMAGE_EXPORT_DIRECTORY)에 정보를 저장하고 있다. 라이브러리의 EAT 를 설명하는 IMAGE_EXPORT_DIRECTORY 구조체는 PE 파일에 하나만 존재한다. (*참고로 IAT를.. PE File Format3 IAT IAT(Import Address Table)에는 Windows 운영체제의 핵심 개념인 process, memory, DLL 구조 등에 대한 내용이 함축되어 있다. 즉, 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블로 IAT를 잘 이해하면 Windows 운영체제의 근간을 이해할 수 있다. 우선 IAT를 알아보기 전에 DLL에 대해 먼저 알아보겠다. DLL DLL이란 Dynamic Linking library(동적 연결 라이브러리)의 약어로 windows에서 사용되는 공유 라이브러리이다. DLL의 특징은 다음과 같다. 프로그램에 라이브러리를 포함시키지 않고 별도의 파일로 구성하여 필요할때마다 불러쓸 수 있다. 한번 로딩된 DLL의 코드, 리소스는 Memory Mappin.. PE File Format PE 파일이란? PE(Portable Executable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식이다. 단어 그대로 옮겨다니면서 실행시킬 수 있는 파일을 뜻한다. PE 파일은 32비트 형태의 실행 파일을 의미하며 PE32라는 용어를 사용하기도 한다. 64비트 형태의 실행파일은 PE64...가 아니라 PE+ 또는 PE32+라고 부른다. PE 파일의 종류는 다음과 같다. 실행 계열 : EXE, SCR 드라이버 계열 : SYS, VXD 라이브러리 계열 : DLL, OCX, CPL, DRV 오브젝트 파일 계열 : OBJ (PE 공식 스펙에는 컴파일 결과물인 OBJ(오브젝트) 파일도 PE 파일로 간주한다. 하지만 OBJ 파일 자체로는 어떠한 형태의 실행도 불가능하다.) 위 사진은 notepad.. Hello World! 리버싱3 "Hello World" 문자열 패치 이제 디버거를 이용해 프로그램의 내용을 패치해 볼 차례다. HelloWorld.exe의 메시지 박스에 표시되는 "Hello World!" 문자열을 다른 문자열로 패치해 본다. 1. 문자열 버퍼를 직접 수정 우선 MessageBoxW 함수의 전달인자(410C14)의 문자열('Hello World!")버퍼를 직접 수정하는 방법이다. PUSH OFFSET ~ 어쩌구 저쩌구로 쓰여져 있는데 더블클릭으로 쉽게 알아낼 수 있다. (아래 사진 참조) Reigster Window에서 [Ctrl+G] 명령어에 전달인자를 입력하면 아래 화면과 같이 Hello world! 문자열이 딱 보인다. 이 주소부분을 마우스로 선택한 후 [Ctrl+E] 단축키로 Edit 다이얼로그를 띄운다. 이제.. Hello world! 리버싱2 저번 포스팅에 이어서 베이스캠프에 관한 내용부터 포스팅을 이어가겠다. 베이스캠프를 설치하는 4가지 방법 1. Goto 명령 베이스캠프 주소를 잘 기억해 두었다가 Go to[Ctrl+G] 명령으로 가는 것이다. Go to 명령어를 실행하면 입력한 주소에 커서가 놓여져 있을 텐데, Execute till cursor[F4] 명령으로 그곳까지 실행하면 커서부터 디버깅을 편하게 진행할 수 있다. (마치 Ctrl+F 명령으로 텍스트에서 글을 찾는것과 같은 방법인 것 같다.) 2. BP(Breakpoints) 설치 베이스캠프로 가는 또 다른 방법은 BP(Break Pint)를 설치[F2], 하고 실행[F9]하는 것이다. 가장 편하고 많이 사용되는 방법이라고 한다. (책갈피 개념이라고 생각하면 될 듯 싶다.) 메인 .. msi fn키 비활성화 갑자기 fn키가 자동으로 눌려진 상태로 계속 진행되어 Bios 설정에 들어가서 해제하려 봤더니 아무리 찾아봐도 없었다.. fn키가 자동으로 눌려져 있으면 f3키를 누르면 볼륨이 올라가고 f9키를 누르면 화면 밝기가 내려가고... 프로그램 내에서 단축키를 쓰고싶어도 써지지 않는 가슴아픈 일이 일어날 수 있다. 근데 되게 허무하게 문제가 해결이 되었다... 참고로 내 노트북은 msi stealth 15m 이다. www.msi.com/Laptop/Stealth-15M-A11SX-GTX Stealth 15M www.msi.com 막막해서 어떡하나 하는 순간 Esc키에 fn글자가 같이 있는게 보였다. 해결방법은 간단했다. fn키랑 esc키를 같이 눌러서 저렇게 불이 들어오게 해주면 fn키가 default로 눌려있.. Hello World! 리버싱 먼저 ollydbg를 설치한다. ollyDbg 파일을 받은 후 HelloWorld.exe 파일을 OllyDbg로 열어보았다. 외계어들이 가득하다.... 화면이 4분할 되어있는데 각 화면별로 역할이 있다. Code Window : disassembly code를 표시하여 각종 comment, label을 보여주며, 코드를 분석하여 loop, jump 위치 등의 정보를 표시한다. Register Window : CPU regitser 값을 실시간으로 표시하며 특정 regitser들은 수정도 가능하다. Dump Window : 프로세스에서 원하는 memory 주소 위치를 Hex와 ASCII/유니코드 값으로 표시하고 수정도 가능하다. Stack window : ESP register가 가리키는 프로세스 stac.. 리버싱 핵심 원리 한동안 놓고 있었던 공부를 다시 시작해보려 한다. 그 첫 시작은 '리버싱' 이다. 리버스 엔지니어링(Reverse Engineering) 또는 역공학 장치 또는 시스템의 기술적인 원리를 그 구조분석을 통해 발견하는 과정이다. 즉, 컴파일링의 반대되는 일이라고 이해할 수 있을 것이다. 완성된 하나의 프로그램을 외부에서 관찰하고 분석함으로써, 해당 프로그램의 동작을 외부에서 조절할 수 있게 된다. 불법 사이트에 돌아다니는 크랙(crack) 파일들, 키젠(keygen) 파일들이 리버스 엔지니어링을 통해 만들어 졌다고 한다. 앞으로 이 책을 통해 리버스 엔지니어링을 배우면서 어셈블리어, OS 구조, 디버거 사용법 등을 익히며, 정보보안 공부에 필요한 다양한 초석들을 쌓을 것이다. 이전 1 2 3 4 5 6 다음