소프트웨어 UPX 압축풀기
2021.10.07 02:09
출처;
https://github.com/upx/upx/issues/444
https://www.52pojie.cn/thread-326995-1-1.html
위의 [demo.zip] 파일 속의 [besttrace.exe] 를 가지고 테스트를 했습니다.
결과가 좋아서 bootice 에 적용한 것입니다. 회원 분도 한 번 해보시기를 바랍니다.
upx 옵션을 살펴보니 압축 해제 옵션 [-d] 는 [-d --strip-relocs=1(default)] 와 같습니다.
그 동안 [-d] 만 알았고 [-d --strip-relocs=1 or 0] 도 있는 줄 몰랐습니다.
아무튼 자체 압축 해제 명령으로 푸니까 리소스를 재 수정할 필요가 없어서 아주 편리합니다.
테스트에 사용한 UPX 는 가장 최신 버전인 UPX_v3.96w_x32 입니다.
데모 파일: 출처에서 demo.zip 을 받으세요.
테스트 파일: bootice.7z -> 푸는 방법을 알려드렸으니까 [테스트 파일] 은 조만간 삭제 하겠습니다.
테스트 UPX: upx396.7z -> v3.96w_x32
//////////////////////////////////////////////////////////////////////////////
1. demo.zip 파일 속의 besttrace_v.38 UPX 압축풀기
1-1. [besttrace] 를 DIE 로 검사하니 UPX 로 압축되어 있었습니다.
1-2. 흔히 사용하는 UPX 압축 해제 명령인 [-d] 를 적용했습니다.
1-3. 압축은 정상적으로 풀렸지만 실행시 [에러] 가 발생하네요.
1-4. 압축 해제 옵션 [--strip-relocs=0] 를 추가하고 다시 풀었습니다.
1-5. 실행시 에러도 안 나오고 잘 됩니다.
//////////////////////////////////////////////////////////////////////////////
2. bootice_v1.3.4.0 UPX 압축풀기
2-1. [bootice_v1.3.4.0_x32_x64] 를 DIE 로 검사하니 UPX 로 압축되어 있습니다.
2-2. 기본 옵션인 [-d] 만 적용해서 풀었더니 전혀 실행이 안 되었습니다.
2-3. 그래서 [besttrace] 와 마찬가지로 [--strip-relocs=0] 옵션을 추가로 적용했습니다.
2-4. x32 비트, x64 비트 둘 다 실행이 아주 잘 됩니다.
2-5. [Resource Tuner] 로 리소스를 재 수정할 필요도 없고 [Resource Hacker] 에서 바로 수정이 가능합니다.
//////////////////////////////////////////////////////////////////////////////
3. bootice_v1.3.3.2 UPX 압축풀기
3-1. [bootice_v1.3.3.2_x32_x64] 를 DIE 로 검사하니 UPX 로 압축되어 있습니다.
[--strip-relocs=0] 옵션까지 추가해서 시도를 했지만 에러가 나와서 실패했습니다.
3-2. 그래서 [winhex] 로 검사하니 주소 [000003E0 ~ 2] 의 값이 [UPX] 가 아니고 [uly] 로 되어 있었습니다.
3-3. [winhex] 로 주소 [000003E0 ~ 2] 의 값을 [UPX] 로 다시 정정했습니다.
수정 후 꼭 저장(update) 하셔야 적용됩니다.
3-4. [--strip-relocs=0] 옵션을 적용해서 압축을 풀었더니, 아주 정상적으로 풀립니다.
3-5. x32 비트, x64 비트 둘 다 실행이 아주 잘 됩니다.
아니 ! bootice_v1.3.3.2 가 이렇게 쉽게 풀리다니... 놀랍군요.
3-6. [Resource Tuner] 로 리소스를 재 수정할 필요도 없고 [Resource Hacker] 에서 바로 수정이 가능하니 아주 편리합니다.
END //////////////////////////////////////////////////////////////////////////////
수고 많으셨습니다. 감사합니다.