Bagian 2 Rekayasa Terbalik Delphi
Saat ini, Borland tidak menyediakan produk apa pun untuk mendekompilasi file yang dapat dieksekusi (.exe) atau "file kompilasi Delphi" (.dcu) menjadi kode program mentah (.pas).
Unit kompilasi Delphi: DCU ( Unit kompilasi Delphi: DCU )
Ketika proyek Delphi dikompilasi atau dijalankan, file unit kompilasi (.dcu) dihasilkan. Secara default, versi kompilasi setiap unit disimpan dalam file biner terpisah. Nama file sama dengan file unit, dan ekstensinya adalah .DCU. Misal: file unit1.dcu berisi kode dan data yang dideklarasikan pada file unit1.pas.
Artinya, jika Anda memiliki sumber daya tertentu, seperti komponen yang dikompilasi, yang harus Anda lakukan hanyalah mendekompilasinya dan mendapatkan kode sumbernya. Salah, format file DCU tidak berdokumen (format pemilik) dan dapat berubah dari versi ke versi.
Setelah kompiler: Delphi Reverse Engineering
Jika Anda mencoba mendekompilasi file Delphi yang dapat dieksekusi, ada beberapa hal yang harus Anda ketahui:
File program sumber Delphi biasanya disimpan dalam dua jenis file: file kode ASCII (.pas, .dPR) dan file sumber daya (.res, .rc, .dfm, .dcr). File Dfm berisi detail (properti) objek yang terdapat dalam formulir. Saat membuat file yang dapat dieksekusi, Delphi menyalin informasi dalam file .dfm ke file kode .exe yang telah selesai. File formulir menjelaskan setiap komponen dalam formulir, termasuk semua nilai properti stabil. Setiap kali kita mengubah posisi formulir, judul tombol, atau menetapkan prosedur acara ke komponen, Delphi mencatat perubahan ini dalam file DFM (bukan kode untuk prosedur acara—itu disimpan dalam file pas/dcu) . Untuk mendapatkan 'dfm' dari executable, kita perlu memahami jenis sumber daya apa yang disimpan dalam executable Win32.
Semua program yang dikompilasi oleh Delphi memiliki bagian-bagian berikut: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. Dari sudut pandang dekompilasi, bagian terpentingnya adalah: CODE, .rsrc. Dalam artikel "Menambahkan fungsionalitas ke program Delphi" ("Menambahkan fungsionalitas ke program Delphi") (penambahan penerjemah: satu demi satu), beberapa hal menarik tentang format eksekusi Delphi, informasi kelas dan sumber daya DFM dibahas: Bagaimana Menetapkan acara ke event handler lain yang ditentukan dalam bentuk yang sama. Cara menambahkan event handler Anda sendiri untuk menambahkan kode ke file yang dapat dieksekusi untuk mengubah judul tombol.
Di antara berbagai jenis sumber daya yang disimpan dalam file .exe, RT_RCDATA atau sumber daya yang ditentukan aplikasi (data mentah) memiliki informasi yang terdapat dalam file DFM sebelum kompilasi. Untuk memilih data DFM dari file .exe, kita dapat memanggil fungsi API EnumResourceNames... Untuk informasi lebih lanjut tentang memilih data DFM dari file .exe, silakan merujuk ke: "Coding a Delphi DFM explorer" ("Menulis Detektor DFM Delphi"). (Penerjemah menambahkan: Diterjemahkan satu demi satu)