|
منتدى البرمجة كل ما يتعلق بلغات البرمجة، فيجوال بيسيك , سي ++ , دلفي , أكسيس , جافا , هتمل... |
في حال وجود أي مواضيع أو ردود مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة ( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .
آخر المواضيع |
|
حذف الملف bootcfg1.exe ببرنامج دلفي
|
أدوات الموضوع | انواع عرض الموضوع |
2015-08-02, 02:02 | رقم المشاركة : 1 | ||||
|
حذف الملف bootcfg1.exe ببرنامج دلفي
بسم الله الرحمن الرحيم كود:
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 أي معلومات أرجو أن تفيدونا بها ارجو من قام بتحسينه ان ينشره لكي تعم الفائدة مسموح بنشره في منتديات اخرى و مواقع .
|
||||
2015-08-02, 21:10 | رقم المشاركة : 2 | |||
|
الفيروس المسمى |
|||
2015-08-02, 21:11 | رقم المشاركة : 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 الاصابة تعرضت لها لتصفحي عدة مواقع ومنتديات ولا أدري أيها أصبت منه وأعتقد أنها كانت من حسن حظي لأني اكتشفت أمور كانت مخفية عني كنت لا أعرفها نظام عندي هو ويندوز اس بي ولم أستعمل أي برنامج حماية "برامج مكافحة الفيروسات"بعد ولن أستعمل في هذه الاوينة لأني أريد تجربة هذا البرنامج أي الذي وضعته في منتدى الجلفة العملية أظن أنها ناجحة الى حد الان سأحاول وضع تقرير عن عملية التجربة هذه كلما سنحت لي فرسة أي معلومات أرجو أن تفيدونا بها ارجو من قام بتحسينه ان ينشره لكي تعم الفائدة مسموح بنشره في منتديات اخرى و مواقع . |
|||
2015-08-02, 23:45 | رقم المشاركة : 4 | |||
|
شكرااااااااااااااااااااااا |
|||
2015-08-09, 09:11 | رقم المشاركة : 5 | |||
|
بارك الله فيك |
|||
2015-08-09, 14:36 | رقم المشاركة : 6 | |||
|
بارك الله فيك !!! |
|||
الكلمات الدلالية (Tags) |
bootcfg1.exe, الملف, ببرنامج, دلفى |
|
|
المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية
Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc