실전 안 드 로 이 드 패키지 와 서명

소 편 은 이전에 안 드 로 이 드 프로젝트 포장 경험 을 많이 소개 해 드 렸 습 니 다.이 내용 은 하나의 프로젝트 인 스 턴 스 를 통 해 안 드 로 이 드 의 모든 포장 과 서명 과정 을 설명 합 니 다.
안 드 로 이 드 패키지
다음은 원리 도:
这里写图片描述
안 드 로 이 드 의 프로젝트 가 컴 파일 과 포장 을 거 쳐 형성 되 었 습 니 다.
.dex 파일
resources.arsc
uncompiled resources
AndroidManifest.xml
일반적인 apk 파일 의 압축 을 풀 었 습 니 다.압축 을 풀 어 낸 파일 은 다음 과 같 습 니 다.
这里写图片描述
classes.dex 는.dex 파일 입 니 다.resources.arsc 는 resources resources 파일 입 니 다.AndroidManifest.xml 은 AndroidManifest.xml 파일 입 니 다.res 는 uncompled resources 입 니 다.META-INF 는 서명 폴 더 입 니 다.
그 중에서 resources.arsc 는 자원 파일 의 색인 과 같 아서 자원 파일 을 쉽게 찾 을 수 있 습 니 다.
구체 적 인 포장 절차 도:
这里写图片描述
android 서명
android 서명 후 파일 에 META-INF 가 하나 더 있 습 니 다.그 중 세 개의 파일 이 있 습 니 다.
这里写图片描述
다음은 세 파일 의 구체 적 인 apksinger 생 성 방법 을 분석 합 니 다.
1、MANIFEST.MF
모든 항목 을 하나씩 옮 겨 다 니 며 디 렉 터 리 나 세 개의 파일(MANIFEST.MF,CERT.RSA,CERT.SF)을 건 너 뛰 고 한 파일 이 라면 SHA 1(또는 SHA 256)메시지 요약 알고리즘 으로 이 파일 의 요약 을 추출 한 후 BASE 64 인 코딩 을 한 후"SHA 1-digest"속성의 값 으로 MANIFEST.MF 파일 의 한 조각 에 기록 합 니 다.이 블록 은"Name"속성 이 있 습 니 다.값 은 이 파일 이 apk 패키지 에 있 는 경로 입 니 다.
2、CERT.SF:
1>이 MANIFEST.MF 파일 의 전체 SHA 1 값 을 계산 하고 BASE 64 인 코딩 을 거 친 후 CERT.SF 주 속성 블록(파일 머리 에 있 음)의"SHA 1-digest-manifest"속성 값 에 기록 합 니 다.
2>매 니 페스트.MF 파일 의 각 블록의 SHA 1 을 조목조목 계산 하고 BASE 64 인 코딩 을 거 친 후 CERT.SF 에 기 록 된 동명 블록 에 속성의 이름 은'SHA 1-digest'이다.
3、CERT.RSA
이전에 생 성 된 CERT.SF 파일 을 비밀 키 로 계산 한 다음 서명 과 공개 키 정 보 를 포함 하 는 디지털 인증 서 를 CERT.RSA 에 함께 기록 하여 저장 합 니 다.CERT.RSA 는 PKCS 7 형식 을 만족 시 키 는 파일 입 니 다.
왜 이렇게 사인 을 해?
위 에서 우 리 는 apk 에 서명 한 후의 세 파일 의 상세 한 내용 을 소개 했다.그러면 안 드 로 이 드 에서 왜 이런 방식 으로 암호 화 서명 을 해 야 하 는 지 정리 해 보 자.이런 암호 화가 가장 안전 하지 않 은 가?apk 파일 이 변경 되면 어떻게 되 는 지 분석 해 보 겠 습 니 다.
우선,apk 패키지 에 있 는 모든 파일 을 변경 하면 apk 설치 검증 시 변 경 된 파일 요약 정보 가 MANIFEST.MF 의 검사 정보 와 다 르 기 때문에 검증 에 실패 하면 프로그램 이 성공 적 으로 설치 되 지 못 합 니 다.
그 다음 에 변 경 된 파일 에 대해 새로운 요약 값 을 계산 한 다음 에 MANIFEST.MF 파일 에 대응 하 는 속성 값 을 변경 하면 CERT.SF 파일 에서 계산 한 요약 값 과 다 르 고 검증 에 실 패 했 습 니 다.
마지막 으로,만약 당신 이 아직 단념 하지 않 고 MANIFEST.MF 의 요약 값 을 계속 계산 하고,이에 상응하는 CERT.SF 의 값 을 변경 한다 면,디지털 서명 값 은 반드시 CERT.RSA 파일 에 기 록 된 것 과 다 를 것 이 며,실패 할 것 입 니 다.
그럼 계속 숫자 서명 을 위조 할 수 있 을까요?디지털 인증서 에 대응 하 는 비밀 키 가 없 기 때문에 불가능 합 니 다.
따라서 다시 포장 한 프로그램 이 안 드 로 이 드 장치 에 설치 되 려 면 다시 서명 해 야 합 니 다.
위의 분석 을 통 해 알 수 있 듯 이 APK 의 모든 내용 을 수정 하면 다시 서명 해 야 한다.그렇지 않 으 면 설치 실 패 를 알 릴 수 있다.물론 여 기 는 분석 하지 않 을 것 이다.다음 글 은 왜 설치 실 패 를 알 리 는 지 분석 하 는 데 중심 을 둔다.

좋은 웹페이지 즐겨찾기