บทนำ (Overview)
เราสามารถทราบว่ามี “Activity” อะไรบ้างที่อยู่ในโปรแกรม “.apk” ได้จากการ (Reverse engineering) ได้จากบทความ How to access “AndroidMenifest.xml” ในแต่ละ “Activity” จะประกอบด้วยไฟล์ .xml สำหรับสร้าง “user interface” และไฟล์ .java สำหรับเขียนโปรแกรม ซึ่งเราสามารถเข้าถึงหน้าจอ (Activity) ได้ทันทีแม้จะอยู่หลัง “Login” และสามารถเรียกใช้งานได้จากโปรแกรมอื่น ๆ
ขั้นตอน (Steps)
- เปิดไฟล์ “AndroidMenifest.xml” ได้จากบทความ How to access “AndroidMenifest.xml”
- ตรวจสอบในส่วนหน้า “Activity” ที่มีเงื่อนไขดังนี้
android:exported="true"
:หมายถึงให้โปรแกรมอื่นสามารถเรียกใช้งานได้android:exported="false"
:ไม่ให้โปรแกรมอื่นเรียกใช้ได้เว้นแต่มี UID เดียวกัน- โดยปกติจะมีค่า “Default” ดังนี้ จะตั้งค่าค่า “False”เมื่อ android:minSdkVersion และ android:targetSdkVersion เป็น “version 16” และ เป็น “False” ตั้งแต่ version 17 ขึ้นไป
- โดยปกติใน Source-code เราสามารถตรวจสอบ “version” ของ “minSdkVersion” ได้ที่ไฟล์ “build.gradle”
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '23.0.1' defaultConfig { applicationId "com.itselectlab.test" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { incremental true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' }
- จากนั้นเชื่อมต่อ “ADB shell” ได้จากบทความ How to connect ADB shell on mobile device
- จากตัวอย่างเราจะเชื่อม “ADB” ผ่าน “Emulator” สามารถศึกษาวิธีสร้าง “Emulator” ได้จาก How to start Android Emulator (AVD)
- ตรวจสอบ Device ที่เปิดขึ้นโดยใช้คำสั่งดังนี้
C:\Users\[user]\AppData\Local\Android\sdk\platform-tools>adb devices List of devices attached emulator-5554 device
- เมื่อตรวจสอบพบ “Device” แล้ว เราก็จะเชื่อมต่อ ADB shell โดยใช้คำสั่งดังนี้
C:\Users\[user]\AppData\Local\Android\sdk\platform-tools>adb shell root@generic_x86:/ #
- จากนั้นเราจะเรียก “Activity” ใดตามที่พบใน “AndroidMenifest.xml” โดยมีลักษณะ packageName/.activityName ดังนี้
C:\Users\wsunpachit\AppData\Local\Android\sdk\platform-tools>adb shell root@generic_x86:/ # am start -n com.itselectlab.test/.LoginActivity Starting: Intent { cmp=com.itselectlab.test/.LoginActivity } root@generic_x86:/ #
- จะพบว่าหน้าจอโปรแกรมมจะถูกเปิดขึ้นมา…