decompiling DEX เป็นซอร์สโค้ด Java


706

จะแยกไฟล์ Android DEX (VM bytecode) หนึ่งไฟล์ลงในซอร์สโค้ด Java ที่สอดคล้องได้อย่างไร


ได้ดูที่นี่ คุณจะได้รับโอกาสในการขายที่เป็นไปได้จากที่นั่นเพื่อดำเนินการต่อ
เควินบอยด์

ข้อมูลที่อัปเดตมีอยู่ในบล็อกของศูนย์กลางตัวเขียน: coders-hub.com/2013/04/how-to-convert-apk-file-into-source.html
Md Mohsin

หากคุณมีเงินให้ซื้อjebหรือใช้jadxดูที่นี่ทำไม
polym

มี cross plateform (java) และเครื่องมือโอเพนซอร์สใหม่ที่ช่วยให้คุณทำเช่นนั้นเพียงชำระเงิน bytecodeviewer: stackoverflow.com/a/36557898/795245
Gomino

คำตอบ:


881

มันเป็นเรื่องง่าย

รับเครื่องมือเหล่านี้:

1) dex2jarเพื่อแปลไฟล์ dex เป็นไฟล์ jar

2) jd-guiเพื่อดูไฟล์ java ใน jar

ซอร์สโค้ดค่อนข้างอ่านได้เนื่องจาก dex2jar ทำการเพิ่มประสิทธิภาพบางอย่าง

ขั้นตอน:

และนี่คือขั้นตอนในการแปลความหมาย:

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

แปลง classes.dex ใน test_apk-debug.apk เป็น test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

หมายเหตุ 1:ในเครื่อง Windows .shสคริปต์ทั้งหมดจะถูกแทนที่ด้วย.batสคริปต์

หมายเหตุ 2:บน Linux / Mac อย่าลืมเกี่ยวกับหรือsh bashคำสั่งแบบเต็มควรเป็น:

sh d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk 

หมายเหตุ 3:นอกจากนี้อย่าลืมเพิ่มสิทธิ์ดำเนินการไปยังdex2jar-X.Xไดเรกทอรีเช่นsudo chmod -R +x dex2jar-2.0

เอกสาร dex2jar

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

เปิด jar ใน JD-GUI

แหล่งข้อมูลที่ถอดรหัสแล้ว


57
+1 ฉันลองทั้ง Baksmali และ Dex2jar Dex2Jar + JD-Gui ชนะการให้ซอร์สโค้ดที่สามารถอ่านได้อย่างสมบูรณ์แบบสำหรับไฟล์. doc ส่วนใหญ่
Jonathan Dumaine

สวัสดีคุณช่วยแบ่งปันวิธีการที่คุณจะไปไหม ฉันจะขอบคุณมากสำหรับคุณ
Arslan Anwar

2
ประโยคข้างต้นดังกริ่งดัง - ดูเหมือนว่าจะเป็นเครื่องหมายคำพูดกึ่งจากที่นี่: geeknizer.com/decompile-reverse-engineer-android-apk (หรือวิธีอื่น ๆ ?) บทความที่เชื่อมโยงอธิบายสั้น ๆ เกี่ยวกับเครื่องมือดังกล่าวข้างต้นเช่นเดียวกับ Smali และ APKTool
AgentKnopf

2
@JonathanDumaine ที่ขึ้นอยู่กับ หาก JARs นั้นสับสนและคุณต้องการทำการแก้ไขเล็กน้อย Backsmali เป็นวิธีเดียวที่จะไป โบนัส! ด้วย APKTool คุณจะได้รับ XML รูปภาพและแหล่งข้อมูลอื่น ๆ ทั้งหมด ดูคำตอบของฉัน
Alba Mendez

3
@JonathanDumaine ฉันเห็นด้วยกับ jmendeth, apktool เป็นวิธีที่จะไปหากคุณต้องการที่จะถอดรหัส apk ของคุณ, ดัดแปลงมันแล้วคอมไพล์ใหม่ ในขณะที่ใช้ dex2jar และ jd-gui ซอร์สนั้นสามารถอ่านได้จริงๆ แต่คุณไม่สามารถคอมไพล์ whitout ข้อผิดพลาดบางอย่างได้!
darkheir

138

เพื่อชี้แจงค่อนข้างมีสองเส้นทางหลักที่คุณอาจใช้ที่นี่ขึ้นอยู่กับสิ่งที่คุณต้องการที่จะบรรลุ:

แยกส่วน Dalvik bytecode (dex) ลงในซอร์ส Java ที่อ่านได้ คุณสามารถทำได้อย่างง่ายดายด้วยdex2jarและjd-guiตามที่กล่าวถึง fred แหล่งผลลัพธ์มีประโยชน์ในการอ่านและทำความเข้าใจการทำงานของแอพ แต่มีแนวโน้มว่าจะไม่สามารถใช้งานโค้ดได้ 100% กล่าวอีกนัยหนึ่งคุณสามารถอ่านแหล่งที่มา แต่คุณไม่สามารถแก้ไขและบรรจุใหม่ได้ โปรดทราบว่าหากแหล่งที่มานั้นมีปัญหากับ proguard รหัสแหล่งผลลัพธ์จะยากต่อการทำให้ยุ่งเหยิง

ทางเลือกที่สำคัญอื่น ๆ คือการแยก bytecode เป็นsmaliภาษาแอสเซมบลีที่ออกแบบมาเพื่อจุดประสงค์นี้อย่างแม่นยำ ฉันได้พบว่าวิธีที่ง่ายที่สุดในการทำเช่นนี้คือมีapktool เมื่อคุณติดตั้ง apktool แล้วคุณสามารถชี้ไปที่ไฟล์ apk และคุณจะได้รับไฟล์ smali สำหรับแต่ละคลาสที่อยู่ในแอปพลิเคชัน คุณสามารถอ่านและแก้ไข smali หรือแทนที่คลาสทั้งหมดด้วยการสร้าง smali จากแหล่ง Java ใหม่ (ในการทำเช่นนี้คุณสามารถรวบรวม. java source ของคุณเป็นไฟล์. class ด้วย javac จากนั้นแปลงไฟล์. class ของคุณเป็นไฟล์. doc ด้วย Android คอมไพเลอร์ dx แล้วใช้ baksmali (smali disassembler) เพื่อแปลง. dex เป็นไฟล์. smali ตามที่อธิบายในคำถามนี้. อาจมีทางลัดที่นี่) เมื่อเสร็จแล้วคุณสามารถจัดเก็บ apk สำรองด้วย apktool อีกครั้งได้อย่างง่ายดาย โปรดทราบว่า apktool ไม่ได้ลงนาม apk ที่เกิดขึ้นเพื่อให้คุณจะต้องดูแลเช่นเดียวกับการประยุกต์ใช้ Android อื่น ๆ

หากคุณไปเส้นทาง smali คุณอาจต้องการลองAPK Studioซึ่งเป็น IDE ที่ดำเนินการตามขั้นตอนข้างต้นโดยอัตโนมัติเพื่อช่วยคุณในการแยกข้อมูลและคอมไพล์ apk ใหม่และติดตั้งบนอุปกรณ์

กล่าวโดยย่อตัวเลือกของคุณนั้นค่อนข้างง่ายมากในการแยกออกเป็น Java ซึ่งสามารถอ่านได้ แต่กลับไม่ได้หรือน่าจะถอดประกอบไปด้วย Smali ซึ่งยากต่อการอ่าน แต่มีความยืดหยุ่นมากกว่าในการเปลี่ยนแปลง วิธีการที่คุณเลือกจะขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ

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


61

ฉันอยากจะแนะนำให้ไปที่นี่: https://github.com/JesusFreke/smali

มันให้ BAKSMALI ซึ่งเป็นเครื่องมือวิศวกรรมย้อนกลับที่ยอดเยี่ยมที่สุดสำหรับไฟล์ DEX มันทำโดย JesusFreke คนที่สร้าง ROM ที่มีชื่อเสียงสำหรับ Android


3
smali เป็นภาษาที่ใช้ภาษาแอสเซมบลีตาม dalvik IL ไม่สามารถแปลเป็น Java ได้โดยตรง
reflog

@endryha ไม่มีเครื่องมือที่สามารถทำสิ่งนั้นได้ ดูคำถามนี้สำหรับข้อมูลเพิ่มเติม
Alba Mendez

1
รหัส, รหัส, ... ทำไมต้องเป็นรหัสเท่านั้น? ถ้าคุณใช้ APKTool คุณจะได้ทุกอย่างกลับมา! ./apktool d myprogram.apkและมันก็เป็นธรรมดาที่ ดูคำตอบของฉัน
Alba Mendez

30

รุ่นที่สมบูรณ์มากขึ้นของเฟร็ด 's คำตอบ :

คู่มือวิธี

ก่อนอื่นคุณต้องมีเครื่องมือเพื่อแยกคลาส (คอมไพล์) ทั้งหมดบน DEX ไปยัง JAR
มีหนึ่งชื่อdex2jarซึ่งทำโดยนักเรียนจีน

จากนั้นคุณสามารถใช้jd-guiเพื่อถอดรหัสคลาสบน JAR ไปยังซอร์สโค้ด
แหล่งผลลัพธ์ควรอ่านได้ค่อนข้างดีเนื่องจาก dex2jar ใช้การปรับให้เหมาะสมที่สุด

วิธีอัตโนมัติ

คุณสามารถใช้APKTool มันจะโดยอัตโนมัติดึงทุกชั้นเรียน ( .dex) ทรัพยากร ( .asrc) แล้วมันจะแปลงXML ไบนารีเพื่อXML มนุษย์สามารถอ่านได้และก็ยังจะ dissassembleเรียนสำหรับคุณ
การถอดประกอบจะมีประสิทธิภาพมากกว่าการถอดประกอบโดยเฉพาะกับ
JAR ที่สับสนกับ Pro Guard!

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

สำคัญ: APKTool dissassembles มันไม่ได้แยก
รหัสที่สร้างขึ้นจะไม่เป็นแหล่ง Java
แต่คุณควรจะสามารถอ่านและแก้ไขได้หากคุณคุ้นเคยกับจัสมิน
หากคุณต้องการแหล่ง Java โปรดไปกว่าวิธีคู่มือการใช้งาน


25

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


ฉันคิดว่า jadx ไม่มีตัวเลือกการคอมไพล์ แต่โค้ดสามารถอ่านได้
Buddy

@EnesBattal คุณหมายถึงjavac "$(find . -name '*.java')"อย่างไร
polym

วิธีการเกี่ยวกับการสร้าง apk หรือไม่ การวางคลาสใน apk, zipalign, การลงชื่อ ฯลฯ
บัดดี้

@EnesBattal คุณสามารถช่วยให้ติดตั้งได้ - ไม่เช่นนั้นคุณสามารถใช้ apktool สำหรับสิ่งนั้น .. หรือ zipalign / sign ด้วยเครื่องมือ android
polym

1
@lejonl โทษประหารสำหรับคุณคุณเป็นสัตว์ประหลาด!
polym

17

ฉันได้ใช้

  1. dex2jar + jd-gui
  2. javadecompilers.com
  3. enjarify
  4. Apktool

แต่ไม่มีใครเต้นเครื่องมือของ Google

1) Android Studio 2.x: build> วิเคราะห์ apk ป้อนคำอธิบายรูปภาพที่นี่

2) Android Studio 3.0: โปรไฟล์หรือ Debug APK ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


1
บวกหนึ่งสำหรับ Enjarify จากประสบการณ์ส่วนตัวของฉันมันได้พิสูจน์แล้วว่าให้ผลลัพธ์ที่ดีกว่าเมื่อเทียบกับ d2j
qre0ct

15

เนื่องจากไม่มีใครพูดถึงเรื่องนี้มีอีกหนึ่งเครื่องมือ: หน้าแรก DED

ติดตั้งวิธีการและคำอธิบายบางส่วน: การติดตั้ง

มันถูกใช้ในการศึกษาที่น่าสนใจมากเกี่ยวกับความปลอดภัยของแอพพลิเคชั่นตลาดชั้นนำ (ไม่เกี่ยวข้องกันจริงๆถ้าคุณอยากรู้): การสำรวจความปลอดภัยของแอปพลิเคชัน Android


ดูเหมือนว่ามีแนวโน้ม มันแปลรหัส Java เป็นรูปแบบ APK โดยตรงหรือไม่ สิ่งที่เกี่ยวกับรหัส Java obfuscated?
sandalone

14

เนื่องจากDheeraj Bhaskarคำตอบนั้นค่อนข้างเก่าเมื่อหลายปีก่อน

นี่คือคำตอบล่าสุดของฉัน (2019 ปี):

ลอจิกหลัก

จากdexถึงjava sourcecodeปัจจุบันมีวิธีแก้ปัญหาสองแบบ:

  • One Step: โดยตรงแปลงdexไปjava sourcecode
  • Two Step: แปลงแรกdexเป็นjarสองแปลงjarเป็นjava sourcecode

การแก้ปัญหาขั้นตอนเดียว: dexตรงไปที่java sourcecode

เครื่องมือ

กระบวนการ

  1. ดาวน์โหลดjadx-0.9.0.zip , unzip ในbinโฟลเดอร์สามารถดูบรรทัดคำสั่งjadxหรือเวอร์ชัน GUI jadx-guiดับเบิลคลิกเพื่อเรียกใช้เวอร์ชัน GUI:jadx-gui

  1. เปิดdexไฟล์

จากนั้นสามารถแสดงซอร์สโค้ด Java:

  1. File -> save as gradle project

จากนั้นได้รับรหัสที่มา java:


วิธีการแก้ปัญหาสองขั้นตอน

ขั้นที่ 1: dexถึงjar

เครื่องมือ

กระบวนการ

ดาวน์โหลดdex2jar zip , unzip ได้d2j-dex2jar.shแล้ว:

  • apkไปที่jar:sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
  • dexไปที่jar:sh d2j-dex2jar.sh -f ~/path/to/dex_to_decompile.dex

ตัวอย่าง:

  v3.4.8 /Users/crifan/dev/dev_tool/android/reverse_engineering/dex-tools/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.huili.readingclub8825612.dex
dex2jar com.huili.readingclub8825612.dex -> ./com.huili.readingclub8825612-dex2jar.jar
  v3.4.8 ll
-rw-------  1 crifan  staff   9.5M  3 21 10:00 com.huili.readingclub8825612-dex2jar.jar
-rw-------  1 crifan  staff   8.4M  3 19 14:04 com.huili.readingclub8825612.dex

ขั้นตอนที่ 2: jarถึงjava sourcecode

เครื่องมือ

  • jd-gui : ได้รับความนิยมมากที่สุด แต่manyโค้ดจะถอดรหัสข้อผิดพลาด
  • CRF : minorรหัสยอดนิยมจะถอดรหัสข้อผิดพลาด
  • Procyon : ยอดนิยมnoข้อผิดพลาดในการถอดรหัสรหัส
  • คนอื่น ๆ

กระบวนการ

นี่สาธิตการProcyonแปลง jar เป็นซอร์สโค้ดจาวา:

ดาวน์โหลดprocyon-decompiler-0.5.34.jar

จากนั้นใช้ไวยากรณ์:

java -jar /path/to/procyon-decompiler-0.5.34.jar -jar your_to_decompile.jar -o outputFolderName

ตัวอย่าง:

java -jar /Users/crifan/dev/dev_tool/android/reverse_engineering/Procyon/procyon-decompiler-0.5.34.jar -jar com.huili.readingclub8825612-dex2jar.jar -o com.huili.readingclub8825612

ใช้โปรแกรมแก้ไขVSCodeเพื่อเปิดซอร์สโค้ดที่ส่งออกมีลักษณะดังนี้:

ข้อสรุป

ความถูกต้องแปลง: Jadx> Procyon> CRF>JD-GUI

แนะนำให้ใช้: (โซลูชันขั้นตอนเดียว) Jadx


สำหรับคำอธิบายโดยละเอียดเพิ่มเติมโปรดอ่านebook ภาษาจีนออนไลน์ของฉัน: 安卓应用的安全和破解


แปลก แต่ถ้าผมพยายามที่จะดำเนินขั้นตอนที่ 1 (Dex เพื่อแยกขวดบน Windows) ผ่านคำสั่งนี้dex2jar-2.0>d2j-dex2jar.bat -f D:\android\some_dex_file.dexเป็นเพียงข้อยกเว้นได้:java.io.IOException: the src file not a .dex or zip file
Сергей

@ Сергейคุณลองd2j-dex2jar.bat "D:\android\some_dex_file.dex"ได้ไหม: ตกลงหรือไม่?
crifan

ใช่ฉันพยายาม>d2j-dex2jar.bat file.dexแต่ก็ไม่เป็นไร อาจเป็นเพราะ.dexไฟล์ของฉันถูกคัดลอกมาจากdalvik-cacheไหน?
Сергей

1
@ Сергейใช่เหตุผลที่เป็นไปได้มากที่สุดคือการพูดของคุณdex is copied from dalvik-cacheควรจะเป็นdex is decompiled from apk
crifan

@crifan ขอบคุณสำหรับคำตอบนี้ JADX นั้นน่าประทับใจ ฉันจะกลับไปทำงาน Emmanuel @ JD-Gui
Emmanuel Dupuy

13

เมื่อคุณดาวน์โหลดไฟล์ APK คุณต้องทำตามขั้นตอนต่อไปนี้เพื่อรับรหัส java / เอกสารที่แก้ไขได้

  1. แปลงไฟล์ apk เป็น zip (ในขณะที่เริ่มการดาวน์โหลดอย่าไปกับตัวเลือก "บันทึก" เพียงไปที่ "บันทึกเป็น" และพูดถึงส่วนขยายของคุณเป็น. zip) ด้วยการทำเช่นนี้คุณอาจหลีกเลี่ยง APKTOOL ...
  2. แตกไฟล์ zip คุณสามารถหาไฟล์ชื่อไฟล์ได้ที่นี่ ดังนั้นตอนนี้เราต้องแปลง dex -> .class
  3. ในการทำเช่นนั้นคุณต้อง "dex2jar" (คุณสามารถดาวน์โหลดได้จากhttp://code.google.com/p/dex2jar/หลังจากแตกไฟล์แล้วในคำสั่งที่พร้อมท์คำสั่งคุณต้องพูดถึงเช่น[D: \ dex2jar-0.09> dex2jar somefilename.dex] (โปรดทราบว่า somefilename.dex ของคุณต้องอยู่ในโฟลเดอร์เดียวกันกับที่คุณเก็บ dex2jar ไว้)
  4. ดาวน์โหลด jad จากhttp://www.viralpatel.net/blogs/download/jad/jad.zipและแตกไฟล์ เมื่อแตกไฟล์แล้วคุณจะเห็นไฟล์สองไฟล์เช่น "jad.exe" และ "Readme.txt" (บางครั้ง "jad.txt" อาจมาแทนที่ "jad.exe" ดังนั้นเพียงแค่เปลี่ยนชื่อนามสกุลเป็น as.exe เพื่อให้ทำงาน)
  5. สุดท้ายใน command prompt คุณต้องพูดถึงเช่น[D: \ jad> jad -sjava yourfilename.class]มันจะแยกไฟล์คลาสของคุณลงในเอกสาร java ที่แก้ไขได้

8

ด้วยDedexerคุณสามารถแยก.dexไฟล์ออกเป็น dalvik bytecode ( .ddx)

การถอดรหัสเกี่ยวกับ Java นั้นเป็นไปไม่ได้เท่าที่ฉันรู้
คุณสามารถอ่านเกี่ยว bytecode Dalvik ที่นี่


1
ได้รับการยอมรับเนื่องจากคุณเป็นคนหนึ่งที่บอกว่าเป็นไปไม่ได้ (ในปัจจุบัน) ซึ่งดูเหมือนจะเป็นจริง
จะ

@ ทุกอย่างเป็นไปได้ ขึ้นอยู่กับว่าคุณเห็นมันอย่างไร Decompiling เป็นไปได้ แต่อาจไม่ใช่วิธีที่คุณคิด
Alba Mendez

8

Android วิศวกรรมย้อนรอยความเป็นไปได้ ทำตามขั้นตอนเหล่านี้เพื่อรับไฟล์. java จากไฟล์ apk

ขั้นตอนที่ 1 . ใช้ dex2jar

  • สร้างไฟล์. jar จากไฟล์. apk
  • คำสั่ง: dex2jar sampleApp.apk

ขั้นตอนที่ 2 . Decompiling .jar โดยใช้ JD-GUI

  • มันถอดรหัสไฟล์. class เช่นเราจะได้รับ. java ที่สับสนกลับมาจาก apk

แต่ถ้าฉันคอมไพล์ซอร์สโค้ดที่ถูกคอมไพล์อีกครั้งมันจะไม่ทำงานคอมไพเลอร์แสดงข้อผิดพลาดมากมาย

มีวิธีแก้ปัญหาใด ๆ สำหรับ decompile ซอร์สโค้ดจาวาของ android จะทำงานใน eclipse หรือไม่

2
วิศวกรรมย้อนกลับไม่ได้หมายความว่าdecompiling อันที่จริงแล้ว ProGuard-obfuscated JARs จะไม่ทำการ decompile อย่างถูกต้อง
Alba Mendez

หากคุณกำลังจัดการกับรหัส Obfuscated มันจะดีกว่าที่จะแยกมันออกมา คุณจะไม่ได้รับแหล่ง Java แต่คุณมักจะสามารถที่จะดู / แก้ไขรหัส ดูคำตอบของฉัน
Alba Mendez

ฉันอยากจะแนะนำให้ทำทั้ง decompiling และ disassembling โค้ดที่แปลเสร็จแล้วนั้นง่ายต่อการเข้าใจ แต่การแก้ไขทั้งหมดจะต้องทำกับรุ่นที่แยกส่วน โดยเฉพาะอย่างยิ่งหากใช้ proguard ฉันพบว่า dex2jar รวมกับ jd-gui นั้นดีที่สุดสำหรับ decompiling
Mikko Rantalainen

6

Debian ล่าสุดมีแพ็คเกจ Python androguard:

Description-en: full Python tool to play with Android files
 Androguard is a full Python tool to play with Android files.
  * DEX, ODEX
  * APK
  * Android's binary xml
  * Android resources
  * Disassemble DEX/ODEX bytecodes
  * Decompiler for DEX/ODEX files

ติดตั้งแพ็คเกจที่เกี่ยวข้อง:

sudo apt-get install androguard python-networkx

แยกไฟล์ DEX:

$ androdd -i classes.dex -o ./dir-for-output

สารสกัดclasses.dexจาก Apk + Decompile:

$ androdd -i app.apk -o ./dir-for-output

ไฟล์ Apk ไม่มีอะไรเพิ่มเติมที่เก็บถาวร Java (JAR) คุณสามารถแยกไฟล์จากเก็บถาวรผ่าน:

$ unzip app.apk -d ./dir-for-output

5

มีการเปลี่ยนแปลงมากมายตั้งแต่คำตอบส่วนใหญ่ถูกโพสต์ วันนี้มีเครื่องมือง่าย ๆ มากมายที่มี GUI เช่น:

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

ที่ที่ดีที่สุดในการค้นหาพวกเขาอยู่ในฟอรัม XDA Developers


4

คุณอาจลอง JADX ( https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler ) นี่เป็นเครื่องมือที่สมบูรณ์แบบสำหรับการถอดรหัส DEX

และใช่มันยังมีออนไลน์อยู่บน (เว็บไซต์ของฉัน: 0)): http://www.javadecompilers.com/apk/


พูดว่าสามารถใช้เป็นรหัสแทนได้หรือไม่ ความหมายแม้แต่ใน Android เอง? และไม่ใช่เว็บไซต์ที่นี่: github.com/skylot/jadx ?
นักพัฒนา android

2

ซึ่งสามารถทำได้ในห้าขั้นตอนดังต่อไปนี้:

อัญมณีนี้ทำสิ่งเหล่านี้ให้คุณโดยอัตโนมัติแม้กระทั่งการติดตั้งเครื่องมือที่จำเป็น

  1. แปลงไฟล์ apk เป็น zip
  2. แตกไฟล์
  3. แยกคลาส.dexจากมัน
  4. ใช้ dex เพื่อ jar เพื่อแปลง classes.dex เป็นไฟล์ jar
  5. ใช้ jadx gui เพื่อเปิดไฟล์ jar เป็นซอร์สโค้ดจาวา

2

วิธีที่ง่ายที่สุดในการแยกแอป Android คือดาวน์โหลดแอปชื่อShowJavaจาก playstore เพียงเลือกแอปพลิเคชั่นที่จำเป็นต้องแยกส่วนจากรายการแอพพลิเคชั่น มีตัวถอดรหัสที่แตกต่างกันสามตัวที่คุณสามารถใช้เพื่อถอดรหัสแอปคือ -

CFR 0.110, JaDX 0.6.1 หรือ FernFlower (ตัวแยกวิเคราะห์)


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