วิธีการดู AndroidManifest.xml จากไฟล์ APK


309

เป็นไปได้ไหมที่จะดูAndroidmanifest.xmlไฟล์?

ฉันเพิ่งเปลี่ยนนามสกุลของไฟล์apk zipนี้zipไฟล์ประกอบด้วยAndroidmanifest.xmlไฟล์ Androidmanifest.xmlแต่ผมไม่สามารถมองเห็นวิวเนื้อหาของ มันถูกเข้ารหัสอย่างสมบูรณ์

ฉันจะดูAndroidmanifest.xmlไฟล์ได้อย่างไร


ฉันมีไฟล์ APK หนึ่งไฟล์ ฉันต้องการดูไฟล์ Androidmanifest.xml เพราะฉันใช้กรอบเดียว ไฟล์ APK นั้นใช้กรอบงานเดียวกัน ดังนั้นฉันต้องดูวิธีกำหนดค่าไฟล์ Androidmanifest จากไฟล์ APK นั้น
bharath

@Jason Rogers: AFAIK คุณสามารถดูข้อมูลนั้นได้ ดูสิ่งนี้
Vikas Patidar

คำตอบ:


220

ใช่คุณสามารถดูXMLไฟล์ของAndroid APKไฟล์ มีเครื่องมือสำหรับสิ่งนี้:android-apktool

มันเป็นเครื่องมือสำหรับวิศวกรรมย้อนกลับของบุคคลที่สามปิดปพลิเคชัน Android ไบนารี

วิธีการทำสิ่งนี้บนระบบ Windows ของคุณ:

  1. ดาวน์โหลดไฟล์ apktool-install-windows- *
  2. ดาวน์โหลดไฟล์ apktool- *
  3. แกะทั้งสองลงในไดเรกทอรี Windows ของคุณ

ตอนนี้ให้คัดลอกAPKไฟล์ในไดเรกทอรีนั้นและเรียกใช้คำสั่งต่อไปนี้ในพรอมต์คำสั่งของคุณ:

apktool d HelloWorld.apk ./HelloWorld

จะเป็นการสร้างไดเรกทอรีHelloWorldในไดเรกทอรีปัจจุบันของคุณ ข้างในนั้นคุณสามารถค้นหาAndroidManifest.xmlไฟล์ในรูปแบบถอดรหัสและคุณยังสามารถค้นหาXMLไฟล์อื่น ๆใน"HelloWorld/res/layout"ไดเรกทอรี

นี่HelloWorld.apkคือไฟล์ Android APK ของคุณ

ดูภาพหน้าจอด้านล่างสำหรับข้อมูลเพิ่มเติม: ข้อความแสดงแทน


15
นี่เป็นสิ่งที่ดี แต่ฉันต้องการทราบวิธีการดู AndroidManifest.xml โดยไม่ต้องดาวน์โหลดทั้งหมดนี้ มันเข้ารหัสหรือบีบอัด?
JohnnyLambada

1
@JohnnyLambada : ใช่คุณสามารถเปิดและดูในเครื่องมือเก็บถาวรเช่น: WinRar / WinZip / 7Zipแต่มันไม่สมเหตุสมผลเพราะมันอยู่ในรูปแบบการเข้ารหัส
Vikas Patidar

9
apktool เลิกใช้แล้ว อ้างถึงหน้าแรกของโครงการของพวกเขาสำหรับรุ่นล่าสุด
Deqing

1
ฉันได้รับ: ข้อยกเว้นในเธรด "main" brut.androlib.AndrolibException: หลายแหล่งข้อมูล: ที่ brut.androlib.res.data.ResConfig.addResource (แหล่งที่ไม่รู้จัก)
WindRider

3
ตอนนี้คำสั่งเปลี่ยนไปสำหรับเวอร์ชั่นล่าสุดapktool d your_destination youraApk.apk
Pranoy Sarkar

109

Android Studio สามารถแสดงสิ่งนี้ได้แล้ว ไปที่Build> Analyze APK...และเลือก apk ของคุณ จากนั้นคุณสามารถดูเนื้อหาของไฟล์ AndroidManifset


3
คุณลักษณะนี้ได้รับการเพิ่มเมื่อเร็ว ๆ นี้และฉันอยากจะแนะนำสิ่งนี้หากคุณไม่กล้าใช้บรรทัดคำสั่งและคุณมีเครื่องมือแพลตฟอร์มในเส้นทางของคุณตั้งค่า
anthonymonori

8
สิ่งนี้ควรได้รับการยกให้เป็นคำตอบที่ดีที่สุดวิธีการอื่น ๆ ก็มีความซับซ้อนเกินความจำเป็น
Sébastien

3
มีเวอร์ชันในบรรทัดคำสั่งของบิวด์อินนี้เช่นกัน: stackoverflow.com/a/54874783/89818
caw

46

aapt d xmltree com.package.apk AndroidManifest.xml

จะถ่ายโอนข้อมูลAndroidManifest.xmlจาก APK ที่ระบุ มันไม่ได้อยู่ในรูปแบบ XML แต่คุณยังสามารถอ่านได้

aapt (เครื่องมือการบรรจุสินทรัพย์ของ Android) เป็นเครื่องมือในตัวที่มาพร้อมกับ Android SDK


45

ในชุดข้อความนี้Dianne Hackborn บอกเราว่าเราสามารถรับข้อมูลจาก AndroidManifest ได้โดยใช้ aapt

ฉันทำคำสั่ง unix ด่วนนี้เพื่อดึงข้อมูลรุ่น:

aapt dump badging my.apk | sed -n "s/.*versionName='\([^']*\).*/\1/p"

เป็นไปได้หรือไม่ที่จะทำแม้ในแอพ Android? นอกจากนี้เป็นไปได้ไหมที่จะรับไฟล์ Manifest ทั้งหมดไม่ใช่เฉพาะชื่อเวอร์ชั่น?
นักพัฒนา android

36

Google เพิ่งเปิดตัวเครื่องมือโอเพนซอร์สข้ามแพลตฟอร์มสำหรับตรวจสอบ APK (ในรูปแบบไบนารี Android อื่น ๆ อีกมากมาย):

ClassySharkเป็นเครื่องมือตรวจสอบไบนารีแบบสแตนด์อโลนสำหรับนักพัฒนา Android มันสามารถเรียกดูไฟล์ปฏิบัติการ Android ใด ๆ ได้อย่างน่าเชื่อถือและแสดงข้อมูลที่สำคัญเช่นอินเทอร์เฟซและสมาชิกคลาส, dex นับและการอ้างอิง ClassyShark รองรับหลายรูปแบบรวมถึงไลบรารี (.dex, .aar, .so), executables (.apk, .jar, .class) และ XML ไบนารี Android ทั้งหมด: AndroidManifest ทรัพยากรรูปแบบ ฯลฯ

ภาพหน้าจอ ClassyShark


3
นี่ง่ายกว่า Apktool 10,000 เท่า!
Guilherme Campos Hazan

18

คุณสามารถใช้apkanalyzerเวอร์ชันเครื่องมือวิเคราะห์ APK ที่มาพร้อมกับ Android SDK เพียงรันคำสั่งต่อไปนี้บน CLI:

/path/to/android-sdk/tools/bin/apkanalyzer manifest print /path/to/app.apk

คุณจะต้องแทนที่/path/to/android-sdkด้วยเส้นทางที่ถูกต้องไปยังรุ่นของ SDK Android และ/path/to/app.apkเส้นทางไปยังไฟล์ APK


8
นี่ควรเป็นคำตอบที่ยอมรับเนื่องจากไม่จำเป็นต้องติดตั้งอะไรจากแหล่งที่ไม่ได้รับการยืนยัน
c4k

โปรดทราบว่านี่ดูเหมือนจะไม่ทำงานบน Windows :( stackoverflow.com/a/54593118/997940
Yoav Feuerstein

ฉันได้รับข้อผิดพลาด: ข้อยกเว้นในเธรด "main" java.lang.IllegalStateException: ไม่ได้ตั้งค่าคุณสมบัติไดเรกทอรีเครื่องมือโปรดตรวจสอบว่าคุณกำลังเรียกใช้ apkanalyzer ฉันไม่ทราบวิธีแก้ปัญหา
jk2K

นี่เป็นเส้นทางที่คุณต้องการถ้าคุณใช้ macOS:~/Library/Android/sdk/tools/bin/apkanalyzer manifest print <apk>
Frederik

15

คุณสามารถใช้คำสั่งนี้: บันทึกเป็นไฟล์ AndroidManifest.txt

aapt dump xmltree gmail.apk AndroidManifest.xml > AndroidManifest.txt

2
dเป็นตัวย่อสำหรับdumpซึ่งทำให้คำตอบนี้เหมือนกับคำตอบนี้ซึ่งโพสต์เมื่อกว่าปีก่อน
Dan Dascalescu

4
ใช่ > AndroidManifest.txtแต่รหัสนี้บันทึกในไฟล์
Ahmad Aghazadeh

ฮ่า ๆ นั่นเป็นคำตอบเดียวกันการทิ้งไฟล์ไม่ได้สร้างความแตกต่าง
Leonardo Sapuy

8

AXMLParserและAPKParser.jarยังสามารถทำผลงานได้ที่คุณสามารถดูการเชื่อมโยง AXMLParser


1
เครื่องมือดังกล่าวยังไม่ได้รับการปรับปรุงในอีกหลายปี Google เพิ่งเปิดตัวเครื่องมือตรวจสอบไบนารี Androidในเดือน พ.ย. 2559
Dan Dascalescu

7

มีเครื่องมือออนไลน์ที่ให้คุณอัปโหลด APK มันจะทำการถอดรหัสมันและในที่สุดก็ให้คุณดาวน์โหลด zip ที่มีแหล่งที่มาทั้งหมด, ไฟล์ manifest XML และอื่น ๆ ที่ถูกคอมไพล์ทั้งหมดนี้โดยไม่ต้องติดตั้งโปรแกรมใด ๆ บนคอมพิวเตอร์ของคุณ: http: / /www.javadecompilers.com/apk

นอกจากนี้หากคุณต้องการเพียงแค่ตรวจสอบ params บางอย่างที่คุณสามารถทำได้โดย UI ของพวกเขา


ทำงานกับ APK ในเดือนสิงหาคมไม่ทำงานบน APK ในเดือนพฤศจิกายน
Dan Dascalescu

apktools ดูเหมือนจะไม่สร้างไดเรกทอรีสำหรับฉันด้วยผลลัพธ์และ aapt ไม่แสดงผลลัพธ์ในรูปแบบ XML เว็บไซต์นี้ใช้งานได้อย่างมีเสน่ห์
kregus

6

ในการถอดรหัสAndroidManifest.xmlไฟล์โดยใช้axmldec :

axmldec -o output.xml AndroidManifest.xml

หรือ

axmldec -o output.xml AndroidApp.apk

ทำงานได้และสามารถติดตั้งได้อย่างง่ายดายผ่าน Homebrew:brew tap ytsutano/toolbox brew install axmldec
gmoz22

5

Aapt2 ซึ่งรวมอยู่ในเครื่องมือสร้าง Android SDK สามารถทำได้ - ไม่ต้องใช้เครื่องมือของบุคคลที่สาม

$(ANDROID_SDK)/build-tools/28.0.3/aapt2 d --file AndroidManifest.xml app-foo-release.apk

เริ่มต้นด้วย build-tools v29 คุณต้องเพิ่มคำสั่งxmltree:

$(ANDROID_SDK)/build-tools/29.0.3/aapt2 d xmltree --file AndroidManifest.xml app-foo-release.apk

สิ่งนี้ไม่ได้ส่งออก XML ดั้งเดิม แต่เป็นระเบียบถ้าฉันแค่ต้องดูค่าที่อยู่ในนั้นโดยไม่ต้องแตก APK หรือเขียนลงไฟล์ชั่วคราว
Raziel

2

คุณยังสามารถใช้แอพของฉัน, App Detectiveเพื่อดูไฟล์ Manifest ของแอพที่คุณติดตั้งในอุปกรณ์ของคุณ


0

นี่เป็นด้ายเก่า แต่ฉันคิดว่าฉันจะพูดถึงว่าโทรศัพท์ของคุณมีรูทคุณสามารถดูได้โดยตรงบนโทรศัพท์ของคุณโดยใช้แอพ root explorer คุณไม่ต้องแยกมันออกเพื่อดู


-1

ไฟล์จะต้องมีการถอดรหัส (หรือ deodex ไม่แน่ใจว่าอันไหน) แต่นี่เป็นอีกวิธีในการทำ:

-Download free Tickle My Android tool on XDA: https://forum.xda-developers.com/showthread.php?t=1633333https://forum.xda-developers.com/showthread.php?t=1633333
-Unzip
-Copy APK into \_WorkArea1\_in\ folder
-Open "Tickle My Android.exe"
-Theming Menu
-Decompile Files->Any key to continue (ignore warning)
-Decompile Files->1->[Enter]->y[Enter]
-Wait for it to decompile in new window... Done when new window closes
-Decompiled/viewable files will be here: \_WorkArea3\_working\[App]\

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.