2012-09-23 5 views
4

최근에 나는 실행 가능한 압축에 관한 연구를하고 있습니다. test.c C 언어 소스를 컴파일하고 Windows가 아닌 UPX로 압축하십시오. 그것은 터미널에있는 목록입니다 : UPX: test.so NotCompressibleException. test.c의 소스 코드는 다음과 같습니다UPX NotCompressibleException

int main(){ 
    int i = 0; 
    printf("HelloWorld\n"); 
    return 0; 
} 

내가 추측하고하면 실행 파일이 압축 너무 단순하다는 것이다? 또는 뭔가 놓칠 수 있습니다? 이 문제에 대해 아는 사람이 있으면 이유를 에게 알려주세요. 아무도 말해주지 않으면 문제를 찾기 위해 소스 코드를 읽어야합니다. 아! 소스 코드 부담 읽기.

답변

6

NotCompressibleException을 출력하는 데에는 몇 가지 이유가 있지만,이 경우에는 바이너리 크기가 너무 작기 때문일 수 있습니다. UPX는 40KB 이하의 바이너리를 처리 할 수 ​​없습니다.

이 문제를 해결하는 가장 좋은 방법은 정적 모드에서 바이너리를 컴파일하여 더 큰 실행 파일을 얻는 것입니다. 따라서 시도하십시오 : gcc -static -o mytest mytest.c 다음 upx -o mytest-upx mytest.