View: 3905|Reply: 0
|
Kejuruteraan Terbalik (Reverse Engineering): Apakah kepentingannya? - Bahagian 2
[Copy link]
|
|
Salam...
Bahagian 2 ini saya akan terangkan lebih lanjut mengenai RCE.
Proses kompilasi code memerlukan 3 langkah seperti gambar rajah yang saya tunjukkan pada bahagian 1, dimana kena bermula dengan penghasilan sumber kod. Tidak kira la apa jenis bahas pemprograman yang anda gunakan, ianya sama sahaja apabila anda compile kan source code tersebut, ianya akan menjadi fail objek.
Kod sumber sudah pastinya boleh dibaca oleh setiap manusia kerana ianya readable text manakala fail objek merupakan sumber kod yang telah di'compile'. Tetapi anda perlu ingat kerana apabila berada diperingkat fail objek, kod sumber tersebut tadi akan serta merta berubah menjadi kod binari seperti 1001001100. Diperingkat ini juga ada sesetengah simbol yang masih boleh dibaca.
Proses yang seterusnya, merupakan proses menghubungkan atau lebih dikenali sebagai linking. Linking berfungsi untuk hubungkan fail objek untuk menjadi executable. Setelah proses ini selesai, maka tercipta lah 1 software / program. Executable mengandungi kod binari dimana tiada sebarang simbol yang mudah untuk dilihat seperti pada fail objek.
Contoh proses:
1. Kod sumber / Source Code
; Kod ini adalah untuk mengeluarkan output Hello World!
; Yuri Gagarin (Compile using TASM32)
.386
.model flat
.data
szInput db "Hello World!", 0
szOutput db 20 dup(0)
.code
start:
mov esi, offset szInput
lodsb
end start
2. Fail Objek & Executable
004011D0: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
004011E0: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
004011F0: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
00402000: 48 65 6C 6C-6F 20 57 6F-72 6C 64 21-00 00 00 00 Hello World!
00402010: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
00402020: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
00402030: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
Dengan memahami konsep ini, maka tidak mustahil untuk anda memahami konsep bagaimana untuk mengubah konsep tersebut dengan cara terbalik. Perhatian, disini saya bukan mengajar melakukan sesuatu yang tidak baik (illegal). Ramai yang ingin mempelajari teknik ini kerana salah satu daripada teknik software crack adalah menggunakan teknik RCE. Untuk pengetahuan umum, sekiranya teknik sebegini dikuasai oleh seseorang yang jahat, maka akan jahatlah benda yang dibuatnya itu. Undang-undang telah dikeluarkan kerana kebanyakan software2 yg perlu berbayar di"crack" kerana ingin mendapatkan serial key untuk registration.
Berbalik kepada RCE, teknik RCE boleh diadaptasi dengan cara menterbalikkan proses kompilasi yang asli seperti:
1. Proses kompilasi yang asli (original compilation)
Kod Sumber ---> Fail Objek ---> Executable
2. Proses RCE / Proses Dekompilasi (Reverse Engineering Process)
Executable ---> Fail Objek ---> Kod Sumber
Proses tersebut hanya diterbalikkan dimana fail yang sudah di'compile' akan di dekompilasi (decompilation). Teknik sebegini akan memakan masa, tapi bagi yang sudah mahir sudah tentu akan menjadi benda yang mudah dengan hanya meilhat kepada kod tersebut. Sebagai contoh kod yang telah di dekompilasi:
DATA:00402000 ; Segment type: Pure data
DATA:00402000 ; Segment permissions: Read/Write
DATA:00402000 DATA segment para public 'DATA' use32
DATA:00402000 assume csATA
DATA:00402000 ;org 402000h
DATA:00402000 aHelloWorld db 'Hello World!',0 ; DATA XREF: CODE:starto
DATA:0040200D align 1000h
DATA:0040200D DATA ends
DATA:0040200D
DATA:0040200D
DATA:0040200D end start
Proses RCE ini biasanya akan dilakukan bila perlu sahaja seperti, sumber kod yang hilang dan perlu dapatkan semula, menganalisa malware @ virus, dan sebagai bukti untuk keadilan (pembuat virus dihadapkan dimahkamah atas kesalahan menyebarkan virus tersebut dan mengakibatkan kerosakan yang memberi impak besar).
Tentu korang pening membaca kan? Hehe...Btw, skil2 yang perlu ada untuk terer dalam bidang ni adalah seperti:
- Pengetahuan dalam arkitektur komputer
- Bahasa pemprograman Assembly (x86 / 8086)
- Sistem pengoperasian (Operating System)
- Format fail (cth: PE, ELF, etc.)
- Teknik mengkaji / teringin untuk mendalami teknik RCE
Perkakasan yang sering digunakan untuk belajar RCE:
- Hex Editor / viewer (HIEW, Hexplorer)
- Disassembler (IDA Pro Free Version)
- Enjin carian (Google teman anda!)
- Debuggers (OllyDBG)
- Script language (Python, VB, C & etc.)
Cara-cara untuk korang mulakan belajar benda ni, korang kena:
- Mahir menggunakan perkakasan RCE
- mengenalpasti format binary tersebut
- mengenalpasti prosesor yang digunakan
- mengenalpasti sistem pengoperasi
- rajin & berusaha untuk mendapatkan apa yang perlu dicapai.
Okaylah, sampai disini sahaja saya sampaikan apa yang perlu disampaikan . Saya hanya sekadar mampu berkongsi apa yang saya tahu & telah pelajari. Wait for my next post. Mungkin kita akan start belajar RCE bermula dari A-Z. Insyaallah.
Salam 1 Malaysia (Yuri) |
|
|
|
|
|
|
| |
|