Bypass Root Detection Using Patching APKs

Patching APKs merupakan salah satu teknik yang dapat dilakukan untuk melakukan bypass root detection. Patching APKs ini dapat melakukan perubahan APKs untuk dapat menghapus atau bypass root detection.

Untuk dapat melakukan bypass root detection menggunakan cara Patching APKs ini, harus tersedia beberapa alat berikut ini :

Selama tutorial ini, aplikasi yang akan diuji atau menjadi target pengujian adalah aplikasi RootBeer, yang dapat diinstal disiniarrow-up-right.

Jika semua alat sudah disiapkan, maka selanjutnya adalah ketahapan melakukan bypass root detectionnya. Untuk lebih jelasnya, akan dijelaskan setiap langkahnya seperti berikut ini:

  1. Siapkan aplikasi target, seperti yang telah dijelaskan pada tutorial ini menggunakan aplikasi RootBeer

  2. Lakukan decompile file .apk dengan menggunakan tools jadx untuk mengetahui script function yang digunakan pada saat melakukan detection root pada aplikasi target

  3. Lakukan analisa pada function checking root (root detection)

    Dari hasil analisa, terdapat beberapa function detection root yang tersedia pada aplikasi target diantaranya terdapat function checkForBinary("su"), checkForRWPaths() dan lain sebagainya.

  4. Lakukan decompile kembali file .apk target menggunakan tools apktool untuk dapat melakukan debug smali

    Untuk dapat melakukan decompile dengan menggunakan apktool dapat menggunakan perintah berikut ini:

    java -jar apktool.jar d <<file apk>>

  5. Jika sudah, buka source code tersebut menggunakan text editor yang ada

  6. Analisa smali pada function root detection yang ada

    Sebagai contoh, disini akan dilakukan patching pada salah satu function detection root yang ada yaitu checkForBinary().

    Dapat dilihat pada function diatas, jika Su Binary terdeteksi, maka akan menampilkan nilai true dan mengembalikan nilai true dengan artian terdeteksi root.

    Cari code smali function tersebut pada source code smali yang sebelumnya telah dibuka menggunakan text editor.

    Gambar diatas merupakan source code bentuk smali dari function detection root Su Binary

  7. Lakukan perubahan nilai hasil pada code smali yang ada

    Kita harus mengubah nilai hasil kembali yang asalnya bernilai true menjadi nilai false untuk melakukan bypass root detection pada function detection Su Binary tersebut. Sebagai yang dapat dilihat pada Gambar code smali diatas, pada function tersebut mengembalikan variable v0 dengan nilai true jika terdeteksi terdapat Su Binary. Maka dari itu, kita harus merubah nilai pada variable v0 tersebut menjadi false. Untuk dapat melakukannya, kita harus mendeklarasikan sebuah constanta ukuran 4 bit untuk variable v0 dengan false. Untuk lebih jelasnya dapat dilihat pada gambar dibawah ini.

    dengan memasukan code const/4 v0, 0x0 akan memaksa merubah nilai variable 0 dengan nilai false. 0x0 = false sedangkan 0x1 = true.

  8. Simpan perubahan tersebut, dan lakukan compile kembali pada source code yang sebelumnya telah dilakukan perubahan dengan menggunakan tools apktool. Perintah yang dapat digunakan adalah seperti berikut ini:

    java -jar apktool.jar b -f -r <<folder source code>> -o <<nama file output.apk>>

  9. Lakukan sign pada file apk yang sebelumnya telah dilakukan perubahan pada source codenya dengan menggunakan tools atau script yang bernama uber-signer. Perintah yang dapat digunakan adalah seperti berikut ini:

    java -jar <<file uber signer.jar>> -a <<file apk yang akan di sign>>

    Jika sudah, akan terdapat output file apk yang telah ter signed seperti pada gambar diatas

  10. Jika sudah dilakukan sign pada file apk yang telah dicompile kembali tersebut, install kembali file apk tersebut di perangkat android dan cek apakah root detection pada salah satu function root detection tersebut telah terbypass atau belum. Untuk dapat menginstall file apk tersebut, dapat menggunakan perintah berikut ini:

    adb install <<file .apk>>

    Seperti yang dapat dilihat pada gambar dibawah, untuk root detection Su Binary telah terceklis, yang artinya telah berhasil melakukan bypass pada function detection root Su Binary tersebut.

  11. Setelah berhasil melakukan bypass root detection pada function tersebut, lakukan hal yang sama seperti pada tahapan sebelumnya untuk melakukan bypass root detection lainnya pada function detection yang ada.

    Sebagai contoh lainnya, akan melakukan bypass pada function checkForRWPaths(). Maka dari itu analisa source code pada function tersebut

    Buat nilai secara paksa untuk variable yang nantinya akan dikembalikan nilainya menjadi nilai false. Maka dari itu harus membuat constanta sebesar 4 bit dengan untuk variable v5 dengan nilai 0 sebelum nilai variabel tersebut dikembalikan. maka pada smali code dapat ditambahkan code seperti berikut ini:

    const/4 v5, 0x0

    Lakukan compile pada source code yang telah dilakukan perubahan dan jika sudah lakukan sign pada file apk tersebut

    Jika sudah, install apk yang telah di sign tersebut dan lihat hasilnya. Maka root detection rooT For RW Paths berhasil terbypass dengan ditandai dengan tanda checklis hijau.

Lakukan bypass pada jenis root detection lainnya dengan menggunakan langkah-langkah seperti diatas!

Thanks, Stay Ethical & Happy Hacking! 🍻

Last updated