You are on page 1of 8

JURNAL TEKNOLOGI TERPADU. 8 VOL.

2 OKTOBER 2020 ISSN : 2338 - 66649

Received : April 2020 Accepted: Agustus 2020 Published : Oktober 2020

Pengujian dan Analisa Reverse Engineering Pada Platform Android (Studi


Kasus: Tebak_Gambar.apk)

I Putu Agus Eka Pratama1*, Rasendriya Revo Daniswara2


1*,2
Prodi Teknologi Informasi, Fakultas Teknik, Universitas Udayana

*
eka.pratama@unud.ac.id

Abstract
Not all of software (applications) provide the source code directly to the users. Applications with closed source code
only provide ready-made binaries to be installed or run directly, making it difficult for users to learn the structure of
the application along with the source code and components in it. For this reason, reverse engineering needs to be
done on the application. In this research, reverse engineering is carried out on an application on the Android
platform called Tebak_Gambar.apk based on Java. The concept of reverse engineering work in the
Tebak_Gambar.apk file is to decompile the .apk file to get the .jar file, then decompile the .jar file to obtain the
components of the Tebak_Gambar.apk application. The final result of reverse engineering of the Tebak_Gambar.apk
application is the production of the components making up the application, so that it gives more value to help the
user to understand the application structure along with the source code .java, activity scheme .xml, and additional
components (images, audio, fonts ). The drawback is that it cannot find the names of variables, methods, and classes,
so it is necessary to rename according to the understanding of the logic flow of the application concerned.

Keywords : application, Tebak_Gambar.apk, reverse engineering, Java, decompilation

Abstrak
Tidak semua perangkat lunak (aplikasi) menyediakan langsung sumber kodenya kepada para pengguna. Aplikasi
dengan sumber kode tertutup hanya menyediakan binary siap pakai untuk diinstal atau dijalankan langsung, sehingga
menyulitkan pengguna untuk mempelajari struktur aplikasi beserta sumber kode dan komponen di dalamnya. Untuk
itu, perlu dilakukan reverse engineering pada aplikasi. Pada penelitian ini, dilakukan reverse engineering pada
aplikasi platform Android bernama Tebak_Gambar.apk berbasis Java. Konsep kerja reverse engineering pada file
Tebak_Gambar.apk adalah melakukan dekompilasi file .apk untuk memperoleh file .jar, kemudian melakukan
dekompilasi file .jar untuk memperoleh komponen-komponen penyusun aplikasi Tebak_Gambar.apk. Hasil akhir dari
reverse engineering aplikasi Tebak_Gambar.apk adalah dihasilkannya komponen-komponen penyusun aplikasi,
sehingga memberi nilai lebih yaitu membantu pengembang memahami struktur aplikasi beserta dengan source
code .java, activity scheme .xml, dan komponen tambahan (gambar, audio, font). Adapun kekurangannya adalah
tidak dapat menemukan nama dari variabel, method, dan class, sehingga perlu melakukan penamaan ulang sesuai
dengan pemahaman terhadap alur logika dari aplikasi bersangkutan.

Kata kunci : aplikasi, Tebak_Gambar.apk, reverse engineering, Java, dekompilasi

1. Pendahuluan pengembang perangkat lunak komputer


1.1. Latar Belakang (aplikasi) dituntut untuk bisa mengembangkan
Di tengah perkembangan teknologi yang aplikasi yang dapat memenuhi kebutuhan para
semakin pesat seperti saat ini, para pengguna yang makin kompleks.
69
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

Mereka harus dapat mengembangkan Dengan memahami teknik reverse


aplikasi yang inovatif. Untuk dapat engineering, akan memudahkan pengembang
mengembangkan aplikasi yang inovatif, di dalam menjalankan GDLC, terutama pada
pengembang dapat mempelajarinya melalui tahap testing. Aplikasi Tebak_Gambar.apk
aplikasi lain yang telah ada. Namun hal ini dipilih sebagai contoh aplikasi untuk
akan sulit untuk dilakukan apabila pengujian reverse engineering, karena aplikasi
pengembang tidak dapat mengetahui cara kerja ini berbasis Java pada platform Android,
dari aplikasi tersebut, struktur di dalamnya, namun disediakan dalam bentuk binari (.apk),
serta metode dan algoritma apa yang sehingga perlu dilakukan proses reverse
digunakan. Solusi untuk hal ini adalah dengan engineering untuk memperoleh source code
melakukan reverse engineering terhadap dan komponen-komponen pendukung,
aplikasi. sehingga dapat dipelajari lebih lanjut.
Melalui proses reverse engineering, Terdapat empat buah penelitian
pengembang dapat mengetahui source code mengenai reverse engineering yang telah
dari sebuah binary file (executable) pada dilakukan oleh sejumlah peneliti sebelumnya.
sebuah aplikasi. Proses kompilasi dari sebuah Rahmadani di dalam penelitiannya
source code menjadi executable file disebut mengungkapkan bahwa reverse engineering
sebagai proses forward engineering, dapat digunakan untuk penentuan pola
sedangkan reverse engineering merupakan interaksi pada Sequence Diagram, sehingga
proses mengembalikan sebuah executable file memudahkan di dalam proses desain UML,
menjadi sebuah source code [1]. Source code dengan sampel pada aplikasi di platform
yang didapatkan dari proses reverse Android [7]. Aldya menyebutkan
engineering ini bisa menjadi modal untuk membuktikan bahwa reverse engineering dapat
mempelajari logika dari program tersebut, membantu mengetahui dan menjelaskan alur
untuk menciptakan sebuah inovasi yang dapat di dalam identifikasi malware RAT, beserta
menjawab kebutuhan masyarakat yang terus dengan tool-tool yang digunakan [8]. Redo
bertambah. reverse enginering dapat dilakukan menyajikan penelitian tentang reverse
pada hampir semua platform dan bahasa engineering untuk menemukan prinsip-prinsip
pemrograman, salah satunya pada platform teknologi suatu produk dengan cara
Android dan Java. menganalisa struktur, fungsi dan cara pada
Android merupakan sistem operasi yang produk tersebut, sehingga dapat dilakukan
berbasis kernel linux [2]. Perkembangan patching ke dalam perangkat lunak tersebut
android sekarang diaplikasikan ke dalam untuk meningkatkan kualitas dari perangkat
ponsel atau sejenisnya. Di dalam platform lunak itu sendiri [9]. Terakhir, Waliulu dan
Android, berbagai jenis perangkat lunak dalam Alam telah membuktikan bahwa reverse
bentuk permainan, social media, layanan, dan engineering dapat diujikan untuk analisa statis
lainnya dikembangkan. Perangkat lunak pada forensic malware Web C2-Div, yang meliputi
platform Android pada dasarnya terdiri atas scanning, suspected packet di dalam jaringan,
file java, resources, dan manifest[3]. Khusus serta analisa malware behavior dan
untuk pengembangan aplikasi game pada disassembler body malware [10].
platform Android, digunakan Game Berdasarkan kepada keempat penelitian
Development Life Cycle (GDLC). GDLC sebelumnya ini, maka pada penelitian ini
terdiri dari 5 proses utama, yang meliputi: difokuskan kepada reverse engineering untuk
pitch, pre production, production, testing, dan memperoleh sumber kode dari binari aplikasi
mastering[4]. Tebak_Gambar.apk, sehingga dari sumber
kode dan komponen hasil reverse engineering

70
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

yang diperoleh, dapat dipelajari secara lebih engineering pada aplikasi Tebak_Gambar.apk
mendalam. Reverse Engineering terhadap file yang berjalan pada platform android, dengan
binari aplikasi Tebak_Gambar.apk, pertimbangan bahwa aplikasi
menggunakan JD-GUI dan ApkTool pada Tebak_Gambar.apk berbasis Java yang
sistem operasi Linux Ubuntu. disediakan dalam bentuk file binari (.apk),
sehingga perlu dilakukan reverse engineering
2. Metode Penelitian untuk memperoleh source code dan
Metode-metode penelitian yang komponen-komponen pendukung, sehingga
digunakan di dalam penelitian ini, yaitu: dapat dipelajari lebih lanjut.
metode penelitian kualitatif berupa studi kasus, Aplikasi Tebak_Gambar.apk merupakan
metode pengumpulan data berupa studi aplikasi permainan kuis yang dikembangkan
literatur, dan metode pengujian berupa oleh Lukis Cindera dan Irwanto Widyatri pada
BlackBox Testing. Metode-metode penelitian tahun 2013, di mana pemain diberikan sebuah
ini berdasarkan kepada metodologi penelitian gambar untuk diinputkan jawaban pada kolam
Experimental Methodology, yang di dalamnya jawaban yang disediakan [6].Tujuan reverse
meliputi: pemilihan studi kasus, studi literatur, engineering pada aplikasi Tebak_Gambar.apk
implementasi, pengujian, dokumentasi, dan adalah untuk memperoleh source code
publikasi [5]. Bagan diagram alir dari aplikasi, sehingga dapat diketahui struktur dan
Experimental Methodology, ditunjukkan pada komponen-komponennya, agar dapat dipelajari
Gambar 1 di bawah ini: lebih lanjut.

3. Hasil Penelitian
3.1. Implementasi dan Pengujian
Urutan langkah implementasi dan
pengujian, meliputi: backup file .apk dari
aplikasi Tebak_Gambar.apk, ekstraksi
file .jar menggunakan Dex2jar untuk
memperoleh file Tebak_Gambar-
dex2jar.jar, dekompilasi file
Tebak_Gambar-dex2jar.jar menggunakan
JD-GUI untuk melihat isi file
Tebak_Gambar-dex2jar.jar, dekompilasi
file Tebak_Gambar.apk menggunakan
aplikasi ApkTool untuk memperoleh file
lainnya di luar file Java, restrukturisasi file
source code hasil dekompilasi, dan analisa
hasil spesifikasi file source code. Bagan
diagram alir dari urutan langkah
Gambar 1. Bagan alir Experimental
Methodology sebagaimana penjelasan di atas, disajikan
pada Gambar 2 di bawah ini:
2.1. Pemilihan Studi Kasus
Metode penelitian kualitatif berupa studi
kasus yang digunakan di dalam penelitian ini,

memerlukan adanya pemilihan studi kasus.


Studi kasus yang dipilih adalah reverse

71
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

Gambar 2. Bagan alir urutan langkah pada


implementasi dan pengujian

3.2. Backup Tebak_Gambar.apk


Backup aplikasi Tebak_Gambar.apk Gambar 4. Tampilan menu Alat pada Clean Master
dilakukan melalui proses dekompilasi file .apk
menjadi source code, menggunakan Clean •Selanjutnya memilih aplikasi Tebak_Gambar,
Master di Android. Urutan langkahnya yaitu: memilih opsi Buat Cadangan Paket
mengunduh Clean Master, menginstal, Penginstalan, sebagaimana ditunjukkan pada
menjalankan di Android, ditunjukkan pada Gambar 5:
Gambar 3:

Gambar 3. Tampilan awal Clean Master Gambar 5. Menu Pengelola Aplikasi pada Clean
Master
• Kemudian memilih menu Alat dan sub menu
menu Pengelola Aplikasi, ditunjukkan pada •Setelah proses backup selesai dilakukan,
Gambar 4: kemudian akan muncul notifikasi sebagaimana

72
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

ditunjukkan pada Gambar 6, kemudian 3.4. Dekompilasi Menggunakan JD-GUI


membuka direktori file dan memindahkannya Langkah selanjutnya adalah dekompilasi
ke folder /home. menggunakan JD-GUI untuk dapat melihat isi
dari file Tebak_Gambar-dex2jar.jar. Urutan
langkah yaitu: menjalankan aplikasi JD-GUI,
memilih menu File, memilih opsi Open File,
memilih file Tebak_Gambar-dex2.jar, dan
memulai proses dekompilasi. Hasil
dekompilasi adalah sejumlah komponen class
dan kelengkapan file Java lainnya, ditampilkan
pada Gambar 8:

Gambar 6. Notifikasi proses backup berhasil


dilakukan

3.3. Ekstraksi File .jar Menggunakan Gambar 8. Hasil dekompilasi Tebak_Gambar-dex2.jar


Dex2jar
Setelah mendapatkan file package dari 3.5. Dekompilasi Menggunakan ApkTool
aplikasi Tebak_Gambar.apk, langkah Tahap pengujian selanjutnya adalah
selanjutnya adalah melakukan ekstraksi melakukan dekompilasi file
file .jar menggunakan aplikasi Dex2jar. Urutan Tebak_Gambar.apk menggunakan aplikasi
langkah yang dilakukan yaitu: menjalankan Apktool, untuk memperoleh file lainnya di
Terminal di Linux Ubuntu, pindah ke directory luar file Java, sehingga dapat melengkapi
file dex2jar, menjalankan perintah sh d2j- proses reverse engineering. Urutan langkah
dex2jar.sh Tebak_Gambar.apk melalui yaitu: membuka Terminal di Linux Ubuntu,
Terminal di Linux Ubuntu. Luaran yang pindah ke direktori file Tebak_Gambar.apk,
dihasilkan berupa file Tebak_Gambar- menjalankan perintah apktool.jar d
dex2jar.jar, ditunjukkan pada Gambar 7: Tebak_Gambar.apk di Terminal Linux (opsi d
menyatakan direktori tempat file berada),
ditunjukkan pada Gambar 9:

Gambar 7. Ekstrak file .jar dari Tebak_Gambar.apk

73
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

Gambar 9. Command decompile apk menggunakan


ApkTool. Gambar 9.Source code hasil dekompilasi menggunakan
aplikasi JD-GUI

• Setelah muncul direktori Tebak_Gambar, Terkait hasil dari proses dekompilasi


kemudian dilakukan dekompilasi, sehingga untuk memperoleh file selain Java, (misal:
setelah dekompilasi selesai, di dalam direktori file .xml), hasil yang diperoleh serupa dengan
Tebak_Gambar akan terdapat sejumlah hasil dari menggunakan aplikasi JD-GUI, yaitu
subdirektori di luar Java, yaitu: original, res, source code yang terstruktur rapi pada
resources, sources, apktool.yml, sebagaimana direktorinya masing - masing. Salah satunya
ditunjukkan Gambar 10: adalah source code .xml dari layout yang
terdapat pada sub direktori
/Tebak_Gambar/res/layout. Kelebihan lain
yang diperoleh dari hasil pengujian
dekompilasi untuk memperoleh file selain file
Gambar 10.Hasil decompile file Tebak_Gambar.apk Java ini adalah penamaan file xml yang tidak
menggunakan apktool lagi berupa variabel acak, serta isi dari file xml
cukup terstruktur. Salah satunya adalah file
3.6. Restrukturisasi File Source Code activity_main.xml pada direktori layout
Berdasarkan kepada langkah - langkah (Gambar 10).
pengujian reverse engineering yang telah
dilakukan, maka diperoleh hasil yaitu :
1.Hasil dekompilasi menggunakan tools
dex2jar dan jdgui.
2.Hasil dekompilasi menggunakan Apktool.
Dari pengujian dekompilasi file
Tebak_Gambar-dex2.jar menggunakan JD-
GUI, dapat diperoleh hasil dekompilasi berupa
source code yang baik dan terstruktur. Namun
hasil dekompilasi menggunakan JD-GUI ini
memiliki satu kekurangan, yaitu pengguna Gambar 10.File activity_main.xml
tidak dapat menemukan nama dari variabel,
method, maupun class. Solusi untuk hal ini 3.7. Analisa Spesifikasi File Source Code
adalah melakukan penamaan ulang (rename) Dari langkah - langkah pengujian yang
untuk setiap variabel, method, atau class sesuai telah dilakukan dan pengamatan terhadap hasil
dengan pemahaman terhadap alur logika dari - hasil yang diperoleh, dapat dilakukan analisis
aplikasi bersangkutan, dalam hal ini terhadap spesifikasi file source code hasil
Tebak_Gambar.apk (Gambar 9). reverse engineering aplikasi
Tebak_Gambar.apk. Proses dekompilasi
74
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

menggunakan JD-GUI dan dex2jar, bertujuan


untuk memperoleh file .class (Java) yang ada
pada file Tebak_Gambar.apk. Hasil
dekompilasi yang diperoleh tidak akurat,
terlihat dari penamaan variabel, method, dan
class yang masih memiliki penamaan otomatis
oleh JD-GUI. Hasil lainnya adalah source code
tertata dengan struktur yang rapi.
Sedangkan proses dekompilasi Gambar 12.File fonts pada sub direktori Asset
menggunakan Apktool, bertujuan untuk
mendapatkan resource lainnya dari file 4. Kesimpulan
Tebak_Gambar.apk (misal: file .xml). Hasil Teknik reverse engineering yang
yang diperoleh dari proses dekompilasi dilakukan terhadap file aplikasi
menggunakan Apktool ini adalah penamaan Tebak_Gambar.apk di Linux Ubuntu pada
variabel dan method yang akurat, serta source penelitian ini, membantu pengembang di
code dari file xml yang terstruktur. Hasil dalam memahami struktur dan algoritma dari
lainnya yang diperoleh adalah file icon yang aplikasi. Aplikasi Apktool berfungsi untuk
digunakan pada aplikasi Tebak_Gambar.apk. membantu proses reverse engineering melalui
Sebagai contoh: file drawable-xhdpi-v4 yang kemampuannya di dalam menampilkan
berfungsi untuk menyimpan sejumlah icon struktur file .xml dari aplikasi
dari aplikasi Tebak_Gambar.apk (Gambar 11). Tebak_Gambar.apk, sedangkan aplikasi JD-
GUI dan dex2jar berfungsi untuk memperoleh
file .class (Java) dari aplikasi
Tebak_Gambar.apk, sehingga pengembang
dapat mempelajari algoritma dari aplikasi
tersebut.
Teknik reverse engineering di platform
Android dapat dilakukan oleh siapapun,
dengan mengikuti tahapan - tahapan pengujian
yang telah dijabarkan di dalam penelitian ini.
Namun untuk memahami struktur dan
Gambar 11.File drawable-xhdpi-v4 algoritma dari aplikasi yang diujikan beserta
dengan hasil yang diperoleh, diperlukan
Pada sub direktori Asset juga diperoleh pemahaman yang baik mengenai
sejumlah font dan library fungsi yang ada pada pemrograman di platform Android.
aplikasi Tebak_Gambar.apk (Gambar 12).
5. Saran
Penelitian yang dilakukan, mampu
menunjukkan peran dari reverse engineering di
dalam membantu pengembang untuk
mengetahui struktur dan algoritma yang ada di
dalam aplikasi berbentuk file binary, melalui
source code yang ditampilkan. Ke depannya
perlu dilakukan pengujian reverse engineering
pada aplikasi di luar basis Java (misal: C, C#,

75
JURNAL TEKNOLOGI TERPADU. 8 VOL. 2 OKTOBER 2020 ISSN : 2338 - 66649

Python) yang penggunaannya cukup banyak Sequence Diagram Pada Sampel Aplikasi
dewasa ini di dunia teknologi informasi. Android," Journal of Information Systems
Engineering and Business Intelligence, Vol.
6. Daftar Pustaka 1, No. 1, April 2015.
[1] Eldad Eilam, Reversing : The Secret of [7] A.P. Aldya, dkk, "Reverse Engineering
Reverse engineering, Crosspoint Boulevard untuk Analisis Malware Remote Access
Indianapolis, Wiley Publishing, Inc, 2005. Trojan," JEPIN (Jurnal Edukasi dan
[2] Y. Kusuma, Membedah Kehebatan Android, Penelitian Informatika) Vol. 5 No. 1 April
Jakarta, DKI: Grasindo, 2011. 2019
[3] Android Studio, Mengenal Android Studio [8] M.R. Redo, "Pendekatan Reverse
(Indonesia).https://developer.android.com/st Engineering Untuk Pengujian Keamanan
udio/intro/index.html?hl=id. 9 april 2018 Guna Meningkatkan Kualitas Perangkat
20.15. Lunak," Jurnal Informatika, Vol. 16, No. 1,
Juni 2016.
[4] Dendy Triadi, Bedah Tuntas Fitur Android, [9] R.F. Waliulu, T.H.I. Alam, "Reverse
Yogyakarta, Jogja Great! Publisher, 2013 Engineering Analysis Statis Forensic
[5] Lukis Cindera, Irwanto Widyatri. Tebak Malware Webc2-Div," Insect (Informatic
Gambar. Google Play Store. 2013. and Security) Jurnal Teknik Informatika
https://play.google.com/store/apps/details?id Universitas <Muhammadiyah Sorong, Vol
=com.tebakgambar&hl=in. 4, No 1, 2018.
[6] V.S. Rahmadani, dkk, "Penerapan Reverse
Engineering Dalam Penentuan Pola Interaksi

76

You might also like