รับซอร์สโค้ดจากไฟล์. apk หรือไม่ [ปิด]


21

มีไฟล์. apk แล้วมีวิธีใดที่ฉันจะได้รับซอร์สโค้ดหรือไม่


7
ก่อนหน้านี้คุณได้ตรวจสอบว่าแพ็คเกจเป็นโอเพ่นซอร์สหรือไม่
ott--

. apk เป็นเพียงไฟล์. zip แต่ unfortunatedly ใดสร้าง app สำหรับ 'ปล่อย' อาจจะได้รับการคุ้มครองโดย ProGuard
Daniel López

@ MatthewRead The Op ถามว่าเขาสามารถรับรหัสจาก API ได้หรือไม่และฉันตอบว่าปรากฏการณ์นี้เรียกว่าอะไรและมีวิธีป้องกันอย่างน้อยที่สุดในการสร้างแอพที่คล้ายกัน เขาไม่ได้บอกวิธีป้องกันการรับรหัสดังนั้นใช่มันจะตอบคำถาม
มนุษย์เป็น

คำตอบ:


15

แม้ว่าจะใช้งาน ProGuard คุณก็ยังสามารถรับข้อมูลเชิงลึกที่น่าสนใจได้ นี่เป็นคำถามที่ StackOverflow กับคำอธิบายรายละเอียด: Android: การเดินทางรหัสที่มาจากแฟ้มเอพีเค วิดีโอ YouTube กับคู่มือรายละเอียด และรายการบล็อกเกี่ยวกับว่าวิธีการเรียกรหัสที่มาจากแฟ้มเอพีเค Android


11

หากคุณได้รับโชคดีของคุณและ.apkไฟล์ไม่ได้รับการคุ้มครองโดยProguardหรืออนาล็อกคุณสามารถใช้เครื่องมือเอพีเค มันเป็นเครื่องมือสำหรับวิศวกรรมย้อนกลับของบุคคลที่สามปิดปพลิเคชัน Android ไบนารี


Apktool สร้างเพียงรหัส Smali ไม่ใช่รหัส Java ซึ่งเป็นความแตกต่างใหญ่
Robert

2

จากหนึ่งในวิกิชุมชนโดย Parnkul Garg ใน SO :


ขั้นตอนสำหรับการถอดรหัสไฟล์. apk วิธีการทีละขั้นตอน:

ขั้นตอนที่ 1:

  1. สร้างโฟลเดอร์ใหม่และคัดลอกไฟล์. apk ที่คุณต้องการถอดรหัส

  2. ตอนนี้เปลี่ยนชื่อนามสกุลของไฟล์. apk นี้เป็น. zip (เช่นเปลี่ยนชื่อจาก filename.apk เป็น filename.zip) และบันทึก ตอนนี้คุณสามารถเข้าถึงไฟล์ classes.dex ฯลฯ ในขั้นตอนนี้คุณสามารถดู drawable แต่ไม่ใช่ไฟล์ xml และ java ดังนั้นดำเนินการต่อ

ขั้นตอนที่ 2:

  1. ตอนนี้แยกไฟล์. zip นี้ในโฟลเดอร์เดียวกัน (หรือโฟลเดอร์ใหม่)

  2. ดาวน์โหลด dex2jarและแตกไปยังโฟลเดอร์เดียวกัน (หรือโฟลเดอร์ใหม่)

  3. ย้ายไฟล์ classes.dex ไปยังโฟลเดอร์ dex2jar

  4. ตอนนี้ให้เปิดพร้อมท์คำสั่งและเปลี่ยนไดเรกทอรีเป็นโฟลเดอร์นั้น (หรือโฟลเดอร์ใหม่) จากนั้นเขียนd2j-dex2jar classes.dexและกด Enter ตอนนี้คุณมีไฟล์ classes.dex.dex2jar ในโฟลเดอร์เดียวกัน

  5. ดาวน์โหลด java decompiler , ดับเบิ้ลคลิกที่ jd-gui, คลิกที่ไฟล์เปิด, และเปิดไฟล์ classes.dex.dex2jar จากโฟลเดอร์นั้น: ตอนนี้คุณจะได้ไฟล์คลาส

  6. บันทึกไฟล์คลาสเหล่านี้ทั้งหมด (ใน jd-gui คลิกไฟล์ -> บันทึกแหล่งที่มาทั้งหมด) ด้วยชื่อ src ในขั้นตอนนี้คุณจะได้รับซอร์ส java แต่ไฟล์. xml ยังคงไม่สามารถอ่านได้ดังนั้นให้ดำเนินการต่อ

ขั้นตอนที่ 3:

ตอนนี้เปิดโฟลเดอร์ใหม่อีกอัน

  1. ใส่ในไฟล์. apk ที่คุณต้องการถอดรหัส

  2. ดาวน์โหลดรุ่นล่าสุดของapktool และ apktool ติดตั้งหน้าต่าง (ทั้งสามารถดาวน์โหลดได้จากลิงค์เดียวกัน) และวางไว้ในโฟลเดอร์เดียวกัน

  3. ดาวน์โหลดframework-res.apkและวางไว้ในโฟลเดอร์เดียวกัน (ไฟล์ apk บางไฟล์ไม่ต้องการไฟล์นี้ แต่ไม่เจ็บ)

  4. เปิดหน้าต่างคำสั่ง

  5. นำทางไปยังไดเรกทอรีรากของ APKtool และพิมพ์คำสั่งต่อไปนี้: apktool if framework-res.apk

  6. apktool d myApp.apk (ที่ myApp.apk หมายถึงชื่อไฟล์ที่คุณต้องการถอดรหัส)

ตอนนี้คุณจะได้รับโฟลเดอร์ไฟล์ในโฟลเดอร์นั้นและสามารถอ่านไฟล์ xml ของ apk ได้อย่างง่ายดาย

ขั้นตอนที่ 4:

ไม่ใช่ขั้นตอนใด ๆ เพียงแค่คัดลอกเนื้อหาของทั้งสองโฟลเดอร์ (ในกรณีนี้ทั้งสองโฟลเดอร์ใหม่) ไปยังโฟลเดอร์เดียว

และเพลิดเพลินไปกับรหัสที่มา ...

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