목록전체 글 (18)
Study
17. 실행 파일에서 .reloc 섹션 제거하기 17.1 .reloc 섹션 - exe 형식의 PE 파일에서 Base Relocation Table 항목은 실행에 큰 영향을 미치지 않는다. - PEView와 HxD만 가지고도 수동으로 충분히 제거가 가능하다. 17.2 .reloc 제거 ▶ .reloc 섹션을 제거하는 순서 ① .reloc 섹션 헤더 정리 ② .reloc 섹션 제거 ③ IMAGE_FILE_HEADER 수정 ④ IMAGE_OPTIONAL_HEADER 수정 17.2.1 .reloc 섹션 헤더 정리 섹션 헤더의 범위는 270~297이다. 이 부분을 HxD를 이용하여 0으로 덮어쓴다. 17.2.2 .reloc 섹션 제거 .reloc 헤더를 보면 file에서 .reloc 섹션의 범위는 C000~D00..
16. Base Relocation Table 16.1 PE 재배치 - PE 파일(EXE/DLL/SYS)이 프로세스 가상 메모리에 로딩될 때 PE 헤더의 ImageBase 주소에 로딩된다. - DLL(SYS) 파일의 경우 ImageBase 위치에 이미 다른 DLL(SYS) 파일이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. - PE 파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될 때 수행되는 일련의 작업을 의미한다. 16.1.1 dll/sys 이미지 베이스 10000000을 갖는 a와 b 두 dll이 있다. a.dll이 먼저 로드되어 있을 때 b.dll을 로드하려 하면 a.dll가 로드된 주소를 포기하고 다른 주소를 찾아 로드된다. ex) 메모장을 로드한 후 실행시키고 dll 인..
15. UPX 실행 압축된 notepad 디버깅 15.1 압축코드 소개 ▲ 파일을 키면 UPX EP 코드(1015330)가 나타난다. 이는 UPX1 영역에 속하는 주소이며 notepad 프로그램을 실행시키는 코드의 진입점이 아니라 원본 코드를 압축 해제하는 코드의 EP 코드이다. ※ 참고 ① UPX는 압축된 원본 코드와 압축 해제 코드를 UPX1 섹션에 저장하고, UPX0 섹션에 압축을 풀어 원본 코드를 올린다는 것을 14장에서 배웠다. ② .rsrc 섹션은 압축이 되지 않고 원본 그대로 남아있는데, 그 이유는 파일의 아이콘, 이미지, IAT 관련 정보를 담고 있기 때문이다. 실행 이전에 필요한 리소스를 담고 있으므로 압축해서는 안 된다. 원본 코드를 복원시키는 코드는 UPX1의 마지막 부분에 있으며 1..