반응형

2024/10 23

17. 실행 파일에서 .reloc 섹션 제거하기

Reloc 섹션 설명Base Relocation Table은 PE 파일에서 하드코딩된 주소의 위치를 알려주는 정보로, 실행 파일(EXE)에서는 큰 영향을 주지 않음. 따라서 reloc 섹션을 제거해도 EXE는 정상적으로 실행될 수 있음.reloc 섹션은 보통 VC++에서 생성된 PE 파일의 마지막에 위치하며, 이 섹션을 제거하면 파일 크기가 약간 줄어듦PEView나 Hex editor를 사용해 쉽게 제거 가능   Reloc 섹션 제거 작업 단계.reloc 섹션 헤더 정리.reloc 섹션 헤더의 파일 오프셋을 찾아서, Hex editor를 사용해 해당 부분을 0으로 덮어씌움.reloc 섹션 제거.reloc 섹션의 시작 옵셋을 찾아, 해당 부분부터 파일 끝까지 삭제이 단계에서 물리적으로 섹션을 제거할 수 있..

16. Base Relcoation Table

PE 재배치(PE Relocation)PE 재배치란?PE(Portable Executable) 파일이 원래 로딩되기를 기대하는 기본 주소인 ImageBase에 로딩되지 못하고, 다른 주소에 로딩될 때 발생하는 작업을 의미함  DLL/SYS 파일에서의 PE 재배치DLL/SYS 파일: 예를 들어, TEST.EXE 프로세스에 A.DLL이 10000000 주소에 로딩된 상태에서 B.DLL이 동일한 주소로 로딩되려고 할 때, PE 로더는 충돌을 피하기 위해 B.DLL을 다른 비어있는 주소에 로딩함. EXE 파일에서의 PE 재배치EXE 파일: 실행될 때마다 랜덤한 주소에 로딩되며, 이 과정에서 재배치가 발생할 수 있음. 이는 보안을 위한 ASLR(Address Space Layout Randomization)의 일..

15. UPX 실행 압축된 notepad 디버깅

010073B2: GetModuleHandleA() API 호출 후 notepad.exe 프로세스의 ImageBase구함010073B4, 010073C0: MZ와 PE 시그니처 비교    notepad_upx.exe의 EP Code0101533060PUSHAD01015331BE 00100101MOV ESI, 0101100010153368DBE 0000FFFFLEA EDI, DWORD PTR DS: [ESI+FFFF0000]  PUSHAD 명령어: EAX~EDI 레지스터를 스택에 저장ESI/EDI 설정:ESI: 두 번째 섹션 시작 주소 (01011000)EDI: 첫 번째 섹션 시작 주소 (01001000)첫 번째 섹션: 메모리에서만 존재, 압축 해제된 원본 파일의 코드가 저장될 장소예상 동작:ESI가 가리..

14. 실행 압축

데이터 압축어떤 형태의 파일이든 내부는 바이너리로 되어 있음 -> 압축 알고리즘을 사용해 크기를 줄일 수 있음비손실 압축압축 파일 100% 복원 가능보관 및 이동에 용이하도록 하려는 목적으로 사용7-zip, 빵집과 같은 프로그램 이용Run-Length, Lempel-Ziv, Huffman 알고리즘손실 압축압축 파일 100% 복원 불가압축률을 높이는 목적멀티미디어 파일들(jpg, mp3, mp4)에서 대부분 사용   실행 압축실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술실행 압축된 파일도 PE파일, 내부에 원본 PE파일과 decoding루틴 존재. EP코드에 decoding루틴이 ..

반응형