CARI Infonet

 Forgot password?
 Register

ADVERTISEMENT

View: 3781|Reply: 0

Kejuruteraan Terbalik (Reverse Engineering): Apakah kepentingannya? - Bahagian 2

[Copy link]
Post time 20-2-2012 04:51 PM | Show all posts |Read mode
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)
Reply

Use magic Report

You have to log in before you can reply Login | Register

Points Rules

 

ADVERTISEMENT



 

ADVERTISEMENT


 


ADVERTISEMENT
Follow Us

ADVERTISEMENT


Mobile|Archiver|Mobile*default|About Us|CARI Infonet

5-5-2024 11:04 PM GMT+8 , Processed in 0.073938 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

Quick Reply To Top Return to the list