dex2jar

: APK 파일은 안에 classes.dex라는 파일이 있는데 이 파일을 Android Dalvik이 인식할 수 있도록 class 파일을 바이트 코드로 변환하는 툴


1) apk 파일의 압축을 푼다.



2) 압축을 푼 classes.dex파일을 d2j-dex2jar.bat이 위치한 폴더로 이동시킨다.

3) cmd를 열고 다음 명령어를 실행하여 dex파일을 jar파일로 변환한다.


4) 해당 폴더 내 jar 파일이 위치하는 것 확인


5) jar파일의 내용을 확인하려 하지만 깨져서 확인 불가ㅠㅠ



이때 사용하는 것이 다음의 jd-gui 툴이다!


JD-GUI

: 자바 디컴파일러로 위에서 dex2jar로 추출해낸 jar파일을 디컴파일해 주는 툴

    ** 하지만 디컴파일이 완벽하게 100% 가능한 것이 아니므로 참고하장...ㅠㅠ

다운로드 경로: http://jd.benow.ca/

1) 다운받은 jd-gui.exe 실행


2) 디컴파일할 jar 파일 가져오기



APK-Manager Fix 7.4 (APK 디컴파일 / 컴파일 도구)

: apk 파일을 디컴파일 및 재 컴파일 등을 할 수 있는 툴

  • 최신버전을 다운받을 수 있다면 최신 버전 추천
  • 압축파일을 다운로드 받으면 다음 그림과 같이 여러 폴더와 cmd 파일이 존재한다.
  • cmd 파일을 실행시키면 apktool을 간편하게 사용할 수 있다.


  • 자주 사용하는 기능 및 사용 방법
    • 9 : Decompile APK
    • 14 : Compile APK / Sign APK / Install APK (All in one step)

** 앱은 TeamSIK의 CTF 연습 문제인 app-easy-release.apk를 사용 

1) 앱을 컴퓨터로 추출한다. (adb pull 또는 ASTRO 앱 사용)
                    - adb pull <apk 파일 위치 경로>
                    - 단말기에 설치된 앱 추출 시 ASTRO 앱 사용하면 편리함
                        → 앱 실행 > 앱 > 앱 오른쪽 상단의 메뉴 > 백업 
                        →  컴퓨터에 단말기 연결 후 backups > apps > 해당앱

            2) 추출한 앱(apk파일)을 "place-apk-here-for-modding" 폴더로 이동시킨다. 

            3) script.cmd를 실행시킨 후 22. Set current Project 입력


 4) 디컴파일하려는 앱(apk파일) 번호 입력


          5) 9. Decompile APK 입력하여 디컴파일

          6) Projects 폴더에서 디컴파일된 apk파일 확인

      


        7) 코드 수정 후  14. Compile apk / Sign apk / Install apk 를 입력하면 한번에 컴파일, 서명, 설치까지 가능하다. 
            ** 11. Compile APK로 컴파일 후, 12. Sign APK로 서명, 13. install APK로 단말기에 설치 각각 진행 가능\
            ** 서명까지 완료된 apk 파일은 "plcae-apk-here-for-modding" 폴더에 "signed[본래 파일명]"으로 저장된다.




apktool.jar

위의 방법이 훨씬 더 간단하므로 cmd툴을 이용하는 것을 추천하지만 apktool.jar 명령어에 대해서도 설명한다. 

https://ibotpeaches.github.io/Apktool/에서 최신 버전의 apktool을 다운로드 받은 후 진행하자.


1) 다운로드 받은 apktool.jar 파일이 위치한 경로에서 cmd를 실행시킨다.

       java -jar apktool.jar 
        


2) 디컴파일
    
      java -jar apktool d [apk파일 경로] 



3) 파일 수정 후 재 컴파일

     java -jar apktool b [디컴파일한 소스 폴더] -o [저장할 apk 명] 





4) 단말기에 설치하기 전에 서명을 해줘야 제대로 동작한다. 이때 APK Easy Tool을 사용하면 편리하다.

    [select] 클릭 후, 재 컴파일한 apk파일 선택 > sign selected APK 








안드로이드 APK 취약점 점검 환경 구성

안드로이드 APK 취약점 점검을 하려면 일단 내 호스트 PC에 환경 설정을 해야한다. 

  1. 안드로이드폰을 루팅
            일단, 대부분의 취약점 점검이 루팅된 환경에서 진행되므로 안드로이드폰을 루팅해야한다. 

            - 루팅 방법에 대해서는 가지고 있는 핸드폰의 안드로이드 버전 및 비트(32/64bit)를 확인 후에 진행하도록 한다. 
            - 검색하면 루팅툴들이 많이 존재하므로 각 핸드폰에 맞는 툴을 이용하는 것을 추천
            - 나는 KingRoot라는 앱을 이용해서 루팅을 진행했는데 여전히 많이 사용하고 있는 툴인것 같다. 
        • 루팅 확인 :  플레이 스토어에 검색하면 여러 툴이 나오므로 다운로드 후 사용 

  1. 단말기 제조사 드라이브 설치
            단말기를 컴퓨터에 제대로 연결하기 위해 각 제조사의 통합 드라이버를 설치한다.
            ex) LG USB 통합 드라이버, SAMSUNG 통합 드라이버 등...

  3. Android SDK 설치
            이클립스, 안드로이드 스튜디오 등 여러 SDK 툴이 존재하지만 안드로이드 스튜디오 설치시 추후에 필요한 
            개별 실행파일, adb 등이 같이 설치되므로 안드로이드 스튜디오를 추천
            
            - 자세한 설치 과정은 설명하지 않는다.

  1. adb 환경변수 설정
            단말기를 PC에 연결하기 위해서 SDK의 adb라는 프로그램이 사용된다.

            1) 안드로이드 SDK 설치  경로에 platform-tools폴더 내 adb.exe파일이 있는 것을 확인 후 해당 경로 복사
                ex) C:\Users\Users\AppData\Local\Android\Sdk\platform-tools
            2) 위의 경로를 환경변수의 Path에 저장
            3) cmd 창 열고 "adb" 명령어 실행 시 정상 실행 확인

  5.  단말기 개발자 옵션 및 디버깅모드 켜기
            해당 설정을 하지 않으면 adb shell로 PC에 연결이 불가능하다.

            - 환경설정 > 개발자 옵션 켜기 > USB 디버깅 체크
                ** 개발자 옵션이 없는 경우, 디바이스 정보 > 소프트웨어 정보 > 빌드 번호를 7번 터치하면 생성됨

            



            
       6. 단말기와 PC 연결 및 확인
           이제 USB 케이블을 이용하여 단말기와 PC를 연결한다.
           
            - USB 케이블이 정상적으로 연결되면 "USB 디버깅을 허용할까요?" 라는 경고창이 뜨는데 [확인]을 클릭한다.
            - 이제 cmd창을 켜서 adb 명령어를 실행한다.
            


            ** adb devices :  연결된 device 목록 확인
            ** adb shell : 연결된 디바이스의 리모트 쉘 실행
            ** adb 명령어에 대해서는 추후 포스팅할 예정임.



+ Recent posts