Android 시스템 프레임워크 수정을 통한 APK 서명 검증 우회
Source
Evernote/Technote scraps/APK 의 classes.dex 수정후 sign 하지 않고 기존 서명 그대로 사용 네이버 블로그.md
Summary
이 문서는 Android 단말기에서 APK의 classes.dex 파일을 수정한 후, 별도의 서명(signing) 없이 기존 서명을 유지한 상태로 설치 및 실행할 수 있도록 하는 방법을 설명한다. 이는 단말기 시스템 레벨의 프레임워크 파일(core.jar, core.odex)을 수정하여 서명 검증 로직을 무력화하는 방식이다. 주요 방법은 두 가지로, 1) deodex 후 Smali 파일(java/security/MessageDigest.smali, Signature.smali) 수정 및 재컴파일, 2) core.odex 파일의 HEX 코드 직접 수정 및 매직코드(Magic Code) 재계산이 있다. 이 방법은 시스템 파일 접근 권한이 필요하며, 특정 Android 버전/디바이스에 종속적인 기술적 세부사항을 포함한다.
Key Points
- 목표: 서명되지 않거나 서명이 변경된 APK를 시스템이 검증 오류 없이 설치/실행되도록 함
- 원리: Android 시스템 프레임워크의 서명 검증 메소드(MessageDigest, Signature)를 항상 ‘일치’로 반환하도록 패치
- 방법 1 (Smali 수정): core.jar를 deodex하여 MessageDigest.smali 및 Signature.smali의 검증 로직을 수정 후 재컴파일 및 odex 화
- 방법 2 (HEX 수정): core.odex 파일의 특정 HEX 패턴을 검색하여 검증 우회 코드로 치환 후, 매직코드(Magic Code)를 재계산하여 파일 무결성 오류 방지
- 주의사항: 시스템 파티션(/system/framework) 수정 필요, 루트 권한 필요, 디바이스/OS 버전에 따라 HEX 패턴 및 파일 구조가 상이할 수 있음