网站加百度商桥个人做负面网站犯法不

张小明 2026/1/11 12:20:42
网站加百度商桥,个人做负面网站犯法不,在门户网站做产品seo,廉溪区建设局网站我们将学习本教程中另外一个重要的结构#xff0c;叫客户寄存器结构。在本文中#xff0c;V86指虚拟8086模式。在这里下载例子程序理论VxDs与正常的win32/win16/DOS应用程序有很大不同。大多数情况下#xff0c;当其他应用程序正常工作时#xff0c;它们是休眠的。它们象一…我们将学习本教程中另外一个重要的结构叫客户寄存器结构。在本文中V86指虚拟8086模式。在这里下载例子程序理论VxDs与正常的win32/win16/DOS应用程序有很大不同。大多数情况下当其他应用程序正常工作时它们是休眠的。它们象一个监管者一样工作其作用是监视ring-3应用程序并在其出错时改正它们。下面是其工作时的典型的情况1、中断发生时2、VMM得到控制权时3、VMM存贮寄存器组的值时4、VMM服务于中断或调用其他VxDs完成此工作时5、VMM交还控制权给被中断的程序时在以上过程中令人感兴趣的是VMM只有这一种方式能影响被中断的应用程序即修改存储的寄存器映象。例如VMM认为被中断的程序应该返回到另外一个地址它就修改存储的寄存器映象中CSIP的值当这个程序被重新分派时它将在新的CSIP处开始执行。VMM在客户寄存器结构中存储中断点处的寄存器值。Client_Reg_Struc STRUCClient_EDI DD ?Client_ESI DD ?Client_EBP DD ?Client_res0 DD ?Client_EBX DD ?Client_EDX DD ?Client_ECX DD ?Client_EAX DD ?Client_Error DD ?Client_EIP DD ?Client_CS DW ?Client_res1 DW ?Client_EFlags DD ?Client_ESP DD ?Client_SS DW ?Client_res2 DW ?Client_ES DW ?Client_res3 DW ?Client_DS DW ?Client_res4 DW ?Client_FS DW ?Client_res5 DW ?Client_GS DW ?Client_res6 DW ?Client_Alt_EIP DD ?Client_Alt_CS DW ?Client_res7 DW ?Client_Alt_EFlags DD ?Client_Alt_ESP DD ?Client_Alt_SS DW ?Client_res8 DW ?Client_Alt_ES DW ?Client_res9 DW ?Client_Alt_DS DW ?Client_res10 DW ?Client_Alt_FS DW ?Client_res11 DW ?Client_Alt_GS DW ?Client_res12 DW ?Client_Reg_Struc ENDS你可以看到这个结构分为两个部分Client_xxx和Client_Alt_xxx。在这稍作说明在一个给定的VM中可能有两个运行的线程V86和保护模式。当V86程序运行时假如一个中断产生Client_xxx将包含V86程序的寄存器映象Client_Alt_xxx将包含保护模式程序的寄存器映象。相应的当保护模式程序运行时假如一个中断产生Client_xxx将包含保护模式程序的寄存器映象Client_Alt_xxx将包含V86程序的寄存器映象。Client_resX被保留而没有使用。在查看过这个结构后你可能有一问题怎样改变寄存器中的一个字节比如al上面的结构仅仅描述了字和双字大小的寄存器组。不用担心在vmm.inc找一找。那有两个为此附加的结构Client_Word_Reg_Struc和Client_Byte_Reg_Struc。假如你想以字或字节大小来访问寄存器根据你的需要转换Client_Reg_Struc到Client_Word_Reg_Struc或Client_Byte_Reg_Struc。下一个问题我们如何得到一个指向客户寄存器结构的指针这相当简单一般地当VMM调用我们的VxD时把客户寄存器结构的地址放在ebp中。在这里的客户寄存器结构是当前VM的。你可以从VM的句柄中得到这个指针。记住VM的句柄是VM控制块的线性地址。cb_s STRUCCB_VM_Status DD ?CB_High_Linear DD ?CB_Client_Pointer DD ?CB_VMID DD ?CB_Signature DD ?cb_s ENDSCBCB_Client_Pointer包含指向VM的客户寄存器结构的指针。例如你可用下边的代码得到指向当前VM中的客户寄存器结构的指针VMMCall Get_Cur_VM_Handle ; return the current VM handle in ebxassume ebx:ptr cb_smov ebp,[ebxCB_Client_Pointer] ; pointer to client reg struct现在我们了解了客户寄存器结构我们可以用它来开始工作了。我们将使用客户寄存器结构去传送寄存器组的值到一个DOS中断中也就是int 21h,功能2h,显示一个字符。这个DOS服务把要显示的字符放在dl中。假如我们传送响铃字符07h)到这个服务将通过PC喇叭发出一声响。记住int 21h是一个DOS服务因而其在V86模式下是可用的我们如何在VxD中调用一个V86中断一个方法是使用Exec_Int服务。这个VMM服务把要调用的中断号放在eax中。它模拟指定的中断然后返回到调用的VM。然而它必须在一个嵌套执行块中被调用。嵌套执行块被Begin_Nest_V86_Exec (或 Begin_Nest_Exec)和End_Nest_Exec包括起来。如果我们要调用int 21h功能2h我们需要在嵌套执行块内转换Client_Byte_Reg_Struc结构的Client_ah和Client_Dl然后把值21h放在eax中。当一切准备好了就调用Exec_Int。例子例子是一个动态VxD它调用int 21h的功能2使PC喇叭发声。.386pinclude \masm\include\vmm.incinclude \masm\include\vwin32.incinclude \masm\include\v86mmgr.incVxDName TEXTEQUControlName TEXTEQUVxDMajorVersion TEXTEQU 1VxDMinorVersion TEXTEQU 0VxD_STATIC_DATA_SEGVxD_STATIC_DATA_ENDSVXD_LOCKED_CODE_SEG;----------------------------------------------------------------------------; Remember: The name of the vxd MUST be uppercase else it wont work/unload;----------------------------------------------------------------------------DECLARE_VIRTUAL_DEVICE %VxDName,%VxDMajorVersion,%VxDMinorVersion, %ControlName,UNDEFINED_DEVICE_ID,UNDEFINED_INIT_ORDERBegin_control_dispatch %VxDNameControl_Dispatch W32_DEVICEIOCONTROL, OnDeviceIoControlEnd_control_dispatch %VxDNameVXD_LOCKED_CODE_ENDSVXD_PAGEABLE_CODE_SEGBeginProc OnDeviceIoControlassume esi:ptr DIOCParams.if [esi].dwIoControlCode1Push_Client_StateVMMCall Begin_Nest_V86_Execassume ebp:ptr Client_Byte_Reg_Strucmov [ebp].Client_dl,7mov [ebp].Client_ah,2mov eax,21hVMMCall Exec_IntVMMCall End_Nest_ExecPop_Client_StateEndI:.endifxor eax,eaxretEndProc OnDeviceIoControlVXD_PAGEABLE_CODE_ENDSend讲解Push_Client_State这没什么好讲解的。当一个VxD接收到一个DeviceIoControl消息ebp已经指向了当前VM的客户寄存器结构。我们调用Push_Client_State宏在堆栈中存储客户寄存器结构的状态。然后用Pop_Client_State宏恢复客户寄存器。VMMCall Begin_Nest_V86_Exec通过调用Begin_Nest_V86_Exec开始嵌套执行块。assume ebp:ptr Client_Byte_Reg_Strucmov [ebp].Client_dl,7mov [ebp].Client_ah,2改变在客户寄存器中的dl和ah寄存器的映象。这个改变的值将由中断使用。mov eax,21hVMMCall Exec_IntExec_Int要求在eax存有一个中断号。我们想使用int 21h。等会我们调用Exec_Int去模拟中断。VMMCall End_Nest_ExecPop_Client_State当Exec_Int返回我们完成了嵌套执行块并且由堆栈中恢复了客户寄存器结构的值。 你将听到你的PC喇叭发出一声响。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

免费手机网站建设用rp怎样做网站

无限滚动技术深度解析:构建流畅用户体验的商业价值实现 【免费下载链接】infinite-scroll 📜 Automatically add next page 项目地址: https://gitcode.com/gh_mirrors/in/infinite-scroll 在当今数字体验竞争激烈的环境中,用户对网页…

张小明 2026/1/5 19:42:14 网站建设

网站除了做流量还需要什么昆山企业网站制作公司

第一章:医疗数据脱敏的合规性演进与PHP实现挑战随着《个人信息保护法》和《数据安全法》的相继实施,医疗数据的处理必须满足日益严格的合规要求。数据脱敏作为保护患者隐私的核心手段,其技术实现不仅需保障数据可用性,还需符合监管…

张小明 2026/1/7 20:25:28 网站建设

工业企业网站建设景区网站建设策划书

分布式系统与资源泄漏问题的排查与解决 在软件开发过程中,分布式系统的故障排查以及资源泄漏问题的解决是开发者常常面临的挑战。下面将详细介绍分布式系统的故障排查方法以及资源泄漏问题的解决流程和相关工具。 分布式系统故障排查 在排查电路板故障时,工程师通常从靠近…

张小明 2026/1/9 12:21:41 网站建设

中国品牌网站建设北京app制作

我扔掉了本地的 Docker 和 VSCode,开发效率反而提升了10倍“在我电脑上明明是好的”,这句话我曾说过无数次,也听过无数次。每次新项目启动或新同事入职,我们总要浪费大量时间在配置开发环境上,过程痛苦且极易出错。我曾…

张小明 2026/1/5 13:45:06 网站建设

商品展示的网站源码role wordpress

当传统PLC遇上开放式协议 【免费下载链接】S7-1500PLCModbus-RTU通信详解分享 S7-1500PLC Modbus-RTU 通信详解 项目地址: https://gitcode.com/Open-source-documentation-tutorial/7c8db 在现代工业自动化项目中,我们常常面临这样的挑战:西门子…

张小明 2026/1/7 8:32:41 网站建设

自己电脑做服务器建网站盈利网站

矩阵特征值与特征向量计算方法详解 在矩阵分析与计算中,特征值和特征向量的计算是一个核心问题,它们在众多领域都有广泛的应用,如物理、工程、计算机科学等。本文将详细介绍几种常见的计算矩阵特征值和特征向量的方法,包括幂法、Jordan标准型、QR方法以及Householder变换等…

张小明 2026/1/7 16:45:48 网站建设