PDA

View Full Version : روش پیاده سازی dll برای جلوگیری از شناسایی آنتی ویروس



Mask
چهارشنبه 21 اردیبهشت 1390, 15:57 عصر
با سلام
من از کدهای زیر وقتی استفاده میکنم. آنتی ویروس شناسایی و dll منو حذفش میکنه.
به نظرتون چیکار کنم که گیر نده.در نظر داشته باشید میخواهییم این تغییرات رو روی برنامه اعمال کنیم نه آنتی ویروس.
ممنون.

function LowerCase(const S: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'A') and (Ch <= 'Z') then Inc(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;




function UpperCase(sString: String): String; stdcall;
var
Ch : Char;
L : Integer;
Source: PChar;
Dest : PChar;
begin
L := Length(sString);
SetLength(Result, L);
Source := Pointer(sString);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'a') and (Ch <= 'z') then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;

function ExtractFileName(sFile: String): String; stdcall;
var
i: Integer;
j: Integer;
begin
j := 0;
for i := 1 to length(sFile) do
if (sFile[i] = '\') then j := i;
sFile := Copy(sFile,j+1,length(sFile));
j := 0;
for i := 1 to length(sFile) do
if (sFile[i] = '.') then j := i;
if j = 0 then j := length(sFile)+1;
Result := Copy(sFile,1,j-1);
end;

function PidToPath(dwProcessID: DWord): string; stdcall;
var FSnapshotHandle: THandle;
FModuleEntry32 : TModuleEntry32;
begin
Result := '';
if (dwProcessID <> 0) then
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwProce ssID);
FModuleEntry32.dwSize := Sizeof(FModuleEntry32);
Module32First(FSnapshotHandle,FModuleEntry32);
result := FModuleEntry32.szExePath;
CloseHandle(FSnapshotHandle);
end;
end;


function PidToName(dwProcessID: DWord): string; stdcall;
begin

Result:=ExtractFileName(PidToPath(dwProcessID)+'.e xe');
end;

function GetModulesByPid(ProcessID: DWord): string; stdcall;
var sFoundModules : String;
FSnapshotHandle: THandle;
FModuleEntry32 : TModuleEntry32;
ContinueLoop : Boolean;
begin
Result := '';
sFoundModules := '';
if (ProcessID <> 0) then
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Process ID);
FModuleEntry32.dwSize := Sizeof(FModuleEntry32);
ContinueLoop := Module32First(FSnapshotHandle,FModuleEntry32);
while ContinueLoop do
begin
sFoundModules := sFoundModules+FModuleEntry32.szModule+#13#10;
ContinueLoop := Module32Next(FSnapshotHandle,FModuleEntry32);
end;
result := sFoundModules;
CloseHandle(FSnapshotHandle);
end;
end;
من توسط توابع بالا اسم یه فایل رو تبدیل به pid و سپس مسیرش رو بدست میارم.
ممن.ن.

vcldeveloper
چهارشنبه 21 اردیبهشت 1390, 19:03 عصر
کد مربوطه به خودی خود چیز خاصی نداره که یک آنتی ویروس بخواد بهش گیر بده. اگر یک آنتی ویروس خاص بهش گیر میده، باید به توسعه دهندگان آن آنتی ویروس اطلاع بدید، تا این عدم سازگاری رو بررسی کنند.

در ضمن، این توابع شما که دارند خروجی string دلفی رو برگشت میدند، دیگه اون stdcall برای چیه؟! توابع شما که خارج از محیط دلفی قابل استفاده نیستند، پس نیازی هم به اون stdcall نیست.

nsco_nsco
چهارشنبه 21 اردیبهشت 1390, 20:52 عصر
سلام دوست عزیز اگر می خوای ببینی که بقیه آنتی ویروسها به این فایل ایراد می گیرند بهتر است از سایت هایی که نرم افزار رو چک با آنتی ویروس ها می کنند چک کنی و بعد اقدامات رو انجام بدی موفق باشی

drstrike
چهارشنبه 21 اردیبهشت 1390, 23:24 عصر
سلام...
فایل رو اینجا (http://www.virustotal.com/) آپ کن.اگه بقیه AVها هم گیر دادن که فایل مورد داره والا به قول جناب کشاورز به توسعه دهندگان اون آنتی ویروس اطلاع بدید.
فک کنم کامپوننت ProcessInfo اقای کشاورز مشکل شما رو حل کنه.

vcldeveloper
شنبه 24 اردیبهشت 1390, 19:35 عصر
فک کنم کامپوننت ProcessInfo اقای کشاورز مشکل شما رو حل کنه.
ProcessInfo هم در پشت صحنه از همین توابع API و یکسری توابع دیگه استفاده میکنه. اگر قرار به گیر دادن آنتی ویروس باشه، باید به ProcessInfo هم گیر بده. البته من جایی با ProcessInfo مشکل گیر دادن آنتی ویروس نداشتم؛ به همین دلیل حدس میزنم که مشکل بیشتر از یک آنتی ویروس خاص باشه.