zoukankan      html  css  js  c++  java
  • 【黑客免杀攻防】读书笔记3

    花指令

    花指令就是一段本可以不存在的指令,存在的唯一目的就是掩盖程序中的一些东西。

    5.1 什么是花指令?

    程序正常运行时完全可以不需要的,人们可以加进去的一段代码,或是刻意修改程序流程的一段代码。

    5.2 脚本木马的花指令应用

    • 定义空变量
    • 输出无用的if语句条件判断
    • 无意义的输出

    5.3 花指令的根基-汇编语言

    5.3.1 认识汇编

    80x86指令系统大致刻意分为以下5个功能组:

    • 数据传输指令
    • 逻辑运算指令
    • 串操作指令
    • 控制转移指令
    • 处理器控制指令

    5.3.2 通过反汇编添加任意功能

    这一小节主要通过例子演示通过反汇编添加功能。

    • 文件末尾空白处添加CMD命令
    • 作为参数调用WinExec
    • 记录下原程序入口点地址
    • 修改入口点到空白位置反汇编修改的位置
    • 跳转回原程序入口点地址
    • 修改原OEP入口点

    实行以上几步操作后,在程序执行前其实是先执行了我们所加入的代码。

    这里也会涉及一个知识点,stdcall,cdcel的知识

    结合前面修改入口点的知识,这一小节的知识是从本书中【空白区域跳转法】免杀方法延伸而来。在入口点跳转的过程中添加了花指令做混淆。

    5.4 花指令入门

    常用的花指令组合

    nop         ; 空指令,无作用
    
    pop 0       ;将0弹出堆栈
    pop 0       ;将0弹出堆栈
    
    push ebp    ;将ebp压入堆栈
    pop ebp     ;将ebp弹出堆栈
    
    add esp,1   ;将esp加1
    sub esp,1   ;将esp减1
    
    add esp,1   ;将esp加1
    add esp,-1  ;将esp加-1
    
    sub esp,1   ;将esp减1
    sub esp,-1  ;将esp减-1
    
    inc ecx     ;ecx加1
    dec ecx     ;ecx减1
    
    sub eax,-2  ;将eax减去-2,其实也就是加上2
    dec eax     ;将eax的计数器减1
    dec eax     ;将eax的计数器减1
    
    push ****** ;将入口地址压入栈
    retn        ;再返回到入口地址  
    
    mov eax,****** ;将入口地址传送到数据寄存器中
    jmp eax        ;跳到程序入口地址
    

    5.5 花指令在免杀领域的应用

    • 选择空白区域,写入花指令,JMP跳回原程序入口点,修改OEP入口点

    A 空白区域寻找与加空区段

    • WinHex
    • PEID
    • CodeCaver(运行程序才能进行查找)
    • ToPo(添加空白区段工具)

    5.6 花指令高级应用-提取与快速应用

    • 怒剑狂花

    SEH异常的应用

    SEH异常也叫做“结构化异常处理”,是系统提供的一个服务。

    当系统检测到异常时,它马上会将发生异常的程序挂起,并交由系统特定的调试程序来处理,当程序执行流程已经转移到系统上,而程序又运行起来。那么就会使程序的运行流程产生更大的迷惑性。

    push *******                 ;地址*******压入堆栈
    mov eax,dword ptr fs:[0]     ;fs[0]压入堆栈,执行完成后,fs[0]指向栈顶
    push eax                     
    mov dword ptr fs:[0],esp     ;构造1个err结构
    nop 
    vxdcall 134543
    

    参考文章

    [分享]反调试跟踪的一点心得
    http://bbs.pediy.com/thread-79205.htm

    反病毒攻防研究第002篇:利用缝隙实现代码的植入
    http://blog.csdn.net/ioio_jy/article/details/39079879

    反病毒攻防研究第003篇:添加节区实现代码的植入
    http://blog.csdn.net/ioio_jy/article/details/39178141

    黑客免杀攻防笔记
    http://blog.csdn.net/dalerkd/article/details/40793729

    Seh异常
    http://blog.sina.com.cn/s/blog_4f06d8e40100bs3d.html

  • 相关阅读:
    js 数据类型的转换
    js数组学习方法汇总
    跳转页面的方法总结
    今天用js做拉一个时钟
    今天用js做拉一个时钟
    js中字符的比较
    1005 继续(3n+1)猜想 (25分)
    1002 写出这个数
    日期差值
    1040 有几个PAT (25分)
  • 原文地址:https://www.cnblogs.com/17bdw/p/7237332.html
Copyright © 2011-2022 走看看