목록Android (6)
JHLBLUE
버튼을 클릭하고 점수를 획득하여 2만점 이상을 획득해야 승리하는 ButtonClicker 앱이며, 실행화면은 아래와 같다. apktool 도구로 디컴파일한 뒤 smali 코드들을 보면 MainActivity$1.smali 등과 같이 MainActivity와 관련된 smali 코드 파일이 여러개가 있는 것을 확인할 수 있다. 이 프로젝트의 경우에는 MainActivity 클래스 내부에서 Inner Class를 사용하고 있기 때문에 Inner Class 코드 부분은 $1, $2. $6$1 등과 같이 별도의 smali 파일로 분리하여 확인할 수 있다. MainActivity$1.smali 파일을 열어보면 .line 51에서 시작하는 것을 볼 수 있으며, MainActivity.java의 51번째 줄을 확인하면..
원본코드 smali 코드 패치로 토스트 메시지 출력하기 1. toast 메시지를 출력하는 smali 코드 확인하기 toast 메시지를 출력하는 smali 코드를 확인하기 위해 toast 메시지를 출력하는 java 코드를 작성한 뒤 디컴파일 과정을 거쳐 toast 메시지와 관련된 smali 코드를 알아낸다. Toast.makeText() 함수는 총 3개의 파라미터를 필요로 하고, 각각 Context, 표시할 텍스트, 표시할 길이 정보이며, 이 중 Toast 메시지 출력을 위해서는 기존 코드에 추가로 표시할 텍스트, 표시할 길이 정보를 저장할 레지스터가 추가로 필요하다. 2. 원본코드의 onCreate() smali 코드 확인하기 다음은 안드로이드 스튜디오에서 프로젝트를 생성한 뒤 아무런 java 코드도 추..
원본코드 smali 코드 패치로 세 번째 텍스트뷰 추가하기 1. smali 코드 분석하기 MainActrivity.smali 코드 중 line12, line13, line14는 뷰의 객체 생성과 관련된 코드로 추측 가능line12와 line14는 findViewById 함수를 호출하여 레지스터에 해당 객체를 저장하는 코드, line13은 TextView 생성자를 호출한 뒤 해당 객체를 레지스터에 저장하는 코드 line15는 addView 함수를 호출하여 line13에서 생성된 TextView를 LinearLayout에 추가하도록 addView 함수를 호출하는 코드 line17~18은 setText 함수를 호출하여 텍스트를 표시하도록 하는 코드 2. smali 코드 패치하기 새로 뷰 객체 하나를 생성하고 ..
안드로이드 smali 패치하기에서 smali로 디코딩한 뒤 볼 수 있는 MainActivitry.smali의 전체 코드 및 설명은 아래와 같다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394# 클래스의 이름 및 경로 정보.class public Ljhlblue/ddns/net/sampleapk/MainActivity; #해당 클래스가 상속받는 클래스 정보.super Landroid/support/v7/app/AppCompatActiv..
1. apktool 다운로드 및 환경설정 https://ibotpeaches.github.io/Apktool/install/ 의 설치방법을 따라한다. 해당 과정을 완료하면 터미널이나 cmd에서 apktool 명령을 사용할 수 있다. windows에서는 keytool과 jarsigner를 사용하기 위해 환경변수를 추가해줘야 한다. jre\bin은 keytool을 사용하기 위해, jdk\bin은 jarsigner를 사용하기 위해 각각 환경변수를 추가해준다. 2. apktool을 이용하여 디코딩, 코드 수정, 빌드, 사이닝 1) 디코딩 및 패치 실습 앱을 만들기 위해 코드를 작성하고, AndroidStudio의 메뉴 중 Build -> Generate Signed APK를 클릭하여 인증서로 서명이 된 앱을 생..
1. 새로운 프로젝트 생성 창에서 Package name 줄 밑의 Include C++ support 체크하기 2. 이후 과정은 동일, next 버튼 계속 클릭한 뒤 마지막 창에서 C++ Standard를 Toolchain Default로 선택 후 finish 클릭 3. Tools -> Android -> SDK Manager창을 연 뒤 SDK Tools 탭으로 이동, CMAKE와 NDK를 체크해 설치해준다.(ndk를 컴파일하고 실행할 도구를 설치해줘야 한다)4. 안드로이드 프로젝트의 MainActivity.java 파일을 열어서 ndk 라이브러리를 load하는 코드와 native 함수를 선언 및 실행하는 예제코드를 확인한다. 123456789101112131415161718//MainActivity.j..