สามารถถอดรหัสไฟล์. apk ของ Android ได้หรือไม่?


86

ผู้ใช้สามารถแปลงไฟล์ apk ของแอปพลิเคชันของฉันกลับไปเป็นรหัสจริงได้หรือไม่? ถ้าทำ - มีวิธีใดบ้างที่จะป้องกันสิ่งนี้?


1
มีหลายวิธีการ decompiling เอพีเค ฉันเพิ่ง APKTool บ่อยขึ้นเป็นสิ่งที่ดีที่สุดและทรงพลังที่สุด มันง่ายมากที่จะแก้ไขไฟล์ apkด้วย
Taranfx

ฉันได้เขียนบล็อกโพสต์ที่นี่: codexplo.wordpress.com/2012/03/15/...อีกครั้ง แต่มันจะเป็นเรื่องยากสำหรับรหัส obfuscated ...
rokonoid

1
yeblon.com/how-to-decompile-android-apk-app-files - สิ่งนี้อาจเบาบาง
Badr Hari

คำตอบ:


80

ขั้นแรกไฟล์ apkเป็นเพียงไฟล์ jar ที่แก้ไขแล้ว ดังนั้นคำถามที่แท้จริงคือพวกเขาสามารถถอดรหัสไฟล์ dex ภายในได้หรือไม่ คำตอบคือการเรียงลำดับ มีอยู่แล้ว disassemblers เช่นdedexerและsmali คุณสามารถคาดหวังว่าสิ่งเหล่านี้จะดีขึ้นเท่านั้นและในทางทฤษฎีแล้วมันควรจะเป็นไปได้ที่จะแยกไฟล์ไปยังแหล่ง Java จริง (อย่างน้อยบางครั้ง) ดูคำถามก่อนหน้านี้decompiling DEX เข้า Java sourcecode

สิ่งที่คุณควรจำไว้คือความสับสนไม่เคยได้ผล เลือกใบอนุญาตที่ดีและพยายามบังคับใช้กฎหมายให้ดีที่สุด อย่าเสียเวลากับมาตรการทางเทคนิคที่ไม่น่าเชื่อถือ


45
อย่าพูดไม่เคย การปิดบังจะไม่หยุดขโมยที่มุ่งมั่น แต่จะชะลอหรือขัดขวางคนอื่น ๆ อีกมากมาย การประมวลผลด้วย Proguard เป็นวิธีที่ง่ายและเชื่อถือได้ในการทำให้โค้ดของคุณสับสนและเป็นโบนัสมันจะเพิ่มประสิทธิภาพด้วย และรวมอยู่ใน Android SDK ดังนั้นจึงได้รับการรับรองโดย Google
Barry Fruitman

3
การปิดบังได้ผลแน่นอน แต่คุณต้องกำหนดให้ชัดเจนมากขึ้นว่าเป้าหมายของคุณคืออะไร เห็นได้ชัดว่าวิธีเดียวที่คุณสามารถรักษาซอร์สโค้ดของคุณให้ปลอดภัยอย่างแท้จริงคืออย่าให้ใครเข้าถึงเซิร์ฟเวอร์หรือไคลเอนต์ โปรดทราบว่า Proguard ทำงานได้ไม่ดีกับคลาสที่มีการอ้างอิงในไฟล์ XML คุณต้องใช้การทำให้สับสนด้วยตนเองเพื่อหลีกเลี่ยงสิ่งนั้น
MattC

35

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

ApkTool เพื่อดูทรัพยากรภายในไฟล์ APK

  • แยก AndroidManifest.xml และทุกอย่างในโฟลเดอร์ res (ไฟล์ xml เลย์เอาต์รูปภาพ html ที่ใช้บน webview เป็นต้น)
  • คำสั่ง: apktool.bat d sampleApp.apk
  • บันทึก:คุณสามารถทำได้โดยใช้ยูทิลิตี้ zip เช่น 7-zip แต่มันยังแตกไฟล์. smali ของไฟล์. class ทั้งหมด

ใช้ dex2jar

  • สร้างไฟล์. jar จากไฟล์. apk เราต้องใช้ JD-GUI เพื่อดูซอร์สโค้ดจาก. jar นี้
  • คำสั่ง: dex2jar sampleApp.apk

แยกไฟล์. jar โดยใช้ JD-GUI

  • ถอดรหัสไฟล์. class (ทำให้สับสน - ในกรณีของแอป Android แต่ได้รับรหัสต้นฉบับที่อ่านได้ในกรณีของไฟล์. jar อื่น ๆ ) กล่าวคือเราได้รับ. java กลับมาจากแอปพลิเคชัน

apktool ไม่คายไฟล์ต้นทาง java! เฉพาะ smali
IgorGanapolsky

1
ดังที่ฉันได้กล่าวไปแล้วในคำตอบ apktool สร้าง. jar จาก. apk และเราต้องใช้ JD-GUI เช่นเครื่องมือในการแยกไฟล์. jar เพื่อให้ได้ไฟล์ต้นฉบับ. java
gtiwari333

1
คุณประหลาดช่วยชีวิตฉัน! ช่างเป็นโพสต์ที่ยอดเยี่ยมมาก! รหัสสองวันที่ผ่านมาหายไปเพราะ SSD ล้มเหลว (น่าเศร้าที่ฉันไม่ได้ผูกมัดกับคอมไพล์) อย่างไรก็ตามฉันมี apk และตอนนี้ฉันมีแหล่งที่มาแล้วนึกถึงคุณแตกต่างกันเล็กน้อย แต่ที่มา!
farcrats

3

ฉันอาจเพิ่มว่าทุกวันนี้สามารถถอดรหัสแอปพลิเคชัน Android ออนไลน์ได้โดยไม่ต้องใช้ซอฟต์แวร์

มี 2 ​​ตัวเลือกสำหรับคุณ:


decompileandroid.com ออฟไลน์ (เมื่อคุณอัปโหลด apk คุณจะมีปัญหาในการดาวน์โหลดอีกครั้ง) และjavadecompilers.com/apkทำให้ apk ของฉันอยู่ในคิวเป็นเวลานาน ฉันออฟไลน์แล้วออนไลน์มันยังอยู่ในคิว ฉันล้างประวัติการเข้าชมทั้งหมดและตอนนี้ apk ที่ฉันอัปโหลดเป็นครั้งที่สองอยู่ในคิว
iOSAndroidWindowsMobileAppsDev

1

ดาวน์โหลดเครื่องมือ jadx นี้ https://sourceforge.net/projects/jadx/files/

แตกไฟล์และกว่าในโฟลเดอร์ lib ให้เรียกใช้ไฟล์ jadx-gui-0.6.1.jar ขณะนี้เรียกดูไฟล์ apk ของคุณ มันจบแล้ว. apk โดยอัตโนมัติจะถอดรหัสและบันทึกโดยกดปุ่มบันทึก หวังว่าจะได้ผลสำหรับคุณ ขอบคุณ


0

บางครั้งคุณได้รับรหัสเสียเมื่อใช้dex2jar/ apktoolโดยเฉพาะอย่างยิ่งในลูป เพื่อหลีกเลี่ยงสิ่งนี้ให้ใช้jadxซึ่งจะถอดรหัสdalvik bytecode เป็นซอร์สโค้ด java โดยไม่ต้องสร้าง.jar/ .classfile ขึ้นมาก่อนdex2jar(apktool ใช้ dex2jar ฉันคิดว่า) นอกจากนี้ยังเป็นโอเพ่นซอร์สและอยู่ในระหว่างการพัฒนา มันยังมี GUI สำหรับ GUI-fanatics ลองมัน!


0

ผู้ใช้สามารถแปลงไฟล์ apk ของแอปพลิเคชันของฉันกลับไปเป็นรหัสจริงได้หรือไม่?

ใช่.

ผู้คนสามารถใช้เครื่องมือต่างๆเพื่อ:

  • การวิเคราะห์: apk ของคุณ
  • ถอดรหัส / แฮ็ค apk ของคุณ
    • ใช้FDex2เพื่อถ่ายโอนdexไฟล์
      • จากนั้นใช้dex2jarเพื่อแปลงเป็นjar
        • จากนั้นใช้jadxเพื่อแปลงเป็นjavaซอร์สโค้ด

ถ้าทำ - มีวิธีใดบ้างที่จะป้องกันสิ่งนี้?

ใช่. หลายวิธี (สามารถรวมกัน) เพื่อป้องกัน (ในระดับหนึ่ง) นี้:

  • ระดับต่ำ: รหัสทำให้สับสน
    • ใช้ Android ProGuard
  • ระดับสูง: ใช้สถานการณ์แข็งของ Android

รายละเอียดเพิ่มเติมสามารถดูบทแนะนำภาษาจีนของฉัน:安卓应用的安全和破解


0

ใช่มีซอฟต์แวร์มากมายที่สามารถถอดรหัสไฟล์. apk ได้

เมื่อเร็ว ๆ นี้ฉันได้รวบรวมรายชื่อสุดยอดของตัวถอดรหัส APK ที่ดีที่สุด 47 รายการบนเว็บไซต์ของฉัน ฉันจัดมันออกเป็น 4 ส่วนที่แตกต่างกัน

  1. โอเพนซอร์ส APK Decompilers
  2. ตัวถอดรหัส APK ออนไลน์
  3. APK Decompiler สำหรับ Windows, Mac หรือ Linux
  4. แอป APK Decompiler

ฉันหวังว่าคอลเล็กชันนี้จะเป็นประโยชน์กับคุณ

ลิงค์: https://www.edopedia.com/blog/best-apk-decompilers/

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