20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现

一、本节摘要

  • 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的程序“原封不动”,显然更具有迷惑性和欺骗性。先对windows可执行文件PE结构进行分析,接下来可以实现用Ollydbg对PE文件进行恶意代码注入。
  • 目标:
    1. 用汇编语言编写一个简单的对话框,并将其写入PE文件的预留字段中
    2. 将入口地址的语句修改为跳转语句。
    3. 跳转执行完对话框后再实现语句回溯,跳回原本的正常程序,不影响正常程序执行。
  • 工作环境:
    • Windows 7
  • 最终成果:已全部实现目标,但OllyDbg无法导出修改后的EXE程序。

二、实现过程

实现最最毒辣的一种方法,为了保证我们文件捆绑之后注入的隐蔽性。就是要保证文件修改前后的大小一样。因此选择PE文件注入的方法。下面用OllyDbg进行简单的注入,并在其后实现病毒的注入:

打开OllyDbg调试器。装入我们的目标程序,游戏的EXE。

根据我们上面的PE知识准备,可以知道,每个PE文件在其末尾都会有一波空白的代码部分。拉动滚动条,找到最后:

这个部分就是空白部分。

首先我们实现一下简单的例子,比如说注入一个对话框。

先写上内容。

选中一波空白部分,右键编辑,输入我们需要的字段zkj5314haha

点击ctrl+A 重新分析一下代码

发现红色的就是刚添加的部分。

接下来需要我们编写一波汇编代码,实现上面这个字段的使用

PUSH 0 ; BUTTONS =
PUSH XXXXX ; CAPTION = 标题文字,定位到刚才的第一个字符串
PUSH XXXXX ; MESSAGE = 信息文字,定位到第二个字符串
PUSH 0 ; ICON = 按钮
CALL MessageBoxA; 用 MessageBoxA 跑起上面的所有代码

按行输入汇编后,就出现了这一波代码。如果你现在保存它并运行它,你将看不到任何的效果,为什么呢?因为这段代码并没有被调用。

接下来记住 77625F00 这个是我们开始执行程序代码的地方。

右击PUSH 0 转到 EIP

选择几行代码复制,

777501C8 . 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
777501CC . E9 E9960200 JMP ntdll.777798BA
777501D1 . 8DA424 000000>LEA ESP,DWORD PTR SS:[ESP]
777501D8 . 8DA424 000000>LEA ESP,DWORD PTR SS:[ESP]
777501DF . 90 NOP

选择第一条,输入JMP 刚才的地址。使程序在刚进来时就可以跳转到我们的恶意代码部分

会发现刚才的那一部分都被覆盖了,这时候我们就应该把覆盖的这一部分代码给补到最后的恶意代码上。

还得记录下跳转回去的地址777501CC,这个值需要加在我们补充完代码之后。使程序在跳转完成后还可以回到原点正常执行。

因此,在补充完代码之后,加上JMP 777501CC

接下来就可以run程序。

成功出现弹窗。

弹窗取消后,程序会等很久才打开,应该是OllyDbg的问题,运行起来特别慢,最后也没办法导出修改后的exe文件。很是痛苦。不过已经实现了PE文件的病毒化,入口地址的修改和跳转。

20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现的更多相关文章

  1. 20145314郑凯杰《网络对抗技术》恶意DLL注入进程(进程捆绑)的实现

    20145314郑凯杰<网络对抗技术>恶意DLL注入进程(进程捆绑)的实现 一.本节摘要 简介:在这部分里,要实现将恶意后门悄无声息地与进程进行捆绑,通过和已运行的进程进行捆绑,达到附着攻 ...

  2. 20145314郑凯杰《网络对抗技术》实验9 web安全基础实践

    20145314郑凯杰<网络对抗技术>实验9 web安全基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET ...

  3. 20145314郑凯杰《网络对抗技术》实验8 WEB基础实践

    20145314郑凯杰<网络对抗技术>实验8 WEB基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET与P ...

  4. 20145314郑凯杰《网络对抗技术》实验5 MSF基础应用

    20145314郑凯杰<网络对抗技术>实验5 MSF基础应用 1.0 MS08_067安全漏洞 1.1 实验目标 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单 ...

  5. 20145314郑凯杰《网络对抗技术》可选实验 shellcode注入与Return-to-libc攻击实验

    20145314郑凯杰<网络对抗技术>可选实验 shellcode注入与Return-to-libc攻击实验 1.0 实践内容 Return-to-libc攻击是一种特殊的缓冲区溢出攻击, ...

  6. 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践

    20145314郑凯杰<网络对抗技术>实验1 逆向及Bof基础实践 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数 ...

  7. 20145314郑凯杰 《Java程序设计》第10周学习总结

    20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ...

  8. 20145314郑凯杰 《Java程序设计》实验五 实验报告

    20145314郑凯杰 <Java程序设计>实验五 实验报告 实验搭档王亦徐:http://www.cnblogs.com/1152wyx/p/5471524.html 实验要求 完成实验 ...

  9. 20145314郑凯杰 《Java程序设计》课程总结

    20145314郑凯杰 <Java程序设计>课程总结 每周读书笔记链接汇总 ①寒假预习--"helloworld" ②第一周读书笔记 ③第二周读书笔记 ④第三周读书笔记 ...

随机推荐

  1. JS "eval智能" 工厂模式

    <script> var Shop = function () { this.name = function () { document.write("商店的名字 <br/ ...

  2. cookie的封装写法

    设置cookie 三个参数分别代表:键,值,过期时间,这个封装方法可以完成cookie的储存   以及cookie的删除(过期时间设为赋值) function setCookie(cname,cval ...

  3. 非极大值抑制(NMS)

    非极大值抑制顾名思义就是抑制不是极大值的元素,搜索局部的极大值.这个局部代表的是一个邻域,邻域有两个参数可变,一个是邻域的维数,二是邻域的大小.这里不讨论通用的NMS算法,而是用于在目标检测中提取分数 ...

  4. 全套 AR 应用设计攻略都在这里!

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/jILRvRTrc/article/details/79823908 通过将虚拟内容与现实世界融合,增 ...

  5. clientHeight , scrollHeight , offsetHeight之间的区别

    clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小) scrollHeight: 滚动大小,指的是包含滚动内容的元素大小(元素内容的总高 ...

  6. POJ3096:Surprising Strings(map)

    http://poj.org/problem?id=3096 for循环真是奇妙! #include <string.h> #include <stdio.h> #includ ...

  7. ListView列宽自适应,设置ListView.Column[0].Width := -1;

    使用TListView列表显示内容,如果列内容过长,就会显示成‘XXX…’形式,此时如果双击列标题,列宽将变为自适应.用代码设置如下: 1.设置ListView.Column[0].Width := ...

  8. Redis日常使用随笔

    Redis常用配置:1.采用master与slave互为主从的方式,两条重要命令:redis 127.0.0.1:6379> SLAVEOF NO ONEredis 127.0.0.1:6379 ...

  9. iOS UI基础-4.0应用程序管理

    功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...

  10. BCB ERROR:[Linker Error] 'XXX.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

    今天C++builder 导入 gts .lib  (gts.dll)库文件 编译报错: [Linker Error] 'D:\...\V4.05.007.1000-20161028\GTS.LIB' ...