Packing (2) 썸네일형 리스트형 ASPACK unpacking 문제를 풀다가 Aspack을 처음 접해서 해당 공부 내용을 남기고자 블로깅을 진행한다. 0x00. Packer 패커란 실행 파일 압축기를 의미한다, 정확한 명칭은 Run_Time Packer다. '실행 압축'이란 실행 파일에 실행 코드를 원본 형태로 두지 않고 압축을 진행한 것을 의미한다. 또한 압축해제 코드를 실행 파일에 같이 넣어놓은것이다. 따라서 프로그램이 실행될 대 먼저 압축해제 코드가 진행되서 원본 실행코드 압축이 풀리고 실행이되어진다. 0x01. 패커 사용 목적 패커의 사용목적은 크게 두가지로 나뉜다. 첫번째 사용목적은 실행 파일의 크기를 압축하여 줄이고자 하는 목적 두번쨰 사용목적은 PE 파일 내부의 코드, 소스 등을 감추기 위한 목적이다. 0x02. 언패킹 EXEINFO와 같은 툴을 통해 .. Stolen Bytes Stolen Bytes Stolen Bytes란 훔쳐진 바이트란 의미로 프로그램의 한 부분의 코드를 훔쳐내어 다른 부분으로 옮겨진 코드를 의미한다. 주로 옮겨지는 코드는 EP 위 몇개의 코드들이며 옮겨진 코드들은 OEP주소로 점프하기 전 위치에서 PUSH되어진다. 이부분의 명령어들은 이동된 곳 또는 할당받은 메모리 공간에서 실행되어진다. 만일, 보호된 프로세스의 메모리가 덤프 되었을 때 Stolen bytes를 복구하지 못한다면 덤프된 실행파일은 정상적으로 작동하지 않는다. POPAD와 jmp OEP 사이에 연속되어진 PUSH부분을 Stolen Bytes라고 한다. PUSHAD PUSHAD는 모든 Register를 Stack에 적재(push)하는 명령어이다. POPAD POPAD는 Stack에 백업되어있.. 이전 1 다음