• Python正课94—— Virus项目讲解


    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12800386.html

    一:攻击原理图解

    01

    02

    二:dll三连

    1.什么是dll

    动态链接库(Dynamic Link Library 缩写为DLL)。
    是微软公司在Windows操作系统中,实现共享函数库的概念的一种方式。
    这些库函数的扩展名是“.dll”、“.oxc”(包含ActiveX控制的库)或者“.drv”(旧的系统驱动)。
    

    2.为何要有dll

    由于进程的地址空间是独立的(保护模式),当多个进程共享相同的库时,每个库都在硬盘和进程彼此的内存
    存放一份的话,对于早期的计算机来说,无疑是一种极大的浪费,于是Windows系统推出了dll机制,dll在硬盘
    上存为一个文件,在内存中使用一个实例(instance)。
    
    详细如下:
        在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥
    有整个机器的控制权,每个进程都认为自己拥有计算机的整个内存空间,这些假象都是操作系统创造的(操作系统控制
    CPU使得CPU启用保护模式)。理论上而言,运行在操作系统上的每一个进程之间都是互不干扰的,即每个进程都会拥有
    独立的地址空间。比如说进程B修改了地址为0x4000000的数据,那么进程C的地址为0x4000000处的数据并未随着B的
    修改而发生改变,并且进程C可能并不拥有地址为0x4000000的内存(操作系统可能没有为进程C映射这块内存)。
        因此,如果某进程有一个缺陷覆盖了随机地址处的内存(这可能导致程序运行出现问题),那么这个缺陷并不会影响
    到其他进程所使用的内存。
    

    3.什么是dll注入

      我们可以利用dll机制来实现进程通信或控制其他进程的应用程序。
      所谓的dll注入即是让程序A强行加载程序B给定的a.dll,并执行程序B给定的a.dll里面的代码。注意,程序B所给定的a.dll原先并不会被程序A主动加载,但是当程序B通过某种手段让程序A“加载”a.dll后,程序A将会执行a.dll里的代码,此时,a.dll就进入了程序A的地址空间,而a.dll模块的程序逻辑由程序B的开发者设计,因此程序B的开发者可以对程序A为所欲为。
    

    4.什么时候需要dll注入

    应用程序一般会在以下情况使用dll注入技术来完成某些功能:
      1.为目标进程添加新的“实用”功能;
      2.需要一些手段来辅助调试被注入dll的进程;
      3.为目标进程安装钩子程序(API Hook);
    

    5.dll注入的方法

    一般情况下有如下dll注入方法:    
      1.修改注册表来注入dll;
      2.使用CreateRemoteThread函数对运行中的进程注入dll;
      3.使用SetWindowsHookEx函数对应用程序挂钩(HOOK)迫使程序加载dll;
      4.替换应用程序一定会使用的dll;
      5.把dll作为调试器来注入;
      6.用CreateProcess对子进程注入dll
      7.修改被注入进程的exe的导入地址表。
    

    三:准备工作

    1.最新anaconda3.7(教程在这里

    https://www.anaconda.com/distribution/#download-section
    

    2.改变源可以提速下载(教程在这里

    pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

    3.安装pywin 32, 安装时用默认安装路径(教程在这里

    https://github.com/mhammond/pywin32/releases
    

    4.安装opencv-python(教程在这里

    pip3 install opencv-python
    

    5.安装py installer, 依赖pywin32 (教程在这里

    pip3 install pyinstaller
    

    6、ico文件准备好(教程在这里

    在线制作 or https://www.easyicon.net
    
  • 相关阅读:
    vagrant创建centos7后虚拟机磁盘爆满
    Linuxpython删除某个目录文件夹及文件的方法
    Oracle 中常用查询用户、角色、权限等SQL
    log4j2 rce几个疑惑点解惑
    2021年总结和反思
    使用grep命令,玩转代码审计寻找Sink
    VSCode使用技巧
    [转载]什么是电源的纹波,如何测量它的值,又如何抑制呢?
    【Bug system】GCC Bugzilla
    .net core3.1开始页面实时编译
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/12800386.html
Copyright © 2020-2023  润新知