콘텐츠로 건너뛰기

[CodeEngn] MobileApp L01

문제 정보

키값을 찾으시오

문제 파일

SmartApp L01.apk


apk를 adb로 설치했을때 아래와 같이 AndroidManifest.xml 파일 내용을 파싱할수 없다는 오류가 뜬다.

myMac@MacBook-Pro Downloads % adb install -r SmartApp\ L01.apk 
Performing Streamed Install
adb: failed to install SmartApp L01.apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl895182922.tmp/base.apk: AndroidManifest.xml]

myMac@MacBook-Pro Downloads % adb logcat "*:E"
...
06-23 19:10:48.660  2090  2131 E PackageInstaller: Commit of session 895182922 failed: Failed to parse /data/app/vmdl895182922.tmp/base.apk: AndroidManifest.xml
...

myMac@MacBook-Pro apk % unzip -q SmartApp\ L01.apk 
myMac@MacBook-Pro apk % ls -la
total 1384
drwxr-xr-x   9 myMac  staff     288  6 23 21:03 .
drwxr-xr-x  10 myMac  staff     320  6 23 20:34 ..
-rw-rw-r--@  1 myMac  staff    1648 11  2  2013 AndroidManlfests.xml
-rw-r--r--@  1 myMac  staff  219902 12 10  2021 SmartApp L01.apk
-rw-rw-r--@  1 myMac  staff  469348 11  2  2013 class.dex
drwxrwxr-x@  3 myMac  staff      96 11  2  2013 lib
drwxrwxr-x@  8 myMac  staff     256 11  2  2013 res
-rw-rw-r--@  1 myMac  staff    2240 11  2  2013 resource.arsc

apk 압축을 해제해보면 다음 파일들이 좀 이상하단걸 알 수 있었다.
그래서 다음 파일 이름들을 수정해주었다.

  • AndroidManlfests.xml -> AndroidManifest.xml
  • class.dex -> classes.dex
  • resource.arsc -> resources.arsc

myMac@MacBook-Pro Downloads % adb install -r SmartApp\ L01.apk 
Performing Streamed Install
adb: failed to install ./SmartApp L01.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl929542716.tmp/base.apk: Attempt to get length of null array]

myMac@MacBook-Pro Downloads % adb logcat "*:E"
...
06-23 20:26:05.717  2090  2131 E PackageInstaller: Commit of session 929542716 failed: Failed to collect certificates from /data/app/vmdl929542716.tmp/base.apk: Attempt to get length of null array
...

압축하고 설치하니 이번에는 APK 서명 오류가 떴다.

아래와 같이 apk를 다시 서명해주면 해결된다.

myMac@MacBook-Pro Downloads % keytool -genkey -v -keystore kr.h4ck.keystore -alias h4ck.kr -keyalg RSA -keysize 2048
키 저장소 비밀번호 입력:  
새 비밀번호 다시 입력: 
이름과 성을 입력하십시오.
  [Unknown]:  h4ck.kr
조직 단위 이름을 입력하십시오.
  [Unknown]:  h4ck.kr
조직 이름을 입력하십시오.
  [Unknown]:  h4ck.kr
구/군/시 이름을 입력하십시오?
  [Unknown]:  h4ck.kr
시/도 이름을 입력하십시오.
  [Unknown]:  h4ck.kr
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:  KO
CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO이(가) 맞습니까?
  [아니오]:  y

다음에 대해 유효 기간이 90일인 2,048비트 RSA 키 쌍 및 자체 서명된 인증서(SHA256withRSA)를 생성하는 중
	: CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO
[kr.h4ck.keystore을(를) 저장하는 중]

myMac@MacBook-Pro Downloads % jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore kr.h4ck.keystore SmartApp\ L01.apk h4ck.kr
Enter Passphrase for keystore: 
   adding: META-INF/MANIFEST.MF
   adding: META-INF/H4CK_KR.SF
   adding: META-INF/H4CK_KR.RSA
  signing: AndroidManifest.xml
  signing: lib/armeabi/libKISACrypto.so
  signing: class.dex
  signing: AndroidManlfests.xml
  signing: resource.arsc

>>> Signer
    X.509, CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO
    [trusted certificate]

jar signed.

myMac@MacBook-Pro Downloads % adb install -r ./SmartApp\ L01.apk
Performing Streamed Install
Success

답글 남기기