Insinyur terkadang perlu berpikir terbalik untuk menganalisis suatu produk. Misalnya, seorang insinyur mesin dapat menarik kesimpulan tentang produksi suatu produk berdasarkan desain dan sifat fisiknya. Mereka bahkan mungkin dapat menghasilkan produk yang sama jika mereka memiliki pemahaman yang menyeluruh tentang produk tersebut.
Anda juga dapat menyamakan rekayasa balik dengan pembuktian persamaan matematika. Jadi, bagaimana rekayasa terbalik digunakan?
Apa itu Rekayasa Balik?
Rekayasa terbalik adalah proses menganalisis suatu sistem untuk tujuan mereproduksi atau memperbaikinya. Jika Anda melihat area kerja reverse engineering, Anda dapat melihat bahwa Anda dapat menggunakannya untuk berbagai tujuan. Jika Anda melihatnya dari perspektif keamanan dunia maya, operasi berikut dapat dilakukan dengan metode rekayasa balik:
- Analisis sumber perangkat lunak non-sumber terbuka
- Analisis kerentanan
- Analisis malware
- Cracking dan Patching
Anda dapat melihat rekayasa balik yang digunakan bahkan di game komputer saat ini. Misalnya, pengembang sering kali membuat mod perangkat lunak menggunakan metode rekayasa terbalik.
Di bidang reverse engineering, ada dua metode analisis yang berbeda: statis dan dinamis. Anda melakukan analisis statis saat menganalisis program tanpa benar-benar menjalankannya. Sebaliknya, metode analisis dinamis mengharuskan Anda menjalankan program untuk mengamati perilakunya dan data yang digunakannya.
Namun sebelum Anda melakukan analisis untuk reverse engineering, ada beberapa istilah penting yang perlu Anda ketahui bagaimana arsitektur komputer bekerja.
Bagian Utama Arsitektur Komputer
Rekayasa balik secara praktis tidak mungkin kecuali Anda memahami arsitektur komputer. Anda perlu mempelajari empat bagian utama:
- Memasukkan: Satu set metode untuk memasukkan data.
- CPU: CPU memproses data yang masuk dan mengirimkannya ke pemiliknya. Ini adalah unit pemrosesan pusat.
- Penyimpanan: Ruang yang menyimpan data sementara selama pemrosesan.
- Keluaran: Hasil yang dilihat pengguna akhir.
Anda dapat mengingat semua masalah utama ini dengan sebuah contoh, seperti saat Anda menekan huruf A di keyboard. Saat Anda menekannya, peristiwa input terjadi. Setelah tahap ini, CPU memproses data dan menggunakan ruang kecil di memori untuk menyimpannya. Terakhir, Anda akan melihat huruf A di layar Anda, mengakhiri proses dengan keluaran.
Selami Kedalaman CPU
Jika Anda benar-benar ingin menjadi ahli dalam rekayasa balik dan mendalami topik ini, Anda harus memiliki pengetahuan mendetail tentang perangkat keras, bahasa tingkat rendah, dan terutama CPU. Topik utama yang perlu Anda ketahui tentang CPU adalah:
- Satuan Kontrol: Ini bertanggung jawab untuk pemrosesan data dalam CPU dan transfernya ke bidang yang relevan. Anda dapat menganggap unit ini sebagai mekanisme kontrol perutean.
- ALU: Ini adalah singkatan dari Unit Logika Aritmatika. Di sinilah beberapa operasi aritmatika dan logika berlangsung. Jika Anda menggali lebih dalam matematika, Anda akan melihat bahwa empat operasi dasar pada dasarnya adalah variasi penjumlahan. Jadi ALU didasarkan pada agregasi. Misalnya, mengurangkan dua dari tiga sama dengan menjumlahkan dikurangi dua menjadi tiga.
- Register: Ini adalah area di dalam CPU yang menyimpan data yang diproses. Ada berbagai jenis register, seperti halnya ada berbagai jenis variabel dalam bahasa pemrograman. Register bertanggung jawab untuk memelihara jenis dan atribut data yang ditugaskan padanya.
- Sinyal: Jika Anda ingin CPU menjalankan banyak operasi berbeda pada saat yang sama, diperlukan beberapa metode untuk mengaturnya. Unsur-unsur yang melakukan ini disebut sinyal. Setiap transaksi bertindak sesuai dengan sinyal yang memastikan tidak mengganggu proses lain.
- Bis: Jalur yang digunakan oleh data untuk berpindah dari satu unit ke unit lainnya. Perhatikan bagaimana namanya menyarankan transportasi.
Konsep yang Akan Sering Anda Dengar di Reverse Engineering
Memahami bagaimana CPU memproses data dan menyimpannya dalam memori, di samping konsep register, bisa sangat berguna saat merekayasa balik. Secara khusus, Anda dapat menggunakan diagram di bawah ini untuk lebih memahami konsep memori:
Terakhir, untuk analisis reverse engineering, Anda perlu mengetahui beberapa konsep dasar tentang register. Mereka adalah salah satu topik yang paling Anda fokuskan. Berikut adalah beberapa penjelasan tentang data, pointer, dan register indeks yang akan berguna bagi Anda dengan cara yang paling ringkas:
- 1. EAX: Singkatan dari Accumulator Register. Biasanya menyimpan data yang termasuk dalam kategori operasi aritmatika di sini.
- 2. EBX: Singkatan dari Base Register. Ini memainkan peran dalam pengalamatan tidak langsung.
- 3. EDX: Singkatan dari Daftar Data. EDX membantu register lain.
- 4. EIP: Singkatan dari Instruction Pointer. Menyimpan alamat domain yang akan dijalankan.
- 5. ESP: Menyimpan alamat dasar.
- 6. ESI: Menyimpan informasi indeks sumber.
- 7. EDI: Menyimpan informasi indeks tujuan.
Anda harus meneliti semua ini secara terpisah untuk memahami nuansanya. Tetapi jika Anda melihat dasar-dasarnya dan mencoba memahami logika bisnis, apa pun arsitektur prosesor yang Anda gunakan, analisis kode untuk rekayasa balik akan cukup mudah.
Reverse engineering sering dimulai dengan kode mesin. Anda mungkin memahami banyak istilah di atas jika Anda terbiasa dengan perakitan atau memiliki perintah Arsitektur prosesor 32-bit atau 64-bit. Jika Anda ingin mempelajari perakitan dari bawah ke atas, ini akan sangat berguna dalam rekayasa balik.
Apa yang Akan Anda Lakukan Dengan Semua Ini?
Jika Anda memiliki pengetahuan yang baik tentang rekayasa balik, Anda dapat melakukan analisis kode apa pun sistem operasi atau arsitektur prosesor yang Anda gunakan. Misalnya, Anda dapat menemukan versi crack dari banyak program atau game komputer. Ini adalah metode yang sepenuhnya ilegal.
Namun, jika Anda ingin menjadi profesional keamanan siber yang beretika, Anda harus menggunakan insinyur terbalik untuk memahami mengapa program yang diretas ini diretas. Jika Anda ingin maju dalam rekayasa terbalik atau baru memulai, akan menjadi pilihan yang baik jika Anda mencoba mempelajari hubungan antara perangkat keras dan kode mesin.