윈 도 우 아래글... UPX 버그패치
2021.10.07 12:07
윈도우 포럼 - 강좌 / 팁 / 테크 - UPX 압축풀기 (windowsforum.kr)
이란 글에서 besttrace.exe 를 UPX -d 옵션으로 언팩킹 했을 때...
언팩킹 된 파일이 실행시 런타임 오류가 발생하는 이유는...
Relocation fix-up 테이블을 정상적으로 처리하지 못하는 UPX 프로그램의 버그 때문입니다.
UPX 프로그램의 버그 때문에 패치를 만들게 되었지요.
아래와 같이 패치된 파일로 -d 옵션으로 언팩킹하면
정상적으로 언팩킹이 되고
언팩킹되어 만들어진 test.exe 를 실행하면...
-d 옵션 만으로 언팩킹 하더라도 정상적으로 실행 됍니다.
Best Trace 라는 프로그램은 시스템 트레이로 가도록 만들어져 있기 때문에
프로그램 종료는 작업표시줄 우측에서 마우스클릭으로 종료, 파일삭제는 탐색기로 하면 되고...
테스트용 데모파일과...
UPX 프로그램의 Relocation fix-up 테이블 버그 패치한 파일 첨부해서 올립니다.
댓글 [18]
-
kernel 2021.10.07 12:16
-
sunshine 2021.10.07 14:05
테스트 해보니 잘 됩니다.
감사합니다.
-
슈머슈마 2021.10.07 13:52
Upx 가 버그가 있었는지는 몰랐네요. 개발자는 패치를 안해줄까요? -
kernel 2021.10.07 18:56
글쎄요.
평소에 UPX에 관심이 없어서 잘 모르겠네요.
-
못말리는짱구 2021.10.07 14:56
자료 감사드립니다.
32비트는 없을까요?
-
kernel 2021.10.07 18:59
자주 접속하지 못해서 일일히 답변 못 답니다.
문제가 되는 테스트 가능한 32비트 샘플 프로그램 첨부 가능 한가요?
샘플 프로그램 올려 주시면, 시간 날 때 살펴 볼수는 있습니다만...
-
못말리는짱구 2021.10.08 12:21
지금 기억에 없어 올려드릴 수가 없네요.
가끔하다보면 안될 때가 있습니다.
올려 주신 패치 프로그램은 범용으로 사용할 수 없는 것입니까?
아님 besttrace.exe에 특화된 패치 프로그램인가요?
-
harman777 2021.10.08 13:00
저도 잘은 모르는데
kernel님이 올려주신 패치이용하면 64비트 32비트 다 되던데요 ^^;;;;
-
kernel 2021.10.10 21:10
besttrace.exe 에 특화된 패치가 아니고...
UPX 압축풀기란 글이 있길래... Relocation fixup table을 정상적으로 처리하지 못하는 UPX 프로그램의 버그를 패치한 겁니다.
UPX 로 정상적으로 unpacking이 되지 않는 경우가 있을 수 있는데 그런 경우는...
파일 unpacking을 통한 프로그램 해킹을 방지하기 위해 프로그램 만든 사람이 바이너리에 장난을 처놓은 겁니다.
-
kernel 2021.10.10 21:19
어떤 식으로 이런 unpacking 방지 기법이 가능햐냐면...
UPX 로 packing 되어있는 .exe 바이너리를 실행할 경우, 메모리에서 먼저 unpacking 과정이 수반 되어야 하는데
실행시에는 로딩 속도를 높이기 위해 필요없다고 판단되는 부분들은 sanity 체크를 생략하는 반면에...
packing 되어있는 바이너리를 파일로 unpacking 할 때는 데이타의 무결성을 확인하기 위해 디테일한 sanity 체크가 이루어지게 되는 구조로
UPX 프로그램이 만들어져 있기 때문이죠.
이런 점을 이용해서... signature나 UPX 프로그램 헤더를 변조해서 해킹을 방지할 목적으로 바이너리에 장난을 처 놓은 겁니다.
이와 같은 해킹 방지 테크닉은 UPX 소스코드만 한번 분석해 봐도 간단하게 만들 수 있는 부분이니 공부해 보시길...
upx 소스코드 링크
-
cungice 2021.10.07 15:16
수고 많으셨습니다. 감사합니다.
-
왕초보 2021.10.08 11:20
감사합니다...
-
harman777 2021.10.08 12:57
와~ 감사합니다 kernel님 잘되네요 ^^;;;;;;
제가 실력없는 프로그래머라 궁금한건 못참아요 -_-;;;;;
그럼 --strip-relocs 옵션은 어떤 경우에 사용하면 되는건가요
-
kernel 2021.10.10 20:31
Relocation fixup table 에 대한 디테일한 기술적인 내용을 답변 글로 설명하기엔 내용이 너무 길어질거 같아
다음 링크로 대신 합니다.
executable - How are PE Base Relocations build up? - Stack Overflow
-
kernel 2021.10.10 20:39
Relocation fixup table 에 대한 디테일한 내용을 알고있다는 전제하에... 간략하게 적습니다.
.exe 파일인 경우 링커에 의해 정해진 Base Address 로 OS 가 프로그램을 메모리로 로드해서 실행하기 때문에 메모리 Relocation이 필요 없고
이런 경우엔 .exe 파일로 부터 Relocation fixup table을 제거해도 실행하는 데는 지장이 없죠.
.dll 파일인 경우에는 실행 프로그램에 의해서 import 되어지는 DLL 파일이 다수가 있을 수 있고...
로드 되는 DLL이 많아지면 기본 Base Address 로 로드 될 수 없는 경우가 발생할 수 있어서 이런 경우에는 메모리에서 재배치가 필요해서
Relocation fixup 테이블이 필요하게 됍니다. 이 경우 OS 로더가 .dll 파일의 PE 섹션에서 Relocation fixup table을 참조해서 메모리에서
컴파일 되어있는 모듈에서 고정된 주소값을 사용하는 기계어의 오펀랜드 값을 패치하게 됍니다.
-
kernel 2021.10.10 21:02
그러나... ASLR 테크닉이 사용되는 특수한 경우도 있습니다
ASLR 이란 해킹에 방어적인 테크닉으로 OS에서 제공해주는 기능인데...
프로그램 실행할때 마다 메모리를 random으로 다른 주소 공간에 재배치하는 기법 입니다.
예를 들어서...
Rad Studio 라는 개발도구 프로그램을 크랙하는 경우를 살펴보면....
Rad Studio 라는 프로그램은 컴퓨터 네임을 encoding 해서 제품 시리얼키와 함께 조합해서 SHA 해쉬 값 계산 결과를 스트링으로
변환한 후, RSA 알고리즘을 이용해서 제품 인증을 위한 Slip 파일을 생성해서 라이센스 정보를 생성하는 방법을 이용하고 있고
크랙 프로그램은 .dll 파일을 생성해서 DLL hijacking 테크닉 이용해서 bds.exe 와 licensemanger.exe 프로그램을 메모리 인젝선해서
라이센스 체크를 바이패스 하는 간단한 해킹 테크닉을 이용하고 있는데...
해킹으로 알아낸 프로그램의 fix 되어 있는 주소를 이용해서 인젝션 하기 때문에...
시스템에서 ASLR을 적용하게 되면... 이와 같은 구조로 만들어진 해킹 프로그램은 런타임 오류를 내면서 실행에 실패하게 되지요.
-
kernel 2021.10.10 21:05
해킹에 대한 기술적인 내용을 다룰려면 한도 끝도 없고.
일반적인 경우 .exe 파일인 경우에는 Relocation fixup table을 제거 할 수 있다.
그러나 특수한 경우도 있으니 타겟 프로그램을 분석해서 알아내거나, UPX 옵션으로 실험해보면 된다.
이 정도 알고 있으면 될 듯.
-
harman777 2021.10.12 10:10
놀라워요 ㄷㄷㄷㄷㄷㄷㄷ
kernel님 덕분에 도움 많이 받습니다
복 받으실 거에요. 감사합니다 ^^;;;;;;;;;;
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
3983 | 소프트웨어| 언패킹 후 리소스 재구축하기-1 [16] | sunshine | 1044 | 6 | 10-13 |
3982 | 윈 도 우| windows 11 네트워크 공유하는 방법 [7] | 버금차. | 3700 | 2 | 10-13 |
3981 | 윈 도 우| 윈11 TPM,UEFI 무시하고 설치하기. [8] | 마루나래 | 5232 | 16 | 10-12 |
3980 | 소프트웨어| 최신 Rufus를 사용하여 Windows 11에 대한 TPM, 보안 부팅 ... [4] | VₑₙᵤₛG | 2715 | 8 | 10-11 |
3979 | 윈 도 우| Windows 11에서 위젯을 제거하는 방법 [1] | VₑₙᵤₛG | 2665 | 6 | 10-09 |
3978 | 소프트웨어| 한컴오피스 설치시 제품 번호가 맞지 않습니다라며 설치 안... [5] | heykevin | 4800 | 2 | 10-09 |
3977 | 윈 도 우| Windows 11 우회 설치 - boot.wim 수정하기 [26] | suk | 5073 | 37 | 10-08 |
» | 윈 도 우| 아래글... UPX 버그패치 [18] | kernel | 2079 | 7 | 10-07 |
3975 | 소프트웨어| UPX 압축풀기 [5] | sunshine | 1917 | 9 | 10-07 |
3974 | 모 바 일| 아이폰 컴퓨터(윈도우10) 연결 문제 (아이튠즈 아이폰 인식... [2] | Day | 1083 | 0 | 10-06 |
3973 | 소프트웨어| WimBootBR 일회성 윔부트, C드라이브 백업/복원 cmd [37] | 지후빠 | 3527 | 26 | 10-03 |
3972 | 윈 도 우| 숨겨진 Windows 11 관리자 계정을 활성화하는 방법 [3] | VₑₙᵤₛG | 3051 | 6 | 10-02 |
3971 | 윈 도 우| Windows 11에서 포커스 세션을 사용하는 방법 | VₑₙᵤₛG | 1023 | 1 | 10-01 |
3970 | 소프트웨어| Ventoy 정리 #2 [2021.09.28] 추가 [11] | 메인보드 | 4701 | 20 | 09-29 |
3969 | 윈 도 우| [노트북] Intel 11세대 프로세서(Intel Tiger Lake) 문제 ... [1] | sugar | 1449 | 3 | 09-29 |
3968 | 소프트웨어| MPRESS 압축풀기-3 [5] | sunshine | 1090 | 6 | 09-29 |
3967 | 소프트웨어| MPRESS 압축풀기-2 [11] | sunshine | 1473 | 4 | 09-28 |
3966 | 소프트웨어| MPRESS 압축풀기-1 [12] | sunshine | 2967 | 14 | 09-26 |
3965 | 윈 도 우| 불필요한 파일/폴더 지우기 deltree useless .bat [35] | 지후빠 | 4713 | 22 | 09-21 |
3964 | 서버 / IT| TrueNAS 로 삼바 서버 구축하기 [14] | gooddew | 2673 | 5 | 09-20 |
첨부한 압축파일 풀어서...
버그패치한 upxk64.exe를 이용.