Tutorial Injeksi Executable – Splash Screen

Sabtu, 31 Maret 2012

Share This Article On :
Pernahkah Anda melihat Splash Screen bergambar pada sebuah software, entah itu software
trial utilities, Game dan lainnya? Artikel ini akan menunjukkan kepada Anda bagaimana cara
menyisipkan sebuah Splash Screen bergambar dengan menggunakan bitmap yang akan muncul secara
otomatis setiap kali software dijalankan. Artikel ini sedikit banyak hampir sama dengan artikel
sebelumnya “Tutorial Injeksi Executable – MessageBox”. Pembahasan masih dalam lingkup

Portable Executable (PE)
. Yang membedakan pada artikel kali ini adalah teknik pada penerapan injeksi.
Sebelum membaca artikel ini Saya harap Anda mempunyai latar belakang atau dasar
pemrograman bahasa C/C++/ASM, Portable Executable dan Reverse Engineering. Hal tersebut akan
membantu dan mempermudah Anda untuk memahami artikel ini. Maaf, Saya sudah berusaha
menyederhanakan pembahasan pada artikel ini agar bisa dipahami oleh semua orang, namun jika masih
sulit dipahami Saya mohon maaf. Karena dasar ilmu Saya adalah dunia peternakan bukan komputer, jadi
Saya tidak bisa menjelaskan dengan gaya bicara programmer pada umumnya.. :)
Beberapa hal yang perlu Anda persiapkan adalah :
  1. IID King v1.0 buatan SantMat dari tim Reverse Engineering Immortal Descendants.
  2. Notepad atau teks editor yang Anda sukai.
  3. Assembler (Saya menggunakan Microsoft Macro Assembler atau MASM link download silahkan cari di Google).
  4. Target file executable.
  5. Palmall cigarettes, a cup of coffe and Cradle of Filth-Beyond Eleventh Hour.mp3 (Anti ngantuk :) )
  6. MRHPx Splash Add, program ini mampu menyisipkan Splash Screen bitmap secara instant. Anda
bisa mempergunakan program ini jika Anda bosan membaca artikel Saya.
CATATAN : File target, source code dan tool telah disertakan bersama artikel ini. Jika tidak tersedia Anda
bisa mendownloadnya di website Saya. Untuk mendapatkan source code yang lain, silahkan melalui
kontak email Saya.

Teori Yang Membosankan
Sedikit berbicara tentang teori. Menyisipkan sebuah kode Splash Screen seperti Dialog Window
(Jendela) dan resource eksternal pada file executable bukanlah hal yang mudah, semuanya tergantung
pada keahlian Reverse Engineering yang Anda miliki, karena jika terjadi kesalahan akan membuat file
executable menjadi rusak. Terlebih lagi persoalan menjadi semakin rumit jika Anda menghadapi file
executable yang tidak memiliki resource ataupun IMPORT API LIBRARY yang diperlukan. Karena tidak
seorangpun di dunia ini yang rela menghabiskan waktunya di depan komputer melakukan puluhan
proses injeksi hanya untuk membuat jendela dialog membosankan yang bernama “Splash Screen” pada
sebuah file executable..:)
Untuk menyisipkan sebuah file bergambar atau bitmap image sebenarnya sangat mungkin untuk
diterapkan pada file Portable Executable (PE). Cara yang bisa dipergunakan salah satunya adalah dengan
membuat file DLL (Dinamic Link Library) sebagai resource dari Splash Screen bitmap. Setelah proses
injeksi, program akan menjalankan fungsi EXPORT LIBRARY yang terdapat pada file DLL. Meskipun hal
tersebut mungkin sedikit menghabiskan waktu daripada menyisipkan sebuah kode sederhana.

Step 1 : Membuat file Dynamic Link Library (DLL) dengan Assembly
a) The DLL
Fungsi DllEntryPoint adalah suatu metode masukan opsional ke dalam sebuah dynamic-link
library (DLL). Jika fungsi dipergunakan, maka akan dipanggil oleh sistem saat proses dan thread
diinisialisasi dan diakhiri, atau saat dipanggil ke fungsi LoadLibrary dan FreeLibrary.
DllEntry Proc hInst:DWord, reason:DWord, reserved1:DWord
.If reason==DLL_PROCESS_ATTACH

Push hInst

Pop hInstance

Call ShowBitMap

.EndIf

Mov Eax,TRUE

Ret

DllEntry EndP
b) The Bitmap
Proses ini dipergunakan untuk menampilkan Bitmap image Splash Screen yang berada pada
resource. Pada proses ini terdapat beberapa struktur yang dipergunakan antara lain :
- WNDCLASSEX
Import Library : -
Header File : winuser.h
Struktur WNDCLASSEX berisi informasi kelas window. Dipergunakan bersama fungsi
RegisterClassEx dan GetClassInfoEx. Struktur WNDCLASSEX mirip dengan struktur WNDCLASS.
Terdapat 2 perbedaan. WNDCLASSEX meliputi anggota cbSize, yang menetapkan struktur
ukuran, dan anggota hIconSm, yang berisi handle terhadap sebuah ikon kecil yang berhubungan
dengan kelas jendela.
- MSG
Import Library : -
Header File : winuser.h
Struktur MSG berisi informasi pesan dari suatu thread urutan pesan.
- CreateWindowEx
Import Library : user32.lib
Header File : winuser.h
Fungsi CreateWindowEx menciptakan suatu overlap, pop-up, atau anak jendela dengan suatu
perluasan gaya. Fungsi ini identik dengan fungsi CreateWindow.
ShowBitMap Proc
Local wc:WNDCLASSEX

Local msg:MSG

Local hwnd:HWND
Mov wc.cbSize, SizeOf WNDCLASSEX
Mov wc.style, CS_HREDRAW Or CS_VREDRAW

Mov wc.lpfnWndProc, Offset WndProc

Mov wc.cbClsExtra, NULL

Mov wc.cbWndExtra, NULL

Push hInstance

Pop wc.hInstance

Mov wc.hbrBackground, COLOR_WINDOW+1

Mov wc.lpszMenuName, NULL

Mov wc.lpszClassName, Offset NamaKelas

Invoke LoadIcon, NULL, IDI_APPLICATION

Mov wc.hIcon, Eax

Mov wc.hIconSm, 0

Invoke LoadCursor, NULL, IDC_ARROW

Mov wc.hCursor, Eax

Invoke RegisterClassEx, Addr wc

Invoke CreateWindowEx, NULL, Addr NamaKelas, NULL,\

WS_POPUP, CW_USEDEFAULT,\

CW_USEDEFAULT, 257, 309, NULL, NULL,\

hInstance, NULL

Mov hwnd, Eax

Invoke ShowWindow, hwnd, SW_SHOWNORMAL

.While TRUE

Invoke GetMessage, Addr msg, NULL, 0, 0

.Break .If (!Eax)

Invoke TranslateMessage, Addr msg

Invoke DispatchMessage, Addr msg

.EndW

Mov Eax, msg.wParam

Ret

ShowBitMap EndP
c) The Window
Proses ini dipergunakan untuk menampilkan jendela dialog. Pada proses ini terdapat beberapa
struktur yang dipergunakan antara lain :
- PAINTSTRUCT
Import Library : -
Header File : winuser.h
Struktur PAINTSTRUCT berisi informasi untuk sebuah aplikasi. Informasi ini bisa dipergunakan
untuk mengecat area klien pada suatu jendela yang dimiliki oleh aplikasi.
- RECT
Import Library : -
Header File : windef.h
Struktur RECT menggambarkan kordinat sudut kiri atas dan kanan bawah sebuah segi empat.
- Timer
Import Library : user-defined
Header File : winuser.h
Fungsi TimerProc adalah suatu fungsi gambaran-aplikasi callback yang memproses pesan
WM_TIMER.
WndProc Proc hWnd:DWord,uMsg:DWord,wParam:DWord,lParam:DWord
Local ps:PAINTSTRUCT

Local hdc:HDC

Local hMemoryDC:HDC

Local hOldBmp:DWord

Local bitmap:BITMAP

Local DlgHeight:DWord

Local DlgWidth:DWord

Local DlgRect:RECT

Local DesktopRect:RECT
.If uMsg==WM_DESTROY
.If PenangananBitmap!=0

Invoke DeleteObject, PenangananBitmap

.EndIf

Invoke PostQuitMessage, NULL

.ElseIf uMsg==WM_CREATE

Invoke GetWindowRect, hWnd, Addr DlgRect

Invoke GetDesktopWindow

Mov Ecx, Eax

Invoke GetWindowRect, Ecx, Addr DesktopRect

Push 0

Mov Eax, DlgRect.bottom

Sub Eax, DlgRect.top

Mov DlgHeight, Eax

Push Eax

Mov Eax, DlgRect.right

Sub Eax, DlgRect.left

Mov DlgWidth, Eax

Push Eax

Mov Eax, DesktopRect.bottom

Sub Eax, DlgHeight

Shr Eax, 1

Push Eax

Mov Eax, DesktopRect.right

Sub Eax, DlgWidth

Shr Eax, 1

Push Eax

Push hWnd

Call MoveWindow

Invoke LoadBitmap, hInstance, Addr NamaBitmap

Mov PenangananBitmap, Eax

Invoke SetTimer, hWnd, 1, 5000, NULL

Mov Timernya,Eax

.ElseIf uMsg==WM_TIMER

Invoke SendMessage, hWnd, WM_LBUTTONDOWN, NULL, NULL

Invoke KillTimer, hWnd, Timernya

.ElseIf uMsg==WM_PAINT

Invoke BeginPaint, hWnd, Addr ps

Mov hdc, Eax

Invoke CreateCompatibleDC, hdc

Mov hMemoryDC, Eax

Invoke SelectObject, Eax, PenangananBitmap

Mov hOldBmp, Eax

Invoke GetObject, PenangananBitmap, SizeOf BITMAP, Addr bitmap

Invoke StretchBlt, hdc, 0, 0, 257, 309,\

hMemoryDC, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY

Invoke SelectObject, hMemoryDC, hOldBmp

Invoke DeleteDC, hMemoryDC

Invoke EndPaint, hWnd, Addr ps

.ElseIf uMsg==WM_LBUTTONDOWN

Invoke DestroyWindow, hWnd

.Else

Invoke DefWindowProc, hWnd, uMsg, wParam, lParam

Ret

.EndIf

Xor Eax, Eax

Ret

WndProc EndP
d) The Export
Agar file DLL bisa berjalan normal, Anda harus membuat file *.DEF, misal : Splash.Def. Agar fungsi export
bisa berada dalam export tabel DLL. Kode “Splash.asm” sebenarnya tidak secara spesifik menggunakan
export seperti program “DLL NORMAL” pada umumnya, jadi sebagai contoh Saya sengaja memasukkan
2 buah proses yang ada. Bagi Saya yang penting program bisa berjalan sesuai harapan, untuk hal lain
seperti teori silahkan mempelajarinya di bangku kuliah, karena Saya tidak menyukai kuliah bidang
komputer! Biayanya terlalu mahal.. :(
LIBRARY SPLASH.DLL
EXPORTS ShowBitMap

EXPORTS WndProc
CATATAN : Jangan menyalin kode pada halaman ini untuk menghindari kesalahan coding. Silahkan
pergunakan kode yang telah disertakan. Saya sarankan Anda membaca terlebih dahulu penjelasan yang
terdapat dalam Source Code.

Step 2 : CRACKadabra®.. Jadilah program ajaib!
Untuk melakukan proses compile, silahkan Anda klik ganda file dengan nama “Compile.bat”.
Jangan lupa sebelum melakukan proses compile, sesuaikan terlebih dahulu konfigurasi compiler MASM
yang terdapat pada komputer Anda.
Contoh :
set letak=C:\masm32\bin

set include=C:\masm32\include

set lib=C:\masm32\lib

Screenshot Compile.bat

Step 3 : Proses injeksi file executable.

Screenshot Target.exe
  • Jalankan tool “IID King” load file “Target.exe”.. Jangan lupa berilah tanda cek pada menu Backup agar jika terjadi kesalahan pada saat injeksi, Anda bisa mengembalikan semua lagi.
  • Pada kolom “Dll’s Name” masukkan nama file DLL yang akan Anda pergunakan, misal “Splash.dll”
  • Pada kolom “Function’s Name (case sensitive)” Masukkan salah satu fungsi export yang diperlukan, Anda bisa mendapatkan fungsi export ini pada file “Splash.def”. Misal masukkan fungsi export “ShowBitmap” (tanpa tanda kutip). Untuk menambahkan fungsi export cukup klik tombol “+”, untuk menghapus fungsi export yang tidak Anda inginkan cukup klik tombol “-“.
  • Setelah itu klik tombol “Add them!!” untuk melakukan injeksi pada target executable. Jika semua berjalan lancar, maka file target yang telah Anda injeksi akan menampilkan Splash Screen setiap kali executable dijalankan.

Screenshot IID King

Final notes :
File “Target.exe” yang dijalankan, secara otomatis akan me-load semua link statis DLL pada Import
Table, misal “Splash.dll” dan kemudian mengirim DLL_PROCESS_ATTACH kepada program target.
Perhatikan section baru dengan nama “.IIDKing” setelah terjadi proses injeksi. Dari sini bisa diketahui
tentang cara kerja file DLL tersebut beserta injeksinya. Mudah bukan? Saya harap Anda tidak menemui
kesulitan dalam mempelajari injeksi executable dari artikel “Tutorial Injeksi Executable –
MessageBox”
sampai dengan artikel “Tutorial Injeksi Executable – Splash Screen”. Bagi Anda
yang tidak sempat membaca artikel ini atau mungkin bosan membaca artikel ini, dan ingin
menggunakan cara instant langsung jadi seperti memasak mie instant, Anda bisa menggunakan software
MRHPx Splash Add
..

Screenshot MRHPx Splash Add
Teknik ini juga bisa dipergunakan untuk melakukan injeksi yang lain, tidak hanya Splash Screen.
Bayangkan saja jika ada orang yang melakukan injeksi program worm, exploit dan malware lainnya yang
merugikan ke dalam executable? Bukan MessageBox ataupun Splash Screen? Tentunya hal tersebut
akan sangat merugikan. Solusi dari Saya adalah lakukan “Section Dump” atau “Extract Overlay”
kemudian lakukan analisa Reverse Engineering (Bukan begitu saudara Apakekdah? ). Hal tersebut
setidaknya akan membantu Anda memperoleh informasi yang cukup tentang malware yang disisipkan di
dalam executable. Sebagai catatan, Antivirus tidak selalu bisa diandalkan untuk hal seperti ini. Semoga
artikel ini bisa memberi manfaat bagi Anda dan membantu Anda menjaga diri Anda dari kejahatan
cyber. Terima kasih.
MRHPx regards and messages :
  • My family for love, peace and emphaty.. Allah SWT and Muhammad SAW for life, light and everything..
  • Reverse Code Engineering scene, Astalavista.MS, Blackhat Community, 0day,Indonesia veteran hAxx0r (You know who you are.. :) )
  • Source code semua program atau hack tool (EXCEPT PRIVATE-SECRET TOOLS!) dari seluruh artikel dan rilis NeMeSiS_ByTe dan MRHPx bisa diperoleh dengan cara kontak melalui email baru Saya di atas.. Ehm, sori ganti Nickname sejak 2008 tidak lagi sebagai NeMeSiS_ByTe :) Juga ganti email, ganti website, ganti peruntungan! :) Long live reverser..!
PENTING :
  • Jika Anda request software atau tool yang tidak terdapat di website Saya atau sulit didapatkan (baik software gratis atau berbayar), harap mengganti biaya bandwith internet (Download Broadband) dan biaya pengiriman (CD Distribusi Pos). Harap maklum, Saya bukan milyuner yang mempunyai banyak uang, Saya tidak mungkin membiayai setiap request software dan tool yang Anda butuhkan.
  • Untuk keperluan apapun harap menghubungi Saya melalui email Yahoo atau Facebook, karena nomer telpon Saya hanya untuk keperluan bisnis dan pekerjaan. Bukan dipergunakan untuk CHAT dan tanya jawab.

Tidak ada komentar:

Posting Komentar

 
© Copyright 2010-2011 Media Pengetahuan All Rights Reserved.
Template Design by Herdiansyah Hamzah | Published by Borneo Templates | Powered by Blogger.com.