[caption id="attachment_590" align="aligncenter" width="580"]
Anti keylogger[/caption]Kali ini saya akan membuat eksperimen dengan engine antivirus sederhana yang dipaketkan dalam semuah library atau DLL (Dynamic Link Library), mungkin akan lain cerita namanya di Mac jadi .dynlib, di Linux jadi .so. Engine ini dipaketkan dalam bentuk library hingga bisa dipakai program/aplikasi lain bertujuan untuk mendeteksi suatu prorgram/aplikasi Windows apakah keylogger atau bukan.
Engine ini dikembangkan oleh Yudha Tri Putra, blog ini hanya menyampaikan pengimplementasiannya di Lazarus RAD IDE.
Algoritma yang digunakan sederhana dan tentu tingkat ke-akuratannya bisa mencapai lebih dari 90% . Jika file program positif keylogger, maka akan menampilkan pesan seperti gambar diatas. Adapun cara pemakaiannya dalam Bahasa pemrograman ObjPascal (Bahasa yang dipakai Lazarus) adalah sebagai berikut:
procedure scandong(filename :string); external 'engine.dll';
procedure scandong(filename :string); external 'engine.dll';
Lalu tambahkan pada event onClick Button1:
begin
If OpenDialog1.Execute then
Edit1.Text :=OpenDialog1.FileName;
end;
Lalu pada event onClick Button2:
begin
scandong(edit1.Text); //lakukan scan pada file yang tertera di object edit1
end;
Oke, sampai sini selesai. Atau ini listing lengkapnya:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, process, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
OpenDialog1: TOpenDialog;
Process1: TProcess;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
procedure scandong(filename :string); external 'engine.dll';
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute then
Edit1.Text :=OpenDialog1.FileName;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
scandong(edit1.Text);
end;
end.
Bagaimana cara kerjanya?
Dalam prosesnya, fungsi scandong yang di terdapat dan di export pada file engine.dll tersebut melakukan pencarian terhadap string "_Z8KeyEventijl@12" pada file. Apakah string "_Z8KeyEventijl@12" ini? string ini terdapat pada program yang melakukan fungsi hook SetWindowsHook dengan ID hook "WH_KEYBOARD_LL" atau disebut juga lowlevel hook keyboard.
String tersebut selalu ter-export pada program yang melakukan hook keyboard secara lowlevel, untuk program biasa tentu tidak akan melakukannya, sehingga kemungkinan False Alarm sangat kecil. Biasanya, program lain saat melakukan pengecekkan apakah suatu key pada keyboard telah ditekan atau tidak biasanya menggunakan Windows API GetAsyncKeyState, meskipun cara ini juga dipakai oleh kebanyakan keylogger.
Anda bisa melihatnya pada file sample yang saya sertakan pada file arsip project ini dengan PEiD, string tersebut terlihat pada bagian Exports Viewer (lihat gambar):


Izin pengunaan
bebas, boleh digunakan untuk tujuan apapun selama tidak mengubah atau memodifikasi file DLL ini.
untuk mendapatkan versi yang tanpa messagebox, anda bisa PM (Private Message) Yudha melalui facebook.
Link Download
dalam file arsip download tersebut berisi:
* testengine.exe (contoh program yang menggunakan file library)
* engine.dll (file library)
* 1.exe (sample keylogger)
referensi : http://support.microsoft.com/kb/815065/id-id
Semoga Bermanfaat :)


ConversionConversion EmoticonEmoticon