Даниэль, сканирование exe-файлов, чтобы определить, является ли импорт некоторой dll, которая используется для доступа в Интернет, ненадежным, потому что существует много способов получить доступ к Интернету без непосредственного импорта dll.Например, вы можете использовать функцию LoadLibrary
, которая динамически загружает dll или COM-объект, такой как объект WinHttpRequest
, использующий позднюю привязку.
, например, выможно создать проект, подобный этому
{$APPTYPE CONSOLE}
uses
ActiveX,
ComObj,
SysUtils;
Procedure HttpGetText(const Url:string);
var
objHTTP : OleVariant;
begin
objHTTP:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
objHTTP.Open('GET', Url, False);
objHTTP.Send();
Writeln(objHTTP.ResponseText);
end;
begin
try
CoInitialize(nil);
try
HttpGetText('/6026053/est-li-u-exe-dostup-v-internet-zablokirovat-eto');
Readln;
finally
CoUninitialize;
end;
except
on E:Exception do
begin
Writeln(E.Classname, ':', E.Message);
Readln;
end;
end;
end.
Теперь, используя инструмент для проверки зависимости dll, вы увидите небольшой список, подобный этому
oleaut32.dll
advapi32.dll
user32.dll
kernel32.dll
ole32.dll
ни один из этих dll не используется для доступа в Интернетнепосредственно.
Я думаю, что вместо того, чтобы определять доступ к Интернету, вы можете контролировать TCP и UDP-соединения любого приложения, используя такую функцию, как GetExtendedTcpTable
(проверьте примеры Delphi здесь и здесь ) отсюда вы определяете порт и сервер, к которому приложение обращается, и информируете пользователя.или другим способом, используя что-то более продвинутое, например Winpcap , анализирующих захваченные сетевые пакеты.