介绍

DEP的主要作用是阻止数据页(默认的堆,栈以及内存池页)执行代码。用来弥补计算机对数据和代码混淆这一天然缺陷的。
DEP 的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入 shellcode 时,
程序会尝试在数据页面上执行指令,此时 CPU 就会抛出异常,而不是去执行恶意指令。

Vs设置DEP

在使用VS编译的时候也有DEP选项。(VS2019示例)默认情况下是开启的。
通过右键单击项目属性–>链接器–>高级–>DEP保护。

目标程序

#include<windows.h>
#include<tchar.h>
#include <iostream>
#define PASSWORD "1234"
void* VerifyPassword(byte* pRet, void* pszPassword, int nSize) {char szBuffer[50] = { 0 };*pRet = strcmp(PASSWORD, (char*)pszPassword);return memcpy(szBuffer, pszPassword, nSize); //通过拷贝溢出
}
int _tmain(int argc, _TCHAR* argv[]) {void* pszPassword = NULL;int   nFileSize = 0;byte  bFlag = FALSE;FILE* fp;LoadLibraryA("user32.dll");if (fopen_s(&fp, "password.txt", "rb")) {MessageBoxA(NULL, "打开文件失败", "error", NULL);return 0;}fseek(fp, 0, SEEK_END);nFileSize = ftell(fp) + 1;rewind(fp);pszPassword = ZeroMemory(malloc(nFileSize), nFileSize);fread(pszPassword, nFileSize, 1, fp);VerifyPassword(&bFlag, pszPassword, nFileSize);if (bFlag) printf("密码错误\n");else       printf("密码正确\n");fclose(fp);system("pause");return 0;
}

BypassDEP

由于程序开启了数据执行保护导致无法再栈执行代码,是因为栈上没有执行权限,所以我们调用virtualProtect函数来更改权限即可

//函数原型BOOL VirtualProtect
(
LPVOID lpAddress, // 目标地址起始位置
DWORD dwSize, // 大小
DWORD flNewProtect, // 请求的保护方式
PDWORD lpflOldProtect // 保存老的保护方式
);

问题是该如何调用此函数,只能通过碎片化执行程序,在栈上放零散的我们需要执行指令的地址,利用ret就可以跑到程序原有的指令上,完成我们需要的功能

我们要完成的功能是调用 VirtualProtect函数 利用寄存器在栈上构建调用函数的栈环境,使用碎片化执行代码完成对寄存器的赋值,最后pushad即可入栈

执行pushad以后寄存器入栈顺序

所以我们如下安排寄存器的赋值

EDI    溢出点
ESI     VirtualProtect 
EBP    VirtualProtect 函数的返回地址
ESP    lpAddress
EBX     dwSize
EDX    flNewProtect
ECX    lpflOldProtect 
EAX     9090      //滑板指令
shellcode

接下来构建碎片化指令给寄存器赋值 EDI是溢出点 也就是返回地址 因为要给edi赋值所以 要找到

pop edi ret的指令 规律就是一句指令一句数据

程序测试

利用返回地址 执行我们构建好的碎片代码

以此类推....................

寄存器入栈 构建执行virtualprotect函数的栈环境

返回地址的指令 直接跳到栈顶执行代码

当前栈顶 执行自己的shellcode

BypassDEP(数据执行保护)相关推荐

  1. 如何解决经常出现Windows数据执行保护的提示?

    方法一:  关闭数据保护,编辑Boot.ini文件,将/NoExecute=OptIn 改为/NoExecute=AlwaysOff.  要编辑Boot.ini,请在开始中我的电脑上点右键-属性-高级 ...

  2. 如何关闭Windows XP/Vista/Windows 7的DEP数据执行保护

    数据执行保护 (DEP) 是一种Windows安全机制,从Windows版本顺序上看是从Windows XP SP2开始引入,通过监视程序以确保它们使用的系统内存是安全的,帮助防止操作系统受到病毒和其 ...

  3. 关闭数据执行保护(DEP)

    数据执行保护 =  DEP = Data Excute Protection 1.Windows XP下关闭 在桌面"我的电脑"点击鼠标左键--属性--高级--性能设置选项 2.V ...

  4. DLL/OCX文件的注册与数据执行保护DEP

    注册/反注册dll或ocx文件时,无论是用regsvr32还是DllRegisterServer/DllUnregisterServer,可能会遇到[内存位置访问无效]的问题: 此时把操作系统的数据执 ...

  5. 计算机系统保护怎么打开,Win7系统开启DEP数据执行保护的具体方法

    大部分用户都不知道数据执行保护 (DEP)有什么作用, DEP数据执行保护有助于防止我们的计算机遭受病毒的侵害,也有助于防止其他安全威胁危害我们的计算机.Win7专业版系统默认没有开启DEP数据执行保 ...

  6. 如何关闭VS的DEP保护(数据执行保护)

    今天看到0day安全中栈溢出的示例,手痒就学习,程序在一波 函数中修改函数返回地址跳到栈区去执行代码,而在DEP保护开启情况下堆和栈是无法执行代码,这也是缓冲区溢出保护机制之一. 在一番太头疼之后终于 ...

  7. 计算机打数据执行保护删除不掉,运行某应用程序时,出现数据执行保护 (DEP)提示的解决方案...

    原因分析: 数据执行保护技术(Data Execution Prevention,以下简称 DEP)是 Windows XP SP2和 Windows 2003 SP1新增的一项功能.DEP 简单地说 ...

  8. 关于Windows 7下的DEP(数据执行保护)

    注:本文版权归IT专家网所有,未经授权请勿转载! DEP(Data Execution Prevention)即"数据执行保护",这是Windows的一项安全机制,主要用来防止病毒 ...

  9. winxpsp2数据执行保护

    现在的WinXP用户已无可选择地升级到了WinXP SP2,这样也让用户必须无条件地接受一个名为DEP(数据执行保护)的安全保护功能.如果你用上了64位CPU,那么,这个保护功能将更    加强大,因 ...

  10. 数据执行保护(DEP)的基本设置

    1)执行权限 必须是管理员,而且可以修改boot.ini文件 2)数据执行保护DEP的几个可选参数    NOExecute=Optin (为关键Windows程序和服务启用数据执行保护)    NO ...

最新文章

  1. Maven学习(一)——Maven入门
  2. 阿里P7试用期被淘汰,主管给出的理由让人意想不到
  3. spring源码:资源管理器Resource
  4. 真有钱!科大讯飞年中分红:共派发现金红利2.2亿元
  5. RHEL5上Oracle9i的安装
  6. 移动开发者如何更好地学习 React Native? | 技术头条
  7. Vue2.0史上最全入坑教程(中)—— 脚手架代码详解
  8. 第三章EF的基本使用 EF添加数据实体模型
  9. LintCode Python 简单级题目 112.删除链表中的重复元素
  10. 解决oppo r7splus刷机后基带丢失|串号丢失|无信号等问题方法
  11. imageAI使用教程
  12. matlab 光线追踪 渲染,光线追踪(Ray tracing)渲染器工作原理
  13. Qt涂鸦板及其放大简例
  14. uniapp中uni.navigateTo传递变量
  15. infopath2007_好吧,很好,所以我服用了该死的红色药丸……行动中的InfoPath(以及小号WinSock的反省)...
  16. 网页截图怎么截一整张_电脑网页页面太长怎么截图 长网页滚动截图的两种方法...
  17. xcode Unable to install xxx
  18. R_leaflet包_最易上手地图教程(一)
  19. 进入BeOS的花花世界 系列七
  20. 车牌号正则表达式-普通车和新能源车

热门文章

  1. 计算机专业的就业现状论文,计算机专业就业困境初探论文
  2. 每日启程——2019年12月10日(敏不有初,鲜克以终)
  3. python flag用法_Python之FLAGS用法
  4. 相对定位(relative)和绝对定位(absolute)的区别
  5. 计算机房灭火器采用哪种类型,机房灭火器类型有哪些
  6. 消防工程师 10.3 火灾自动报警系统-可燃气体、电气火灾、消控室 11.灭火器
  7. 活跃在全球顶级会议的阿里新生代白帽:能挖漏洞会做焊工
  8. android 弹幕 计算碰撞轨道,GitHub - imtaotao/danmuku: 高度自定义弹幕样式,碰撞检测,你值得拥有 ...
  9. 链塔年会圆桌论坛实录
  10. 我的世界服务器自定义翅膀,我的世界翅膀自定义皮肤period; | 手游网游页游攻略大全...