利用驱动程序读取BIOS

上传人:s9****2 文档编号:470284996 上传时间:2023-05-17 格式:DOC 页数:15 大小:37KB
返回 下载 相关 举报
利用驱动程序读取BIOS_第1页
第1页 / 共15页
利用驱动程序读取BIOS_第2页
第2页 / 共15页
利用驱动程序读取BIOS_第3页
第3页 / 共15页
利用驱动程序读取BIOS_第4页
第4页 / 共15页
利用驱动程序读取BIOS_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《利用驱动程序读取BIOS》由会员分享,可在线阅读,更多相关《利用驱动程序读取BIOS(15页珍藏版)》请在金锄头文库上搜索。

1、运用驱动程序读取IOS 用BOS的内容作为硬标记进行加密,应用程序可以通过检测ios的特定内容,如主板日期、厂家信息等。如果符合规定,就让程序正常运营;如不符合规定,就判断为盗版,严禁运营。这样可以起到一定的加密锁的作用。 如何得到bs的内容呢?我们已经通过驱动程序进入ring0,在g0中是无所不能的,有一种简朴的函数,可以协助我们达到目的。它就是MmMaIoS函数,在DDK文档中看到该函数的阐明如下:VOID MmapIopace(IN PHYICL_ADRESPhysiadress,IN ULOGNumberOBtes,INMEMRYCAHING_Y CaTe );在Mam38中声明的有个

2、形参mMpIoSpacpto stdcl :DWO, :DWD,:DWORD, :ORD为什么参数个数会有不同呢?因素是MmMapIoSpae第一种参数传递的是一种构造而非构造的指针,而该构造实际的大小是 2 个双字,成果在asm32中体现为总共4个drd 参数。调用非常简朴,invoe MaIopace,物理地址低2位,0,长度,MmNonCachd若成功该函数返回影射后的线性地址,否则返回NUL。这样就可以间接达到读取物理地址中内容的目的。bios开始地址在实模式下是000:0,也就是00000,长度是64k,也就是1000h这样我们就可以用一句nvoke MmapISac,0000h,0

3、,*10,MmNnCache ;把O的物理地址映射为线性地址,返回值在eax中。然后把eax指向的线性地址中的内容复制到系统的缓冲区中,让驱动程序传给ing3下的应用程序。biostesta是驱动源码。bio_es.asm是调用驱动的rig3级程序,它把驱动传回的bos内容写入文献bio_bi,是16进制的,可以用6进制编辑器来查看。实际使用时,可以传递一种随机的密钥给驱动程序,驱动程序负责把bios内容加密后返回,这样可以一定限度上增长解密的难度。程序中已经预留了接口,实现起来很简朴,有爱好者可以自己实现。 如下是程序源代码:已在p和vist下调试通过。;gtmae;文献名itst.bt 作

4、者:盛玉增 10月20日用am2v8和kdkt1.在winxp及ta下调试成功。.386.model fla, stdclloptoaemap:noneincludem32inuewkntstatu.incinlud asm32inluewkntddk.ininclde mam2incudw2ktoskrnlinnludelib masm2libw2kntoskrnl.iinclud mm2Macotris.macITLG_IFO equ TCOE(IE_EE_UKNOWN, 80, MEO_BUFFERE,IL_RA_ACCESS+ FIE_WRT_ACCES).conCUTED_UNCOD

5、_STRINGDeicebio_tst, _usDviceNa, 4COUNTD_UICDE_STRIN??bistest,uSymboiLnkNae,.dbuffb 8*512 du (f6) ;key_1db 2du (0) ;.od;:::::::::::::::::::::::::::::::::::::::::::; DicCreats ;::::::::::::::::::::::::::::::::::::::::::ptchCeeClose proc pDevceObjet:DEVI_BJET, pIr:PIP; CreaFile wscle, to et driver hal

6、e; CloseHnl was alld, t clsedive hade; n both cas w areinuse rocess contx rv ea, pIrpasumeeax:tr RPmov eax.ISatus.Stas, SATUS_SUCESSnd ex.otatus.Ioratio, 0assmeea:notigftal IoComletRques, pIrp, I_NOINCREMETov ,AUUCSSetDispatchCreateClos ep;::::::::::::::::::::::::::::::::::::::::::::::; DispatcContr

7、o ;:::::::::::::::::::::::::::::::::::::spatontopro se esi eiDevicOct:DVCE_OJEC, pIrp:PPlalstatus:NTTUSloc dwByesRened:DWORD;实际返回的字节数and dwtseurned, 0movesi, pIrpase si:pt IRPIoGeturentIrpStakoationesmov edi, exssume di:ptr IO_STACK_OATION.i edi.Pamter.evceIoCoto.IoContrlCode = IOCTL_GET_IFOf di.Par

8、ameters.vcoConl.utputuferLeth 30mov eax, ei.AssciatIrp.SystmBuffer ushad pshaxmo e,ex movecx,30 mov ei,ofset key_ cl rep movsb;保存传过来的数据到key_1,以备做密钥,加密数据后返回。 invoe MmMapIoSpac,00000h,0,64*102,mNonache ;物理地址映射为线性地址,返回值在eaxcmp eax,0 ;eax=,失败jnznext_1jmp next_ xt_1: movei,axpedimovecx,1000hreosbppadm dw

9、BytesRetne, 12*512mov tatus,STTUS_SUCCEjmp nxt_3next_2:p axppad mvstatus, STATS_ALID_DVIC_RQUSTnet_:.elsmov satus, STUBFFE_OSML.endifeseov stat,TTUS_NVALID_DVICE_RESTdfassueedi:nothgps atuspop si.IoStusSttusushdytesRenedpopes.Sttus.Infotionassueesi:nothigfatallfCmpeeRuet, e,IO_NO_INREMNTmo e, staturetDisatcCotl endp;::::::::::::::::::::::::::::::::::;DrvrUod;::::::::::::::::::::::::::::

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号