본문 바로가기
반응형

Study/리버싱6

[3] UPX 패킹과 언패킹 패킹이란? 패킹은 파일의 크기를 줄이기 위해 압축하는 것을 말한다. 파일의 코드를 숨기기 위해 패킹을 하기도 한다. UPX는 패킹 도구 중 하나다. notepad.exe를 사용한 UPX 패킹 UPX를 사용해 32bit의 notepad.exe를 패킹했다. 패킹한 파일과 원본 파일의 크기를 비교해보면 크기가 다르다. 왼쪽은 원본 파일이고 오른쪽은 패킹한 파일이다. 두 파일의 PE구조가 다른 것을 알 수 있다. UPX 언패킹 ctrl+F8을 하면 EntryPoint에서 멈춘다. 파일의 entrypoint는 10154F0이다. pushad 명령어는 모든 레지스터의 값을 스택으로 백업하라는 명령어다. *EntryPoint : 실행 파일의 코드 시작점을 의미 esi(복사할 데이터의 주소를 저장하는 레지스터)에는 1.. 2020. 11. 1.
[3] IAT와 EAT 로딩 과정 IAT 로딩 과정 1. IID의 Name 멤버를 읽어서 라이브러리의 이름 문자열을 얻는다 2. 해당 라이브러리를 로딩한다. 3. IID의 OriginalFirstThunk 멤버를 읽어서 INT 주소를 얻는다. 4. INT에서 배열의 값을 하나씩 읽어서 해당 IMAGE_IMPORT_BY_NAME주소(RVA)를 얻는다. 5. IMAGE_IMPORT_BY_NAME의 Hint or Name을 이용해 해당 함수의 시작 주소를 얻는다. 6. IID의 FirstThunk 멤버를 읽어서 IAT의 주소를 얻는다. 7. 해당 IAT 배열 값에 위에서 구한 함수 주소를 입력한다. 8. INT가 끝날 때까지(NULL을 만날 때까지) 4~7 과정을 반복한다. IMAGE_OPTIONAL_HEADER(NT HEADER의 구조체 멤.. 2020. 10. 26.
[3] ㄷㄹㅎ 4,5 보호되어 있는 글 입니다. 2020. 10. 25.
[2] 2주차 과제 보호되어 있는 글 입니다. 2020. 9. 20.
반응형