Tuesday, December 20, 2011

Cracking Software: MessageBox Sederhana

Artikel ini ditujukan untuk semua level pembaca, tidak ada perbedaan, Leet, Newbie, melintasi semua batas, NO-SARA, We’re the one for equality.. Punk Rock, oi-oi! :D Sebelumnya Saya ingin menyampaikan salam hormat dan persahabatan kepada seluruh rekan-rekan Hacker yang pernah mengenal Saya di Indonesia, terutama rekan-rekan veteran h4xx0r yang mengagumkan.. :D
Pernahkah bertemu dengan software trial alias shareware atau mempergunakan shareware? Shareware adalah program trial (tidak gratis) yang memiliki keterbatasan dan mengharuskan user untuk membeli atau membayar software tersebut sebelum bisa dipergunakan secara penuh atau tanpa batasan. Artikel ini akan mencoba membahas hal paling dasar dari skema proteksi software berbayar (shareware). Salah satu skema shareware yang cukup terkenal adalah Nag atau kotak dialog yang menampilkan pesan tentang status software, apakah sudah dibeli (Registered) atau masih trial (Unregistered). Sebenarnya artikel ini merupakan modifikasi dari salah satu materi seminar Saya di pertengahan tahun 2009 untuk instansi pendidikan jurusan Teknik Informatika, dimana saat itu Saya diminta memperagakan demo cracking sederhana yang sering dijumpai pada skema shareware.
Artikel ini TIDAK bertujuan untuk mengajarkan cara mencuri ataupun membajak software berbayar, namun lebih mengutamakan kepada pemahaman tentang kerawanan sebuah sistem. Tidak satupun target yang dipergunakan sebagai kelinci percobaan pada artikel ini yang berstatus shareware milik pihak lain. Target yang disediakan adalah software buatan Saya pribadi, jadi tidak ada pihak lain yang dirugikan disini kecuali Saya (Waktu istirahat dirumah seusai kerja terpangkas karena menulis artikel ini dan uang pribadi Saya terpangkas karena dipergunakan untuk membayar koneksi broadband internet melakukan download compiler Assembler dan posting artikel..)
Kepada seluruh “Prankster” alias “Not Action Talk Only” yang selalu negatif dalam menilai aktifitas Hacker, sebaiknya baca terlebih dahulu sebelum menilai.. kenapa malah kalian yang ribut? Padahal yang terpakai waktu, tenaga dan uang pribadi Saya, bukan milik kalian! Sirik tanda tak mampu..

Tool On Demand :
  1. Ollydbg, bisa Anda dapatkan di www.ollydbg.de.
  2. File target “Target.exe” telah disertakan bersama artikel ini atau kunjungi website Saya di www.mrhpx.co.nr (Saya membuatnya secara pribadi untuk menghindari pelanggaran UU Hak cipta dan DMCA yang menyebalkan!)
  3. Pengetahuan tentang Assembly (Tidak tahu sama sekali juga tidak masalah :D )
  4. Red Palmall.. (Untuk motivasi dan Inspirasi.. Serta membantu meningkatkan pendapatan pajak pemerintah Republik Indonesia :D )
  5. Padi – Tempat Terakhir.mp3.. (Lagu yang bagus, untuk mengupdate database musik dan jiwa, ingat jangan membeli bajakan! :D )

Target Description
Karakter target seperti yang telah disebutkan diatas adalah menampilkan Nagscreen atau MessageBox di awal software dijalankan. Untuk menghilangkan tampilan Nagscreen MessageBox, user harus melakukan pembelian.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Screenshot NagScreen
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Tugas yang harus dikerjakan disini adalah menonaktifkan MessageBox atau kotak dialog pesan. Sehingga software tidak akan menampilkan MessageBox lagi diawal software dijalankan untuk selamanya.
Tidak ada hal yang lebih menyenangkan di bidang keamanan komputer selain melakukan analisa Reverse Engineering file Binary. Rekan-rekan yang penasaran terhadap isu Deface Website, Rootkit, Software Cracking, Penetrasi Sistem, DDoS, Buffer Overflow dan sejenisnya wajib mempelajari Reverse Engineering. Dari bidang inilah semua isu security berasal, baik mengenai Exploit, Vulnerable atau Bugs Sistem dan lain sebagainya. Sebelum membaca lebih lanjut Saya sangat merekomendasikan kepada Anda untuk membaca artikel Saya yang berjudul “Tutorial Injeksi Executable – Bagian 1 : MessageBox” dan “Tutorial Injeksi Executable-Bagian 2-Splash Screen” kedua artikel tersebut bisa membantu Anda dalam memahami dasar Reverse Engineering jika Anda menemui kesulitan saat membaca artikel ini.

The Beginning
Jalankan Ollydbg kemudian load “Target.exe”.. Tampilan akan terlihat seperti pada Screenshot dibawah ini. Khusus bagi Anda yang termasuk dalam tingkatan bukan newbie, disini Anda tentu sudah bisa membaca Entry Point (EP) dan menentukan langkah untuk mematahkan proteksi.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Screenshot Load Target
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
CATATAN : Address yang terdapat pada komputer Anda mungkin berbeda dengan yang terdapat pada artikel ini. Selalu ikuti Address pada komputer Anda.
Pada layar utama, Klik kanan->Search for->All referenced text strings. Setelah itu Anda akan berada pada jendela baru yang menampilkan bermacam-macam string, coba cari dan arahkan mouse Anda pada string yang bertuliskan “Software SHAREWARE KEREN #1 di Dunia dan Alam Bawah Sadar”, lalu klik ganda atau tekan enter.
Anda akan kembali lagi menuju jendela utama, coba Anda arahkan mouse satu baris ke atas tepatnya alamat 1314156F di instruksi “6A 24” atau “PUSH 24”. Anda akan menjumpai tanda panah berwarna merah “Conditional Jump” atau “Lompatan Dengan Memperhatikan Kondisi” yang berasal dari alamat 13141533 “EB 3A”.
MessageBox (Win32 Programmer’s Reference)
Fungsi MessageBox menciptakan, menampilkan dan mengoperasikan sebuah dialog pesan. Dialog pesan berisi suatu gambaran-aplikasi pesan dan judul, ditambah berbagai kombinasi dari tombol tekan dan ikon yang dikenal.
Info
Windows NT : Yes
Win95 : Yes
Win32s : Yes
Import Library : user32.lib
Header File : winuser.h
Unicode : WinNT; Win95
Platform Notes : None
Syntax
int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Screenshot Assembly Code
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Logical, Analyze, ATTACK.. CRACKadabra!™
Saat software dijalankan akan langsung menuju ke alamat 13141533 “EB 3A”. Yang berfungsi untuk menjalankan instruksi di alamat 1314156F “PUSH 24” yang berisi Nagscreen atau MessageBox. Di alamat 13141586 “CMP EAX,7” software melakukan pemeriksaan, yaitu :
  1. Jika user menekan “No” alamat 13141589 “JE SHORT TARGET.1314158D” maka kode akan mendarat di alamat 1314158D “PUSH 0” yang akan menyebabkan software exit.
  2. Sedangkan jika user menekan “Yes” alamat 1314158B “JMP SHORT TARGET.13141594” maka kode akan mendarat di alamat 13141594 “PUSH 0” yang akan menyebabkan software berjalan secara normal.
Dari data analisa diatas, maka bisa disimpulkan beberapa metode yang bisa dipakai untuk menonaktifkan Nagscreen atau MessageBox. Saya bukan tipe Hacker yang pelit ataupun tipe Hacker bego dan matre yang suka menjual teknik Hacker yang cepat basi, seperti kebanyakan buku Hacker mahal yang sering Anda temukan di toko buku online dan offline di sekitar Anda. Saya tidak ingin hanya memberikan satu metode saja, Saya lebih menyukai memberi Anda beberapa metode dalam pemecahan permasalahan. Orang yang hanya memiliki satu metode strategi dalam menghadapi lawan adalah orang yang cukup konyol. Beberapa metode yang bisa dipergunakan, yaitu :
  1. Metode 1 – JUMP
  2. Merubah lompatan, cara ini adalah cara paling efektif dan efisien. Yaitu merubah arah tujuan dari lompatan instruksi, teknik ini hanya memerlukan perubahan nilai 1 byte saja!
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Screenshot Method 1 – JUMP $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    Untuk menerapkan teknik ini cukup mudah, pada alamat 13141533 “JMP SHORT TARGET.1314156F”, rubahlah nilai “EB 3A” menjadi “EB 5F”. Hal ini akan membuat software tidak menghiraukan kode Nagscreen atau MessageBox dan langsung menuju alamat 13141594 “PUSH 0” untuk menjalankan program secara normal.. TANPA NAGSCREEN!
  3. Metode 2 – NOP
  4. Meniadakan proses instruksi, cara ini adalah cara efektif namun kurang efisien mengingat banyak terbentuknya Code Cave. Yaitu dengan meniadakan beberapa instruksi dengan cara merubahnya sebagai instruksi yang tidak dijalankan.
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Screenshot Method 2 – NOP $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    Untuk menerapkan teknik ini, cukup blok dengan cursor dari alamat 1314156F “PUSH 24” sampai dengan 13141581 “CALL <JMP.&USER32.MESSAGEBOXA>” (Referensi lihat Screenshot Assembly Code). Kemudian Klik kanan->Binary->Fill with NOPs. Hal ini akan membuat software tidak lagi mempunyai Nagscreen atau MessageBox, meskipun instruksi pemeriksaan masih ada namun tidak mempengaruhi kinerja software. Dengan begitu software akan menuju alamat 13141594 “PUSH 0” untuk menjalankan program secara normal.. TANPA NAGSCREEN!
Final Notes
Tugas sudah berhasil dikerjakan dengan baik, software “Target.exe” tidak lagi menampilkan Nagscreen atau MessageBox. Mudah bukan? Tidak sampai 1 Menit, Nagscreen berhasil dilumpuhkan. Software “Target.exe” hanyalah salah satu contoh nyata dari bugs shareware karena kelalaian Programmer (Mungkin saja programmernya dulu kuliah di jurusan ilmu manajemen dan kesehatan hewan seperti Saya, jadi sedikit lupa tentang cara pemrograman yang tepat :D ). Kenapa bisa begitu? Karena teknik diatas memakai “Text String” sebagai acuan.

No comments: