Random ClassName Form (WindowClass) di Delphi 7
Saat ini sudah banyak Virus atau Worm buatan lokal (anak indonesia) yang menggunakan tehnik pertahanan diri dengan cara membunuh aplikasi-aplikasi yang dianggap berpotensi untuk menghentikan proses penyebarannya, salah satunya yaitu dengan cara melakukan mass kill terhadap semua proses yang dibuat dengan Delphi.
Cara itu bisa dilakukan karena, secara default aplikasi VCL yang dibuat dengan Delphi akan diberikan classname atau nama WindowClass yang bersifat statik(?) dengan nama “TApplication” sebagai Application ClassName dan juga “TPUtilWindow” sebagai Util Window ClassName (penjelasan lebih lanjut silahkan googling xixixi).
Berikut ini Penulis akan memberikan beberapa tip dan trik untuk menghindari mass kill yang dilakukan oleh virus/worm pada kasus di atas.
Sebelum memulai, Tutup terlebih dahulu Delphi 7 nya kalau lagi aktif.
A. Random ClassName Application (TApplication)
1. Buka text editor kesayangan anda (cth: notepad) lalu copy dan paste kode berikut ini dan save ke folder project anda dengan nama RandomClass.pas
{ BEGIN }
unit RandomClass;
interface
uses
Windows;
function RandomStr(Len:integer): String;
implementation
function RandomStr(Len:integer): String;
var
chars: string;
begin
Randomize;
chars := '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
Result := '';
Len := Random(len);
if Len < 5 then Len := Len + 5;
repeat
Result := Result + chars[Random(Length(chars)) + 1];
until (Length(Result) = Len);
end;
end.
{ END }
2. Copy unit Forms.pas milik Delphi yang berada di dalam folder [DRIVE]:\Program Files\Borland\Delphi7\Source\Vcl, kemudian Paste ke dalam folder Project anda.
3. Buka Forms.pas tersebut dengan text editor lalu tambahkan unit RandomClass pada uses nya.
21: {$IFDEF MSWINDOWS}
22: uses Messages, Windows, SysUtils, Classes, Graphics, Menus, Controls, Imm,
23: ActnList, MultiMon, HelpIntfs, RandomClass;
24: {$ENDIF}
4. Masih pada Forms.pas Tambahkan kode berikut ini di bawah baris ke 6315 yang ada pada procedure TApplication.CreateHandle;
Kode: WindowClass.lpszClassName := PChar(RandomStr(10));
Sehingga menjadi seperti berikut ini:
6315: {$ENDIF}
6316: WindowClass.lpszClassName := PChar(RandomStr(10));
6317: WindowClass.lpfnWndProc := @DefWindowProc;
B. Random ClassName Util Window (TPUtilWindow)
1. Copy unit Classes.pas milik Delphi yang berada di dalam folder [DRIVE]:\Program Files\Borland\Delphi7\Source\ Rtl\Common, kemudian Paste ke dalam folder Project anda.
2. Buka Classes.pas tersebut dengan text editor lalu tambahkan unit RandomClass pada uses nya.
27: {$IFDEF MSWINDOWS}
28: uses Windows, Messages, SysUtils, Variants, TypInfo, ActiveX, RandomClass;
29: {$ENDIF}
3. Masih pada Classes.pas Tambahkan kode berikut ini di bawah baris ke 11042 yang ada pada function AllocateHWnd(Method: TWndMethod): HWND;
Kode: UtilWindowClass.lpszClassName := PChar(RandomStr(10));
Sehingga menjadi seperti berikut ini:
11042: {$ENDIF}
11043: UtilWindowClass.lpszClassName := PChar(RandomStr(10));
11044: ClassRegistered := GetClassInfo(HInstance, UtilWindowClass.lpszClassName,
11045: TempClass);
C. Random ClassName Form
1. Copy unit Controls.pas milik Delphi yang berada di dalam folder [DRIVE]:\Program Files\Borland\Delphi7\Source\ Vcl, kemudian Paste ke dalam folder Project anda.
2. Buka Controls.pas tersebut dengan text editor lalu tambahkan unit RandomClass pada uses nya.
26: {$IFDEF MSWINDOWS}
27: Messages, Windows, MultiMon, Classes, SysUtils, Graphics, Menus, CommCtrl,
28: Imm, ImgList, ActnList, RandomClass;
29: {$ENDIF}
3. Masih pada Controls.pas Edit kode StrPCopy(WinClassName, ClassName); yang ada pada baris ke 5973 di dalam procedure TWinControl.CreateParams(var Params: TCreateParams);
Kode: StrPCopy(WinClassName, RandomStr(10));
Sehingga menjadi seperti berikut ini:
5968: WindowClass.style := CS_VREDRAW + CS_HREDRAW + CS_DBLCLKS;
5969: WindowClass.lpfnWndProc := @DefWindowProc;
5970: WindowClass.hCursor := LoadCursor(0, IDC_ARROW);
5971: WindowClass.hbrBackground := 0;
5972: WindowClass.hInstance := HInstance;
5973: StrPCopy(WinClassName, RandomStr(10));
D. Random Caption Window/Form
Tambahkan unit RandomClass pada uses Form1 (disesuaikan).
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RandomClass;
Kemudian tambahkan kode berikut ini pada Event FormCreate.
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title := RandomStr(30);
Caption := RandomStr(50);
end;
{ sekian }
Jalankan Delphi 7 kemudian buka Project anda.
Compile Project dengan menekan Tombol CTRL+F9 (2x) lalu F9 (Run).
Bagi yang hanya ingin mengganti TApplication atau TPUtilWindow tanpa menggunakan unit RandomClass, hanya perlu mengedit string pada baris-baris berikut ini:
TApplication -> Forms.pas -> Baris ke 6211: lpszClassName: 'TApplication');
TPUtilWindow -> Classes.pas -> Baris ke 11032: lpszClassName: 'TPUtilWindow');
Semoga Tip Trik ini bisa berguna bagi anda terutama bagi mereka yang suka membuat antivirus maupun cleaner dengan Delphi.
Selamat Mencoba :)