1 poin oleh GN⁺ 2025-02-19 | 1 komentar | Bagikan ke WhatsApp

Men-debug aplikasi yang tidak bisa di-debug

  • Baru-baru ini saya menemukan aplikasi yang tidak bisa di-debug. Aplikasi ini memblokir koneksi debugger, berhenti lebih awal saat kode diinjeksikan, dan membuat seluruh ponsel crash jika dijalankan di perangkat yang sudah di-jailbreak.
  • Aplikasi iOS sering kali menyertakan perlindungan tambahan seperti deteksi jailbreak atau obfuscation kode. Aplikasi ini secara khusus menggabungkan banyak mekanisme perlindungan.

Versi video

  • Ada versi video dari postingan ini yang menunjukkan prosesnya dengan lebih rinci.

Daftar isi

  • PT_DENY_ATTACH
  • Melewati PT_DENY_ATTACH (mode mudah)
  • Melewati PT_DENY_ATTACH (mode sulit)
  • Ponsel crash
  • Injeksi kode
  • Penutup

PT_DENY_ATTACH

  • Menghubungkan debugger adalah langkah pertama. Di ponsel yang sudah di-jailbreak, biasanya cukup mudah untuk menghubungkan debugger.
  • Fungsi bernama ptrace memblokir koneksi debugger. Fungsi ini memblokir koneksi debugger di masa depan melalui request PT_DENY_ATTACH.

Melewati PT_DENY_ATTACH (mode mudah)

  • PT_DENY_ATTACH hanya memblokir debugger setelah dipanggil. Jika breakpoint dipasang sebelum pemanggilan, debugger bisa terhubung dengan normal.
  • Kita bisa melewati pemanggilan ini dengan memasang breakpoint pada fungsi ptrace itu sendiri.

Melewati PT_DENY_ATTACH (mode sulit)

  • Beberapa developer mengimplementasikan pemblokiran debugger dengan memakai system call secara langsung alih-alih ptrace.
  • Dalam kasus ini, kita harus menemukan system call tersebut di biner dan melewatinya.

Ponsel crash

  • Aplikasi melakukan soft reboot pada ponsel dalam kondisi tertentu. Ini terjadi dengan memanggil method yang intensif memori dalam loop tak berujung.
  • Ini bisa dilewati dengan menggunakan lldb.

Injeksi kode

  • Aplikasi crash saat kode diinjeksikan. Kemungkinan besar ini adalah masalah yang terjadi karena app group identifier yang salah.
  • Di ponsel yang sudah di-jailbreak, kode bisa diinjeksikan tanpa harus me-resign aplikasi. Jika tidak, masalahnya bisa diatasi dengan melakukan method swizzling.

1 komentar

 
GN⁺ 2025-02-19
Komentar Hacker News
  • Bryce Bostwick melakukan pekerjaan yang sangat keren dan menginspirasi dalam debugging dan reverse engineering aplikasi

    • Terinspirasi setelah melihat di video YouTube-nya cara memodifikasi TikTok agar hanya menampilkan video kucing, lalu memodifikasi Instagram agar hanya menyisakan fitur pesan dan menghapus sisanya
    • Tertarik memodifikasi Windows dengan gaya Windhawk
    • Bryce memperkenalkan pekerjaan semacam ini di iOS melalui video langkah demi langkah secara langsung
  • Di DOS/Windows, trik anti-debugging sudah umum sejak lama

    • Tingkat kemudahan kontrol pengguna berbanding terbalik dengan seberapa tidak ramahnya platform terhadap pengguna
    • PT_DENY_ATTACH tampaknya merupakan fitur untuk yang belakangan
    • Di Windows ada trik untuk membuat aplikasi menempel ke dirinya sendiri
  • Mengejutkan bahwa pemeriksaan App Store Apple tidak menolak aplikasi yang melakukan system call secara langsung

    • Di platform Apple, system call bukan ABI yang stabil, jadi harus melalui libSystem
    • Aplikasi yang melakukan system call langsung berarti melakukan hal yang seharusnya tidak dilakukan
  • Penasaran mengapa penulis mencari svc 0x80 alih-alih mov w16, #26

  • Penulis siap menjawab pertanyaan

  • Video di bagian atas adalah video pemrograman yang sangat bagus

    • Temponya cepat, asumsi pengetahuannya pas, dan demonya sangat baik tanpa mengganggu alur
  • Penasaran apakah ini aplikasi yang sah atau diduga malware sehingga perlu di-debug

    • Jika bukan, berarti banyak usaha yang dicurahkan
  • Melewati PT_DENY_ATTACH (Hard Mode)

    • Di macOS, kernel dipatch agar PT_DENY_ATTACH tidak melakukan apa pun
    • Di macOS, cukup mudah menjalankan kernel yang sudah dipatch
    • Di iOS, kemungkinan akan ada lebih banyak masalah (KTRR dan lain-lain)
    • XNU secara teknis bersifat open source, tetapi lebih mudah mem-patch dengan hex editor daripada mengompilasi ulang
  • Penasaran tentang notifikasi "com.apple.tw.twrr"

    • Mengapa diawali dengan com.apple
    • Aplikasi tersebut bukan aplikasi Apple
  • Penasaran apakah ada yang mengenal orang-orang yang melakukan reverse engineering pada kode JavaScript situs web

  • Penasaran apakah custom kexts bisa dijalankan di iPhone yang sudah di-jailbreak

    • Memodifikasi kernel itu sendiri adalah cara yang lebih keren