โดยปกติแล้ว iOS Application จะมีการเข้ารหัสและทำ ASLR/PIE Protection ในการใช้งาน memory ไว้ ทีนี้หากเราต้องการจะให้มันเป็น Application ที่เราสามารถ debug ได้ด้วย IDA, Hopper หรืออะไรแนวๆนั้นก็สามารถใช้ crackulous, Clutch แต่เนื่องด้วยผมเอา iOS 11.3 มา Jailbreak แล้วใช้พวกนั้นไม่ได้เลย(จะทำแบบ manual ก็เสียเวลา) ก็เลยหาเครื่องมืออื่นมาช่วยนั่นคือ bfinject ครับ
วิธีการทำก็ไม่ยากครับ
1. Jailbreak iDevice (ขั้นตอนนี้ไปหาวิธีกันเองนะครับ)
2. ssh เข้า iDevice นั้นๆ (Default user: root, password: alpine)
3. Download bfinject from this link
4. Export PATH
1 |
export PATH=$PATH:/jb/usr/bin:/jb/bin:/jb/sbin:/jb/usr/sbin:/jb/usr/local/bin:/sbin:/usr/sbin:/usr/local/bin:/jb/bfinject: |
5. สร้าง folder ไว้ bfinject
1 |
mkdir -pv /jb/bfinject |
6. Extract ไปไว้ path ที่เราประกาศใน PATH ภายใน iDevice (ในที่นี้คือ /jb/bfinject)
7. เข้าไปที่ path ที่เก็บ Application ภายในเครื่อง
1 |
/private/var/containers/Bundle/Application |
8. ภายในนั้นจะมี UUID ของ Application ที่เป็น unique ของแต่ละอันเต็มไปหมด ให้เราลอง find ดูก็ได้ จากนั้นเข้าไปยัง path ดังกล่าว
9. เปิด app ที่ต้องการ dump แล้วทำการ dump โดยระบุ binary file ที่อยู่ใน path ดังกล่าว
1 |
bash bfinject -P <binary> -L decrypt |
10. จะได้ไฟล์ decrypt.ipa มา โดยอาจจะใช้ scp หรือจะใช้ nc ตามที่มัน
11. นำ ipa นั้นมา unzip แล้วเปิดดูข้างในก็จะพบ content ข้างใน
Source::
- https://ivrodriguez.com/reverse-engineer-ios-apps-ios-11-edition-part1/
- https://ivrodriguez.com/reverse-engineer-ios-apps-ios-11-edition-part2/