ในพื้นที่เก็บข้อมูลนี้ เราจะพบคำแนะนำทีละขั้นตอนเกี่ยวกับวิธี Reverse Engineer APK
Reverse Engineering สามารถช่วยเราได้ในหลายแง่มุม เช่น การระบุซอฟต์แวร์หรือโค้ดที่เป็นอันตราย การค้นพบ ข้อบกพร่องด้านความปลอดภัย การค้นหา คุณสมบัติที่ไม่คาดหวัง /การฝ่าฝืนกฎเกณฑ์ทางธุรกิจ... ที่กล่าวว่า เรามาเจาะลึกจักรวาล Android กันดีกว่า
เริ่มต้นด้วยพื้นฐาน เราสามารถแบ่ง Android Package (APK) ของเราออกเป็นบางส่วนได้:
Smali เป็นเวอร์ชันไบต์ของ Dalvik ที่มนุษย์สามารถอ่านได้ กล่าวง่ายๆ ก็คือ มันทำงานเป็นการประกอบ/แยกชิ้นส่วน รูปแบบปฏิบัติการ Dalvik (.dex)
ในส่วนของโค้ด เรามาดูความแตกต่างระหว่าง Java และ Smali กัน:
public static void printHelloWorld() {
System.out.println("Hello World")
}
และรหัสเดียวกันของเราใน Smali:
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
เราได้ผ่านแนวคิดพื้นฐานที่จำเป็นแล้ว และตอนนี้ก็เริ่มใช้งานได้แล้ว!
ขั้นตอนที่ 1:
เลือก APK ที่คุณต้องการย้อนกลับ
หากคุณไม่สามารถค้นหามันได้ง่ายๆ ผ่าน App Store คุณสามารถทำได้โดยตรงบนเว็บไซต์อย่าง APKCombo หรือ APKMonk
เมื่อมาที่นี่ ให้ใส่ใจกับบางสิ่งที่อาจน่าสนใจ:
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
เมื่อเรามี APK แล้ว ก็ถึงเวลาถอดรหัส เพื่อที่เราจะได้วิเคราะห์โค้ดได้
(เครื่องมือวิเคราะห์แบบไดนามิก เช่น MOBSF ช่วยให้คุณสามารถดาวน์โหลดโค้ดได้โดยตรง ไม่ว่าจะใน Java หรือ SMALI)
ตอนนี้เรากำลังจะใช้เครื่องมือ โดยอันแรกคือ APKTOOL คุณจะเห็นรายละเอียดเพิ่มเติมด้านล่าง แต่โดยทั่วไปแล้วจะรับผิดชอบในการแตกไฟล์ สร้างโฟลเดอร์ ในที่เดียวกับไฟล์ที่ถอดรหัสแล้วทั้งหมด . จากที่นี่ คุณจะสามารถวิเคราะห์โค้ดที่จำเป็นทั้งหมดได้
คำสั่งที่ใช้ในที่นี้จะเป็นดังนี้:
- apktool d ~/Desktop/aplicativo_app.apk
แยกไฟล์ “classes.dex” ออกจาก APK
ใช้เครื่องมือ dex2jar เพื่อแปลงเป็นไฟล์คลาส Java ส่งผลให้เป็นไฟล์ jar
- sh d2j-dex2jar.sh classes.dex
ใช้ JD-GUI เพื่อแยกซอร์สโค้ดออกจากไฟล์ jar
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
Mobile Security Framework เป็นเครื่องมือที่ทำให้การวิเคราะห์ APK เป็นแบบอัตโนมัติ ข้างในเราได้รับรายละเอียดเพิ่มเติมเกี่ยวกับส่วนที่ประกอบเป็น APK ซึ่งเราเห็นก่อนหน้านี้
เดกซ์2จาร์
เดเด็กซ์เซอร์
apktool.apk
apktool เป็นเครื่องมือ Java แบบโอเพ่นซอร์สสำหรับแอปพลิเคชัน Android แบบวิศวกรรมย้อนกลับ สามารถถอดรหัสไฟล์ APK เป็นโค้ดต้นฉบับในรูปแบบ XML ที่มนุษย์สามารถอ่านได้ แบ่งคลาสและวิธีการทั้งหมดที่มีอยู่ในไฟล์ออกเป็น Smali ด้วยวิธีนี้ คุณสามารถปรับเปลี่ยนคุณสมบัติหรือการทำงานของโปรแกรมได้ เมื่อใช้รหัส Smali คุณสามารถเพิ่มฟังก์ชันใหม่ภายในแอปพลิเคชันนั้นหรือเปลี่ยนลักษณะการทำงานที่คาดหวังได้
นิยมใช้สำหรับการปักหมุด SSL
adb (สะพานดีบัก Android)
แอนโดรการ์ด
กรอบ Xposed
คำสั่ง: //เร็ว ๆ นี้
บายพาส Android SSL
ฟรีด้า
ตอนนี้เรามีพื้นฐานเกี่ยวกับวิธีการทำงานแล้ว ก็ถึงเวลาฝึกฝน! นี่คือรายการห้องปฏิบัติการบางแห่งที่คุณสามารถใช้เป็นแบบฝึกหัดได้:
ทดสอบประเภทการโจมตีต่อไปนี้:
ขอบคุณที่มาที่นี่! ขอให้เป็นวันที่ดี.