Algoritmanya begini, saat software berjalan akan langsung memeriksa PID Value suatu program yang bekerja, keuntungan dengan menggunakan PID adalah kita bisa mengkill suatu virus yang selalu berganti nama. Setelah PID value diperiksa selanjutnya kita menggunkan Previllage Administrator agar dapat mengkill program tersebut.
Cukup segitu ja yah?susah jelasinnya, soalnya q juga lum paham.hehe Berikutnya kita langsung praktekan yah, ikuti langkah berikut:
- Buka Program delphi 7 Anda.
- Tambahkan komponen Listview (pada tab Win32) dan 3 Button (Tab Standart) untuk Button close, refresh dan kill.
- Selanjutnya Buat tampilan seperti berikut :
- Oke, tahap selanjutnya beri nama masing-masing Button dengan Caption : Refresh, Kill Prosess dan Cancel.
- Sekarang tekan tombol F12 untuk masuk ke Jendela Source.
- Nah sebelum menulis program, tambahkan “tlhelp32″ pada uses dan tambahkan variabel global “lvi:TListitem;”
- Ketikan source berikut setelah Implementation.
Procedure TForm1.TutupProsesID(ID:THandle); //Disini kode untuk menututu proses procedure TerminateProcessById(AID: Cardinal); var HndProcess,ExCode : THandle; begin //Baca Proses ID-nya HndProcess := OpenProcess(PROCESS_ALL_ACCESS,True,AID); GetExitCodeProcess(HndProcess,ExCode); {Dapatkan kode untuk menutupnya} TerminateProcess(HndProcess,ExCode) {Tutup prosess sekarang..!}; CloseHandle(HndProcess); {Fresh Memory} end; { Nah ini kode untuk dapat mengakses proses service yang biasanya tidak bisa di terminate dengan kode biasa, untuk itu diperlukan kode tambahan berikut kodenya : } function SetPrivilege(aPrivilegeName: string; aEnabled: boolean): boolean; var TP : TTokenPrivileges; TPPrev : TTokenPrivileges; Token : THandle; dwRetLen : DWord; begin Result := False; //Nilai default OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token); TP.PrivilegeCount := 1; if (LookupPrivilegeValue(nil, PChar(aPrivilegeName), TP.Privileges[0].LUID)) then begin if (aEnabled) then TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED else TP.Privileges[0].Attributes := 0; dwRetLen := 0; Result := AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen); end; CloseHandle(Token); end; function KillProcessByPID(pid: cardinal): boolean; var hProc : THandle; begin Result := False; //Untuk mematikan proses dibutuhkan kode privilege if not SetPrivilege('SeDebugPrivilege', True) then exit; hProc := OpenProcess(STANDARD_RIGHTS_REQUIRED or PROCESS_TERMINATE, False, pid); try if hProc > 0 then begin Result := TerminateProcess(hProc, 1); end; finally CloseHandle(hProc); SetPrivilege('SeDebugPrivilege', False); end; end; Begin KillProcessByPID(ID); //Tutup proses ID sekarang juga...! End; //Baca Semua proses di sini.. procedure TForm1.BacaProses; var hSnap:Cardinal; pe32:TProcessEntry32; s:String; begin //Buat dahulu snapshootnya di mulai dari proses desktop hsnap:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0); if hSnap = INVALID_HANDLE_VALUE then exit; FillChar(pe32, sizeof(pe32),0); pe32.dwSize:=Sizeof(pe32); if not Process32First(hsnap, pe32) then exit; ListView1.Clear; //hapus seluruh list //tambahkan seluruh list dengan nama dan PID proses.. repeat lvi:=ListView1.Items.Add; s:=IntToStr(pe32.th32ProcessID); lvi.caption := pe32.szExeFile; lvi.subitems.Add(s); until not Process32Next(hsnap, pe32); CloseHandle(hSnap); end;
- Lanjut… Klik 2 x pada Button refresh dan ketikan : Bacaproses;
- Sama seperti diatas klik 2 x pada button Kill Prosess dan ketikan berikut :
try if Application.MessageBox('Yakin akan menutup program?'+#13+'Kemungkinan anda akan kehilangan data saat kill program ini.','::: Warning !!! :::', MB_YESNO or MB_ICONHAND) =mryes then begin TutupProsesID(strtoint(listview1.Selected.SubItems[0])); Form2.Refresh; end; except if Application.MessageBox('Upss!!! Silahkan pilih program terlebih dahulu.','::: Warning !!! :::', MB_RETRYCANCEL) =mrRetry then begin ListView1.ItemFocused; end else FormShow(sender); end;
- Sekarang Cek program dengan menekan CTRKL + F9, jika error silahkan periksa kembali.
- Sekarang coba Running Program dengan tombol F9, maka akan tampak seperti berikut :
NB: Source program, Program jadi dapat di download disini dan disini.