PDA

View Full Version : حرفه ای: راهنمایی در مورد تشخیص آنتی ویروس



cl0n3r
جمعه 27 دی 1392, 18:24 عصر
با سلام خدمت دوستان عزیز
اگه می شه بهم بگید چجوری کد برنامه ای که آنتی ویروس رو شناسایی کنه بنویسم ( منظورم اینکه بگه آنتی ویروس نصب شده در سیستم چیه ؟) با تشکر

cl0n3r
جمعه 27 دی 1392, 18:42 عصر
کسی نیست کمکم کنه ؟
ازتون خواهش می کنم کمکم کنید ضروریه

کامبیز اسدزاده
جمعه 27 دی 1392, 19:19 عصر
خب برای این کار روش های بسیار زیادی رو میشه در نظر گرفت !
مثلا استفاده از متد های خاص برای جستجو و یا استفاده از رجیستری و یا هزارو یک جور گزینه دیگه...
به نظر من اگه قرار باشه یه چیز درست حسابی برای تشخیص آنتی ویروس های رایج و شناخته شده استفاده کنید استفاده از مستندات و حد اقل نصب هر کدام از این آنتی ویروس ها و بررسی اثراتی که در رجیستری میزارن که شامل اطلاعات و نسخه های اونهاست ...

برای این کار باید تحقیق کنید به نظرم میتونه پیچیده باشه.

بهروز عباسی
شنبه 28 دی 1392, 01:50 صبح
باید از WMI استفاده کنی (خودت تحقیق کن)

این مثال به زبان دلفی :

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,
ActiveX,
ComObj,
Variants;

function VarArrayToStr(const vArray: variant): string;

function _VarToStr(const V: variant): string;
var
Vt: integer;
begin
Vt := VarType(V);
case Vt of
varSmallint, varInteger:
Result := IntToStr(integer(V));
varSingle, varDouble, varCurrency:
Result := FloatToStr(Double(V));
varDate:
Result := VarToStr(V);
varOleStr:
Result := WideString(V);
varBoolean:
Result := VarToStr(V);
varVariant:
Result := VarToStr(variant(V));
varByte:
Result := char(byte(V));
varString:
Result := String(V);
varArray:
Result := VarArrayToStr(variant(V));
end;
end;

var
i: integer;
begin
Result := '[';
if (VarType(vArray) and varArray) = 0 then
Result := _VarToStr(vArray)
else
for i := VarArrayLowBound(vArray, 1) to VarArrayHighBound(vArray, 1) do
if i = VarArrayLowBound(vArray, 1) then
Result := Result + _VarToStr(vArray[i])
else
Result := Result + '|' + _VarToStr(vArray[i]);

Result := Result + ']';
end;

function VarStrNull(const V: OleVariant): string;
// avoid problems with null strings
begin
Result := '';
if not VarIsNull(V) then
begin
if VarIsArray(V) then
Result := VarArrayToStr(V)
else
Result := VarToStr(V);
end;
end;

function GetWMIObject(const objectName: String): IDispatch;
// create the Wmi instance
var
chEaten: integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, BindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten,
Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;

procedure GetAntiVirusProductInfo;
var
objWMIService: OleVariant;
colItems: OleVariant;
colItem: OleVariant;
oEnum: IEnumvariant;
iValue: LongWord;
begin;
objWMIService := GetWMIObject('winmgmts:\\localhost\root\SecurityCe nter2');

colItems := objWMIService.ExecQuery('SELECT * FROM AntiVirusProduct',
'WQL', 0);
oEnum := IUnknown(colItems._NewEnum) as IEnumvariant;
while oEnum.Next(1, colItem, iValue) = 0 do
begin
Writeln(Format('displayName %s',
[VarStrNull(colItem.displayName)])); // String
Writeln(Format('instanceGuid %s',
[VarStrNull(colItem.instanceGuid)])); // String
Writeln(Format('pathToSignedProductExe %s',
[VarStrNull(colItem.pathToSignedProductExe)])); // String
Writeln(Format('pathToSignedReportingExe %s',
[VarStrNull(colItem.pathToSignedReportingExe)])); // String
Writeln(Format('productState %s',
[VarStrNull(colItem.productState)])); // Uint32
Writeln('');
end;
end;

begin
try
CoInitialize(nil);
try
GetAntiVirusProductInfo;
Readln;
finally
CoUninitialize;
end;
except
on E: Exception do
begin
Writeln(E.Classname, ':', E.Message);
Readln;
end;
end;

end.



اینم نتیجه !
http://barnamenevis.org/attachment.php?attachmentid=112215&d=1382699070

cl0n3r
سه شنبه 01 بهمن 1392, 15:00 عصر
دوستان گرامی اگه میشه یه مثال به زبان C برام بزارید. ممنون