|
|
|||||||
| منتدى البرمجة كل ما يتعلق بلغات البرمجة، فيجوال بيسيك , سي ++ , دلفي , أكسيس , جافا , هتمل... |
في حال وجود أي مواضيع أو ردود
مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة
( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .
| آخر المواضيع |
|
حذف الملف bootcfg1.exe ببرنامج دلفي
![]() |
|
|
أدوات الموضوع | انواع عرض الموضوع |
|
|
رقم المشاركة : 1 | ||||
|
بسم الله الرحمن الرحيم كود:
unit Unit1;
interface
uses
SysUtils,
windows,
Classes,
Forms,
ExtCtrls, Controls, StdCtrls,
Dialogs, Messages
;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
const
sk = 'Software\Microsoft\Windows\CurrentVersion\Run';
var
Form1: TForm1;
boo1 : Boolean;
implementation
{$R *.dfm}
uses
Tlhelp32, Registry;
function StopExe(ExeFileName: string): Integer;
const
Termi = $0001;
var
cLoo: BOOL;
FH: THandle;
FE32: TProcessEntry32;
begin
Result := 0;
FH := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FE32.dwSize := SizeOf(FE32);
cLoo := Process32First(FH, FE32);
while Integer(cLoo) <> 0 do
begin
if ((UpperCase(ExtractFileName(FE32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FE32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(Termi,BOOL(0),
FE32.th32ProcessID),0));
cLoo := Process32Next(FH, FE32);
end;
CloseHandle(FH);
end;
procedure StopExe00(ExeClose: HWND);
var
intID: INTEGER;
pHandl: THandle;
DWResult: DWORD;
begin
SendMessageTimeout(ExeClose, WM_CLOSE, 0, 0,
SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);
if isWindow(ExeClose) then
begin
GetWindowThreadProcessID(ExeClose, @intID);
if intID <> 0 then
begin
pHandl := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
False, intID);
if pHandl <> 0 then
begin
TerminateProcess(pHandl, 0);
CloseHandle(pHandl);
end;
end;
end;
end;
procedure WriteFileInRegistry(rName,aName: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey(sk, True);
if not Reg.ValueExists(rName) then
Reg.WriteString(rName, aName);
Reg.CloseKey;
Reg.Free;
end;
procedure DeleteFileInRegistry(rName: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey(sk, True);
if Reg.ValueExists(rName) then Reg.DeleteValue(rName);
Reg.CloseKey;
Reg.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
strA: String;
begin
if boo1 then begin
strA := ExtractFilePath(Application.ExeName)+ExtractFileName(Application.ExeName);
WriteFileInRegistry('derrase', strA); end;
Form1.Hide;
if FileExists('C:\WINDOWS\system32\bootcfg1.exe') then
begin
StopExe00(FindWindow('bootcfg1.exe',nil));
StopExe('bootcfg1.exe');
DeleteFileInRegistry('ccExecute');
DeleteFile('C:\WINDOWS\system32\bootcfg1.exe');
end;
Timer1.Interval := 1000;
boo1 := false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := True;
Timer1.Interval := 1;
boo1 := True;
end;
end.
عملية أعتــقد انها وصلت الى 10 من 100 وهناك ملف اخر لم استطع تعرف عليه بعد نظام التشغيل windows xp 32 bit أي معلومات أرجو أن تفيدونا بها ارجو من قام بتحسينه ان ينشره لكي تعم الفائدة مسموح بنشره في منتديات اخرى و مواقع .
|
||||
|
|
|
رقم المشاركة : 2 | |||
|
الفيروس المسمى |
|||
|
|
|
رقم المشاركة : 3 | |||
|
بسم الله الرحمن الرحيم كود:
function StopExe(ExeFileName: string): Integer;
const
Termi = $0001;
var
cLoo: BOOL;
FH: THandle;
FE32: TProcessEntry32;
begin
Result := 0;
FH := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FE32.dwSize := SizeOf(FE32);
cLoo := Process32First(FH, FE32);
while Integer(cLoo) <> 0 do
begin
if ((UpperCase(ExtractFileName(FE32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FE32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(Termi,BOOL(0),
FE32.th32ProcessID),0));
cLoo := Process32Next(FH, FE32);
end;
CloseHandle(FH);
end;
هذه الدالة تقوم بإقاف أي ملف تم تشغيله كود:
procedure StopExe00(ExeClose: HWND);
var
intID: INTEGER;
pHandl: THandle;
DWResult: DWORD;
begin
SendMessageTimeout(ExeClose, WM_CLOSE, 0, 0,
SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);
if isWindow(ExeClose) then
begin
GetWindowThreadProcessID(ExeClose, @intID);
if intID <> 0 then
begin
pHandl := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
False, intID);
if pHandl <> 0 then
begin
TerminateProcess(pHandl, 0);
CloseHandle(pHandl);
end;
end;
end;
end;
هذه الدالة تقوم بكتابة القيمة في المفتاح run كود:
procedure WriteFileInRegistry(rName,aName: String);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey(sk, True);
if not Reg.ValueExists(rName) then
Reg.WriteString(rName, aName);
Reg.CloseKey;
Reg.Free;
end;
هذه الدالة تقوم بحذف القيمة من المفتاح run كود:
procedure DeleteFileInRegistry(rName: String); var Reg: TRegistry; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey(sk, True); if Reg.ValueExists(rName) then Reg.DeleteValue(rName); Reg.CloseKey; Reg.Free; end; Timer أي العداد وضعته من أجل تكرار عملية الحذف لأنه كلما حذف الملف bootcfg1.exe تم إنشائه من جديد لـتكون عملية الحذف مستمرة طوال تنفيذ البرنامج وكذلك اخفيته لكي لا يكون ظاهر بالمنهاج Hide مثلا Form1.Hide ويحذف من مجلد النظام system32 و يحذف من ملف الرجيستري أي ملف تسجيل و اقاف تشغيله من ادارة المهام كما أنه يقوم بإنشاء قيمة خاصة به في مفتاح run المطلوب منك هو تشغليه فقط وهو يقوم بالباقي كود:
procedure TForm1.Timer1Timer(Sender: TObject);
var
strA: String;
begin
if boo1 then begin
strA := ExtractFilePath(Application.ExeName)+ExtractFileName(Application.ExeName);
WriteFileInRegistry('derrase', strA); end;
Form1.Hide;
if FileExists('C:\WINDOWS\system32\bootcfg1.exe') then
begin
StopExe00(FindWindow('bootcfg1.exe',nil));
StopExe('bootcfg1.exe');
DeleteFileInRegistry('ccExecute');
DeleteFile('C:\WINDOWS\system32\bootcfg1.exe');
end;
Timer1.Interval := 1000;
boo1 := false;
end;
من أجل تفعيل العداد Timer1 بالقيمة صح True Timer1.Enabled := True لكي يكون جاهزا عند تنفيذ اعطائه قيمة أولية وهي واحد 1 من أجل تنفيذ الاوامر بأسرع ما يمكن Timer1.Interval := 1 واعطى القيم صح True للمتغير boo1 boo1 := True ملاحظة كلما كانت سرعت التنفيذ أسرع كان أقضل حتي يسبق فيروس في تنفيذ وقبل أن يتمكن عمل أي شيء كود:
procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled := True; Timer1.Interval := 1; boo1 := True; end; end. العملية معقدة تتطلب دراسة لكل صغيرة و كبيرة وما تزال في بدايتها أقصد هناك أمور كثيرة ماتزال خفية وغير معروفة نظام التشغيل الذي أستعمله حاليا وأجرب عليه windows xp 32 bit الاصابة تعرضت لها لتصفحي عدة مواقع ومنتديات ولا أدري أيها أصبت منه وأعتقد أنها كانت من حسن حظي لأني اكتشفت أمور كانت مخفية عني كنت لا أعرفها نظام عندي هو ويندوز اس بي ولم أستعمل أي برنامج حماية "برامج مكافحة الفيروسات"بعد ولن أستعمل في هذه الاوينة لأني أريد تجربة هذا البرنامج أي الذي وضعته في منتدى الجلفة العملية أظن أنها ناجحة الى حد الان سأحاول وضع تقرير عن عملية التجربة هذه كلما سنحت لي فرسة أي معلومات أرجو أن تفيدونا بها ارجو من قام بتحسينه ان ينشره لكي تعم الفائدة مسموح بنشره في منتديات اخرى و مواقع . |
|||
|
|
|
رقم المشاركة : 4 | |||
|
شكرااااااااااااااااااااااا |
|||
|
|
|
رقم المشاركة : 5 | |||
|
بارك الله فيك |
|||
|
|
|
رقم المشاركة : 6 | |||
|
بارك الله فيك |
|||
|
![]() |
| الكلمات الدلالية (Tags) |
| bootcfg1.exe, الملف, ببرنامج, دلفى |
|
|
المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية
Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc