본문 바로가기
728x90

리버싱핵심원리4

Base Relocation Table 오늘은 PE 파일의 재배치 (Relocation) 과정에 사용되는 Base Relocation Table의 구조와 동작원리에 대해 알아보겠습니다. -PE 재배치 PE파일(EXE/DLL/SYS) 이 프로세스 가상 메모리에 로딩(loadiong) 될때 PE 헤더의 ImageBase주소에 로딩 됩니다.(ImageBase 주소는 NT Header에 Optional Header 안 에 있습니다.) DLL이나 SYS 같은 경우 ImageBase 위치에 이미 다른 파일이 로딩되어있다면 충돌을 비해 다른 비어있는 주소 공간에 로딩됩니다. 이를 PE Relocation 이라고 합니다. -> PE파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될때 수행되는 일련의 작업들 의미. 참고) ImageBase EXE .. 2020. 5. 1.
IAT 정리 IAT(Import Address Table) : 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하는지 기술한 테이블 핵심 개념 : process,memory,DLL 구조 IAT 를 이해하기 전, DLL의 대한 이해가 필요하다. Import : library에게 서비스(함수) 제공받는 일 Export : library 입장에서 PE 파일을 제공하는 일 -DLL(Dynamic Linked Library) 동적 연결 라이브러리 과거 16비트 때는 DLL 개념 X -> 함수 사용시 컴파일러는 C 라이브러리에서 binary 코드 그대로 가져와서 삼입. Windows OS, 멀티태스킹 지원 후 -> 위 방식 비효율적 여러프로그램 동시에 실행 -> 동일한 라이브러리 포함은 심각한 메모리 낭비 ->(아이디어) 프로그.. 2020. 4. 25.
OllyDBG 단축키 OllyDBG 는 많은 리버서들이 사용하고 있는 굉장히 유용한 프로그램입니다. 이 프로그램을 쉽게 사용하기 위한 유용한 단축키입니다. 익숙해질때까지 계속 익히는게 좋습니다. 명령어 단축키 설명 Step Into F7 하나의 OP code 실행(함수 내부로 들어감) Step Over F8 하나의 OP code 실행(함수 내부로 안 들어감) Restart Ctrl+F2 다시 디버깅시작(프로세스 종료하고 재실행시킴) Go to Ctrl+G 원하는 주소 찾아감(코드 확인할때 사용, 실행되는 것은 아님) Run F9 실행(BP 걸려있으면 그 곳에서 실행 정지) Execute till return Ctrl+F9 함수 코드 내에서 RETN 명령까지 실행(함수 탈출 목적) Execute till cursor F4 cu.. 2020. 4. 18.
리버싱 핵심 원리_1 개발도구(visual stdio같은)로 C언어 소스 코드 빌드, 실행파일이 생성. 이 과정에서 사람이 이해하기 쉬운 명령어에서 기계가 이해하기 쉬운 기계어로 바뀜. 디버거(debugger) 유틸리티에 디스어셈블러(disassembler)를 통해 코드를 보게 됨. -EP(Entry Point) : CPU에 의해 가장 먼저 실행되는 코드시작위치 코드의 앞쪽에 Stub Code(컴파일러에 의해 생성되는 코드, 전역변수와 같은 것들이 생성)이 존재 -> main() 함수를 찾는 게 중요 Kernel32.GetCommandLineW - Windoww32 API 호출 코드 -BaseCamp를 설치하는 4가지 방법 1) Goto - Ctrl + G (원하는 주소를 바로 입력하여 감) 2) BP(BreakPoint) .. 2020. 4. 18.
728x90