![]() |
|
حذف الملف bootcfg1.exe ببرنامج دلفي - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4) +--- قسم : الامن و تحليل التطبيقات البرمجية (https://delphi4arab.net/forum/forumdisplay.php?fid=31) +--- الموضوع : حذف الملف bootcfg1.exe ببرنامج دلفي (/showthread.php?tid=7133) |
حذف الملف bootcfg1.exe ببرنامج دلفي - sabre - 06-08-2015 بسم الله الرحمن الرحيم الصلاة والسلام على أشرف المرسلين وعلى آله وصحبه أجمعين حذف الملف bootcfg1.exe ببرنامج دلفي اقاف تشغيله من ادارة المهام حذفه من المجلد system32 حذفه من ملف الرجيستري أي ملف تسجيل كود : 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.اسمه Win32.Nemsi.b فعلا هذا الذي حدث معي : 1 -- انشاء الملف bootcfg1.exe في المسار C:\windows\system32 2 -- حذف الملف BOOT.ini باستمرار كلما تم إغلاق الجهاز . 3 -- ظهور الملف TMP.exe عند تشغيل أي ملف تنفيذي بجانه 4 -- له قيمة في المفتاح بدأ تشغيل run في Registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Nom de valeur : ccExecute Données de la valeur : C:\WINDOWS\system32\bootcfg1.exe عملية أعتــقد انها وصلت الى 10 من 100 وهناك ملف اخر لم استطع تعرف عليه بعد نظام التشغيل windows xp 32 bit أي معلومات تفيدونا بها أو نصائح تنصحوني بها من قام بتحسينه ان ينشره لكي تعم الفائدة مسموح بنشره في منتديات اخرى و مواقع أشكركم جزيل الشكر أيها الاخوة حذف الملف bootcfg1.exe ببرنامج دلفي - sabre - 07-08-2015 هذه الدالة تقوم بإقاف أي ملف تم تشغيله وهي دالة أقوى من التي ستأتي بعدها أقصد الملف المرسل اليها سيتم اقاف تشغيله كود : 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;أقصد الملف المرسل اليها مثلا لو تم ارسال المفكرة notepad سيتم اقافها فورا ولكن لم يتم اقاف تشغيل ملفات اخرى كود : 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;لـتكون عملية الحذف مستمرة طوال تنفيذ البرنامج وكذلك اخفيته لكي لا يكون ظاهر بالمنهاج Hide مثلا Form1.Hide ويحذف من مجلد النظام system32 و يحذف من ملف الرجيستري أي ملف تسجيل و اقاف تشغيله من ادارة المهام كما أنه يقوم بإنشاء قيمة خاصة به في مفتاح run المطلوب منك هو تشغليه فقط وهو يقوم بالباقي أي 1 - تسغيله مختفيا 2 - ينشئ قيمة في المفتاح run 3 - يوقف تشغيل الملف bootcfg1.exe 4 - يحذف الملف bootcfg1.exe من مجلد system32 5 - يحذف القيمة ccExecute من المفتاح 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.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 الاصابة تعرضت لها لتصفحي عدة مواقع ومنتديات ولا أدري أيها أصبت منه وأعتقد أنها كانت من حسن حظي لأني اكتشفت أمور كانت مخفية عني كنت لا أعرفها نظام عندي هو ويندوز اس بي ولم أستعمل أي برنامج حماية "برامج مكافحة الفيروسات"بعد ولن أستعمل في هذه الاوينة لتجربة هذا البرنامج، العملية أظن أنها ناجحة الى حد الان سأحاول وضع تقرير عن عملية التجربة هذه كلما سنحت لي فرسة أي معلومات أو نصائح أن تفيدونا بها في ردودكم من قام بتحسينه ان ينشره لكي تعم الفائدة حذف الملف bootcfg1.exe ببرنامج دلفي - I3CT - 29-08-2015 Virus.Win32.Nemsi.b الملف الضار موضوع شرحك من نوع PE/File infector فلن تنفع طريقة حذفه لانه يقوم بتلويث ملفات تنفيذية و عند تشغيلها تعيد تلويث ملفات اخرى بدورها، مما يجب عمل ما يسمى بــ Cure لتنظيف الملفات التنفيذية للجهاز الملوث... البرنامج الضار قديم و يعود بــ 10 سنوات الى الوراء... |