`
ruilin215
  • 浏览: 1174755 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

转:Thunk 和DEP

阅读更多

转自:http://blog.csdn.net/yaosan/archive/2008/06/10/2533545.aspx


前几天博客中说ATL用thunk进行消息分发。当时觉得很别扭:堆栈,堆上的内存能执行?不是代码段也能执行吗?保护位什么时候设置的?后来没深究,以后得改改这毛病了,不能把疑问留一边,一定得正视了!

早上起来看双杯献酒给我的评论提示我一个上述网址有答案,先谢谢他了!



Thunk 和DEP

什么是 Thunk

Thunk 技术就是将一段机器码对应的字节保存在一个连续内存结构里,然后把其指针强制转换成函数, 即用作函数来执行。


什么是 DEP

数据执行保护 (DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2 、 Microsoft Windows Server 2003 Service Pack 1 、Microsoft Windows XP Tablet PC Edition 2005 和 Microsoft Windows Vista 中,由硬件和软件一起强制实施 DEP 。


DEP 的主要优点是可以帮助防止数据页执行代码。通常情况下,不从默认堆和堆栈执行代码。硬件实施 DEP 检测从这些位置运行的代码,并在发现执行情况时引发异常。软件实施 DEP 可帮助阻止恶意代码利用 Windows 中的异常处理机制进行破坏。


硬件实施 DEP 是某些 DEP 兼容处理器的功能,可以防止在已标记为数据存储区的内存区域中执行代码。此功能也称为非执行和执行保护。 Windows XP SP2 还包括软件实施 DEP ,其目的在于减少利用 Windows 中的例外处理机制的情况。


我在使用 Thunk 过程

前些天看VCKBAE 上有好多Thunk 的代码, 就用在项目上了, 程序在我电脑上测试一切正常, 放在服务器上(Microsoft Windows Server 2003 Service Pack 2) 一打开, 就挂了, 百思不得解, 在服务器上装上VC, 开始调试, 问题找到了Thunk 出了问题,


找找找, 找了2 天的资料才发现了问题, 在windows xp sp2 上默认是” 仅为基本 Windows 程序和服务启用 DEP “ 在Microsoft Windows Server 2003 Service Pack2 上默认是”为除下列选定程序之外的所有程序和服务启用 DEP “


在哪里查看DEP 设置呢?


我的电脑-> 属性-> 高级-> 性能-> 设置-> 数据执行保护( 见下图)

, 如果 看到” 您的计算机的处理器不支持基于硬件的 DEP 。但是,Windows 可以使用 DEP 软件帮助保护免受某些类型的攻击。” 就是勾上 ”为除下列选定程序之外的所有程序和服务启用 DEP “ Thunk 程序也能跑的好好的, 不过, 新的CPU 都是支持硬件DEP 的.

转回上面, 我在 Microsoft Windows Server 2003 Service Pack2 以 改成”仅为基本 Windows 程序和服务启用 DEP ”,Thunk 程序运行正常.


问题解决了吗 ?


当然还没有解决, 我知道WTL 也用了Thunk 技术, 于是, 用WTl 生成一个Dialog 程序, 在Microsoft Windows Server 2003 Service Pack2 上, 把DEP 设置成回默认的, 运行一下Wtl 的 Dialog, 可以跑起来, 同样是用Thunk, 这是什么原因呢, 看ATL 代码, 原来在这里


result = IsProcessorFeaturePresent( 12 /*PF_NX_ENABLED*/ );

  确定处理器的特性

  如果result 返回True

   thunkPage = (PATL_THUNK_ENTRY)VirtualAlloc(NULL,

   PAGE_SIZE,

   MEM_COMMIT,

   PAGE_EXECUTE_READWRITE);


  用VirtualAlloc[PAGE_EXECUTE_READWRITE] 来分配Thunk 代码的内存,

  到这里问题解决了.

  附件代码 Tunk 代码在 CallBackTemplate.h 和 CallBackTemplate.cpp 文件里


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yaosan/archive/2008/06/10/2533545.aspx

下面补充一下:

上述伪代码的真实代码上一下:(Allocate a new page of executablememory !!!)

XP帮助文档里面关于DEP有如下描述:

了解数据执行保护

数据执行保护可帮助保护您的计算机免受病毒和其他安全威胁的破坏。这些病毒和威胁尝试从受保护的内存位置运行(执行)恶意代码来发起攻击,而只有 Windows 和其他程序才应使用这些位置。这种威胁通过接管程序正在使用的一个或多个内存位置来执行破坏操作。之后,它会进行传播,从而破坏其他程序、文件乃至您的电子邮件联系人。

与防火墙或防病毒程序不同,DEP 无法帮助防止有害的程序安装在计算机中,而是对您的程序进行监视,确定它们是否能够安全地使用系统内存。要执行监视操作,DEP 软件既可以独立运行,也可以与兼容微处理器协作,将某些内存位置标记为“不可执行”。如果程序尝试从受保护的内存位置运行代码(无论是否为恶意代码),DEP 均将关闭程序并向您发送通知。

DEP 可以利用软件和硬件支持。要使用 DEP,您的计算机必须运行 Microsoft Windows XP Service Pack 2 (SP2) 或更高版本,或者 Windows Server2003 Service Pack1 或更高版本。DEP 软件独立运行时可帮助防御某些类型的恶意代码攻击,但要充分利用 DEP 可以提供的保护功能,您的处理器必须支持“执行保护”功能。执行保护是一种基于硬件的技术,用于将内存位置标记为“不可执行”。如果您的处理器不支持基于硬件的 DEP,则最好将其升级为能够提供执行保护功能的处理器。

再次运行被 DEP 关闭的程序是否安全?

安全,但前提是您要针对该程序启用 DEP。Windows 可继续检测企图从受保护内存位置执行代码的尝试,并能够帮助防止攻击。如果启用 DEP 后程序无法正常运行,您可从软件发行商处获取与 DEP 兼容的程序版本,从而降低安全风险。有关 DEP 关闭程序后应如何操作的详细信息,请单击“相关主题”。

如何确定我的计算机上是否启用了 DEP?

  1. 要打开“系统属性”,请依次单击“开始”、“控制面板”,然后双击“系统”。
  2. 单击“高级”选项卡,之后单击“性能”下的“设置”。
  3. 单击“数据执行保护”选项卡。

注意

  • 默认情况下,DEP 只针对基本 Windows 操作系统程序和服务启用。要使用 DEP 帮助保护其他程序,请选择“为下列程序之外的所有程序启用 DEP”。
分享到:
评论

相关推荐

    Thunk 和 DEP

    在IT领域,Thunk和Data Execution Prevention (DEP)是两个重要的概念,它们分别涉及程序执行和安全性方面。本文将深入探讨这两个主题。 首先,我们来理解什么是Thunk。Thunk技术源于低级编程,尤其是在Windows操作...

    react:不同的React实现

    redux-thunk将操作转换为promise,与请求操作结合使用时非常有用 reselect lib以创建高级的备注选择器, @redux-requests/core必需对等dep 如何设置? 克隆回购 npm i -g yarn yarn 您可以在pac

    基于单片机的科学型计算器设计(51+1602+KEY40)#0067

    包括:源程序工程文件、Proteus仿真工程文件、配套技术手册等 1、采用51/52单片机作为主控芯片; 2、采用1602液晶显示; 3、采用5*8矩阵键盘输入; 4、功能键包括:复位键(RST),回删键(DEL),确定键(OK),第二功能切换(2U),背光灯键(LED); 5、运算均为单精度浮点数,包括: 加(+),减(-),乘(x),除(÷), e底指数(e^n),N次方(x^n),开N次方(sqrt), 正弦(sin),余弦(cos),正切(tan), 对数(log), 阶乘(n!)(n<35), 排列(Arn), 累加(∑), *开启第二功能(2U)后可用: 反正弦(asin),反余弦(acos),反正切(atan), 组合(Crn)

    基于三菱FX2N PLC的机械手控制系统设计与实现

    内容概要:本文详细介绍了如何利用三菱FX2N系列PLC构建机械手控制系统。主要内容涵盖电路图设计、IO表配置、源程序编写以及单机组态。文中提供了具体的梯形图编程实例,展示了如何通过PLC精确控制机械手的各种动作,如抓取、移动和放置。此外,还分享了许多实用的调试技巧和注意事项,强调了传感器状态交叉验证和关键动作的时间守护机制。通过这些内容,读者可以全面了解PLC在机械手控制中的应用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和机械手控制感兴趣的初学者和有一定经验的研发人员。 使用场景及目标:适用于需要设计和实施机械手控制系统的工业场合,帮助工程师掌握PLC编程技巧,提高机械手控制系统的稳定性和可靠性。 其他说明:文章不仅提供理论指导,还包括大量实战代码和调试经验,有助于读者快速上手并在实践中不断优化系统性能。

    豆包生成美女的AI提示词基于豆包平台的美女图像生成提示词

    内容概要:本文档提供了用于生成具有时尚性感元素的美女跳舞图像的提示词指南。文档内容包括角色设定为擅长描绘时尚与超现实主义图片的创作者,背景设定强调女性形象,偏好展现性感漂亮女孩的镜头表达。目标在于根据用户指令创作三幅统一风格的图像,注重色彩搭配和高清效果,同时确保每张图片都具备半身像、真实感和电影效果的特点。文档还给出了具体的输出示例,详细描述了人物形象、服装搭配以及场景布置等要素,旨在为用户提供满意的图像生成服务。; 适合人群:对图像生成感兴趣,尤其是喜欢带有时尚性感元素的美女图像的用户。; 使用场景及目标:①根据用户提供的简单场景信息(如户外或室内)生成三幅不同场景但风格统一的赛博朋克风格美女跳舞图像;②确保生成的图像符合特定的要求,如半身像、真实感、电影效果、性感服装、特定灯光效果等;③通过询问用户对生成图像的满意度来保证服务质量。; 其他说明:文档明确了图像生成的工作流程,从接收用户指令到根据反馈调整生成内容,确保整个过程高效且满足用户需求。同时,文档还限制了生成图像的具体条件,如场景必须为赛博朋克风格、不能出现鞋子和其他人等,以保证图像的独特性和一致性。

    蓝桥杯大赛模拟题PDF

    题目描述 1.问题描述 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的 数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。 给定正整数n,请问在整数1至n中有多少个数位递增的数? 输入格式 输入的第一行包含一个整数n。 输出格式 输出一行包含一个整数,表示答案。 样例输入 30 样例输出

    基于非对称纳什谈判的多微网电能共享优化策略及其MATLAB实现

    内容概要:本文详细介绍了基于非对称纳什谈判的多微网电能共享运行优化策略及其MATLAB代码实现。首先阐述了纳什谈判和合作博弈的基本理论,然后将多微网电能共享合作运行模型分解为微网联盟效益最大化和合作收益分配两个子问题。文中展示了如何通过交替方向乘子法(ADMM)进行分布式求解,确保各微网隐私安全。此外,还探讨了电转气(P2G)和碳捕集(CCS)设备的应用,以实现低碳调度。最后,通过具体代码示例解释了模型的构建、求解及优化过程。 适合人群:对电力系统优化、博弈论、MATLAB编程感兴趣的科研人员和技术开发者。 使用场景及目标:适用于希望深入了解多微网电能共享优化策略的研究者,旨在提高微网联盟的整体效益并实现公平合理的收益分配。同时,该策略有助于降低碳排放,提升系统的环境友好性和经济性。 其他说明:文章提供了详细的代码注释和调试技巧,帮助读者更好地理解和实现这一复杂的优化策略。

    MATLAB机器人仿真:基于视觉控制的六轴机械臂运动路径规划与实现

    内容概要:本文详细介绍了如何利用MATLAB进行六轴机械臂的视觉控制系统仿真。首先,通过MATLAB的图像处理工具箱捕捉并处理实时视频流,使用HSV颜色空间进行颜色阈值处理,从而定位红色小球的位置。然后,借助Robotics Toolbox中的逆运动学模块,将摄像头获取的目标位置转换为机械臂的关节角度,确保机械臂能够精准地追踪目标。此外,还讨论了路径规划的方法,如使用五次多项式插值和平滑滤波器,使机械臂的动作更加流畅。文中强调了实际应用中可能遇到的问题及其解决方法,如奇异点处理、坐标系转换和机械臂的速度限制等。 适合人群:具有一定编程基础和技术背景的研究人员、工程师以及对机器人视觉控制感兴趣的开发者。 使用场景及目标:适用于希望在MATLAB环境中快速搭建和测试机械臂视觉控制系统的科研人员和工程师。主要目标是掌握从图像处理到机械臂控制的完整流程,理解各模块的工作原理,并能够在实际项目中应用。 其他说明:本文不仅提供了详细的代码示例,还分享了许多实用的经验和技巧,帮助读者更好地理解和优化仿真系统。同时提醒读者注意仿真与现实之间的差异,如摄像头延迟、机械臂传动误差等问题。

    【KUKA 机器人坐标的建立】:mo2_base_en.ppt

    KUKA机器人相关文档

    【KUKA 机器人资料】:KAKA机器人汽车座椅测试系统.pdf

    KUKA机器人相关文档

    三相变流器MPC控制:Matlab/Simulink仿真实现及优化技巧

    内容概要:本文详细介绍了三相变流器的模型预测控制(MPC)在Matlab/Simulink环境下的实现过程。首先,初始化程序设置了关键参数,如直流母线电压、开关频率和控制周期等,确保系统的稳定性和效率。接着,通过MPC_sfun.c实现了核心控制算法,采用状态空间模型进行滚动预测,提高了系统的动态响应能力。最后,利用out.m生成高质量的仿真结果图,展示了负载突变时的快速恢复特性,并提供了优化建议,如调整代价函数权重和引入软约束等。 适合人群:电力电子工程师、控制系统研究人员以及对MPC感兴趣的科研工作者。 使用场景及目标:适用于需要精确控制电压电流的场合,如电动汽车充电站、风力发电系统等。主要目标是提高系统的动态响应速度、降低总谐波失真(THD),并在性能和计算负担之间取得平衡。 其他说明:文中提到了一些实用技巧,如控制周期的选择、预测步长的优化、图形绘制的最佳实践等,有助于读者更好地理解和应用MPC控制策略。同时,强调了在实际应用中需要注意的问题,如避免过高开关频率导致器件损坏等。

    网络炒作策划要点解析.ppt

    网络炒作策划要点解析.ppt

    三菱Q03UDE PLC SFC编程模板在16轴伺服控制系统中的应用与优化

    内容概要:本文详细介绍了三菱Q03UDE PLC使用SFC(顺序功能图)编程方法在16轴伺服控制系统中的应用。文章首先概述了硬件配置,包括500个IO点、16轴伺服控制以及触摸屏的画面编程。接着深入探讨了SFC编程的具体实现方式,如将复杂的轴控制分解为独立的流程块,利用并行结构解决多轴同步问题,通过触摸屏实时监控和反馈SFC步状态,以及如何高效管理和复用输出点。此外,文章还讨论了SFC在状态管理和报警处理方面的优势,并提供了具体的代码示例来展示其实现细节。最后,作者分享了一些实用技巧和注意事项,强调了SFC编程相比传统梯形图的优势。 适合人群:从事工业自动化控制系统的工程师和技术人员,尤其是对三菱PLC和SFC编程感兴趣的读者。 使用场景及目标:适用于需要进行复杂多轴伺服控制项目的工程师,旨在提高调试效率、减少信号冲突、缩短新人培养周期,并提供一种更加直观和高效的编程方法。 其他说明:文中提到的实际项目经验有助于读者更好地理解和应用SFC编程技术,同时也提醒了一些常见的错误和陷阱,帮助读者避免不必要的麻烦。

    LabVIEW与三菱FX3U PLC串口通讯:基于Modbus协议的简易实现及应用

    内容概要:本文详细介绍了如何使用LabVIEW实现与三菱FX3U PLC的串口通讯,采用Modbus无协议通讯方式进行简单读写操作。主要内容包括PLC通讯参数配置、LabVIEW工程结构搭建、Modbus报文构造方法以及具体的读写数据模块实现。文中提供了详细的代码示例和注意事项,帮助读者快速理解和实践这一通讯过程。 适合人群:对工业自动化有一定兴趣的技术人员,尤其是熟悉LabVIEW和三菱PLC的工程师。 使用场景及目标:适用于需要将LabVIEW作为上位机与三菱FX3U PLC进行串口通讯的应用场合,如工业控制系统、实验教学等。主要目标是掌握Modbus协议的基础知识及其在LabVIEW中的具体实现。 其他说明:文章还提供了一些常见的错误排查方法和实用技巧,如CRC校验的处理、地址偏移量的注意事项等。此外,附带了完整的源码供读者下载和参考。

    图像检索-基于零样本开集的草图图像检索系统实现-附项目源码+流程教程-优质项目实战.zip

    图像检索_基于零样本开集的草图图像检索系统实现_附项目源码+流程教程_优质项目实战

    基于C语言写的电话簿程序

    基于C语言写的电话簿程序

    基于单片机的电压(20V)检测设计(51+1602+AD0808)#0063

    包括:源程序工程文件、Proteus仿真工程文件、配套技术手册等 1、采用51单片机作为主控芯片; 2、采用1602液晶显示检测电压值,范围0~20V; 3、采用ADC0808进行模数转换;

    【剧本杀AI提示词指令】基于AI的剧本杀定制化创作系统(deepseek,豆包,kimi,chatGPT,扣子空间,manus,AI训练师)

    内容概要:本文介绍了一个专业的剧本杀创作作家AI。它能根据客户需求创作各种风格和难度的剧本杀剧本,并提供创作建议和修改意见。其目标是创造引人入胜、逻辑严密的剧本体验。它的工作流程包括接收理解剧本要求、创作剧本框架情节、设计角色背景线索任务剧情走向、提供修改完善建议、确保剧本可玩性和故事连贯性。它需保证剧本原创、符合道德法律标准并在规定时间内完成创作。它具备剧本创作技巧、角色构建理解、线索悬念编织、文学知识和创意思维、不同文化背景下剧本风格掌握以及剧本杀游戏机制和玩家心理熟悉等技能。; 适合人群:有剧本杀创作需求的人群,如剧本杀爱好者、创作者等。; 使用场景及目标:①为用户提供符合要求的剧本杀剧本创作服务;②帮助用户完善剧本杀剧本,提高剧本质量。; 阅读建议:此资源详细介绍了剧本杀创作作家AI的功能和服务流程,用户可以依据自身需求与该AI合作,明确表达自己的创作需求并配合其工作流程。

    Matlab图像处理技术实现静态图片美颜与特效处理

    内容概要:本文详细介绍了如何利用Matlab进行静态图片的美颜和特效处理。首先通过Viola-Jones算法进行人脸定位,然后采用双边滤波对皮肤进行磨皮处理,在HSV色彩空间中调整亮度以达到美白效果,最后运用小波变换将星空图等特效融合到图片中。整个过程中涉及多个图像处理技术和算法,如Haar特征、双边滤波、HSV转换、小波变换等。 适合人群:对图像处理感兴趣的初学者以及有一定Matlab基础的研发人员。 使用场景及目标:适用于希望深入了解图像处理原理并掌握具体实现方法的学习者;目标是能够独立完成简单的图像美化任务,如人像磨皮、美白、特效添加等。 其他说明:文中提供了完整的代码示例,帮助读者更好地理解和实践相关技术。同时强调了参数选择的重要性,并给出了合理的建议范围。

    KUKA_机器人初级培训教材.ppt

    KUKA机器人相关文档

Global site tag (gtag.js) - Google Analytics