소프트웨어 dup2patcher.dll 디컴파일링-2
2022.07.21 11:26
- 두 방식의 차이점
1. dup2patcher.dll 디컴파일링-1: dup2_2.25 로 제작된 patch.exe(=dup2patcher.exe) [.rsrc] 섹션의 [Virtual Address 값]을 기준으로 합니다.
-> 0x00022000
2. dup2patcher.dll 디컴파일링-2: dup2_2.26.1 로 제작된 dup2patcher.dll [.rsrc] 섹션의 [Virtual Address 값]을 기준으로 합니다.
-> 0x00023000
- 예제 파일
1. snapshotfix-patch.exe 를 실행 후 temp 폴더에 생성된 dup2patcher.dll
2. 어느 파일이든지 실행해서 temp 폴더에 dup2patcher.dll 이 생성되면 그 dup2patcher.dll 를 이용하면 됩니다.
- 필요 도구
1. CFF Explorer.exe
* dup2patcher.dll 의 [.rsrc] 섹션을 [rsrc00023000.bin] 파일로 덤프합니다.
* patch.exe(=dup2patcher.exe) 의 [.rsrc] 섹션을 삭제합니다.
* patch.exe(=dup2patcher.exe) 의 [.rsrc] 섹션의 Virtual Size(가상 크기)를 수정합니다.
* patch.exe(=dup2patcher.exe) 에 [rsrc00023000.bin] 파일을 로드하고 섹션명[.rsrc]을 입력합니다.
* patch.exe(=dup2patcher.exe) 의 [Data Directories] -> [Resource Directory RVA] 값을 수정합니다.
2. dup2_2.25.exe
* patch.exe(=dup2patcher.exe) 를 생성합니다.
* 마지막으로 수정된 patch.exe(=dup2patcher.exe) 로드해서 데이타 확인 및 재수정합니다.
------------------------------------------------------------------------------
1. dup2patcher.dll 추출하기
- 예제로 사용한 snapshotfix-patch.exe 는 dup2_2.26.1 로 제작했기 때문에,
실행하면 temp 폴더에 dup2patcher.dll 가 자동 생성됩니다.
실행 후 dup2patcher.dll 파일을 복사해서 사용하시면 됩니다.
2. patch.exe(=dup2patcher.exe) 제작하기
- 자세한 내용은 아래 [dup2patcher.dll 디컴파일링-1] 을 참고하세요.
3. CFF Explorer 로 [.rsrc]섹션 [덤프/삭제/로드] 하기
3-1. 필요한 파일 로드하기
[File -> Open -> dup2patcher.dll] 를 선택
[File -> Open -> patch.exe] 를 선택
3-2. dup2patcher.dll 의 [.rsrc] 섹션 덤프하기(내보내기)
덤프 파일명은 아무거나 해도 되지만 내용을 알기 쉽게 [rsrc00023000.bin]으로 합니다.
3-3. patch.exe 의 [.rsrc] 섹션을 삭제합니다.
3-4. patch.exe 의 [.rsrc] 섹션이 삭제된 모습입니다.
3-5. patch.exe 의 [.data] 섹션의 Virtual Size 값을 수정합니다.
a. dup2patcher.dll [.rsrc] 섹션의 Virtual Address 값 = 0x00023000 (기준 값)
b. patch.exe [.data] 섹션의 Virtual Address 값 = 0x0000D000
계산하기: a - b = 0x00023000 - 0x0000D000 = 0x00016000
3-6. patch.exe 로 덤프 파일 [rsrc00023000.bin]을 로드합니다.
3-7. 섹션명이 없는 새로운 섹션이 생겼습니다.
3-8. 섹션명을 [.rsrc]로 수정합니다.
3-9. [Data Directories] -> [Resource Directory RVA] 값이 비정상이므로 invalid(적색) 로 나타나군요.
3-10. [Data Directories] -> [Resource Directory RVA] 값을 [0x00022000 -> 0x00023000] 으로 수정합니다.
invalid(적색) 가 사라지고 [.rsrc] 섹션으로 변경 되었습니다.
3-11. [patch.exe 클릭 -> 디스크 아이콘 클릭 -> 예(Y) 클릭] 해서 저장합니다.
4. dup2_2.25 로 수정된 patch.exe(=dup2patcher.exe) 로드하기
4-1. [프로젝트 - 열기] 를 클릭하세요.
4-2. [*.exe] 선택하지 않으면 실행 파일이 안 나타납니다.
그러므로 먼저 파일 확장자 [*.exe] 를 선택해야 됩니다.
4-3. 로드시 얼마간 시간이 걸리니 기다려주세요.
patch.exe 파일이 정상이면 아래처럼 로드가 되고 또한 모듈을 클릭해서 데이타 확인 및 재수정도 가능합니다.
patch.exe 파일이 비정상이면 아래처럼 로드가 안됩니다. 안되면 처음부터 다시 해야됩니다.
정상으로 로드가 되면 꼭 [*.dup2] 로 저장하세요.
그러면 dup2_2.25 or dup2_2.26.1 로 새로운 패치 파일을 다시 만들 수 있습니다.
------------------------------------------------------------------------------
수고 많으셨습니다. 감사합니다.