番茄系統(tǒng)家園 - 免費(fèi)重裝系統(tǒng)!簡單裝系統(tǒng),人人都是裝機(jī)大師!
當(dāng)前位置:首頁>Win7資訊 > win7 64 ssdt

win7 64 ssdt

來源:番茄系統(tǒng)家園瀏覽:時(shí)間:2021-08-15 07:50:07

win7 64 ssdt

然后是资料里面带的两个SSDT基址的函数:

方法1(这个方法蓝屏了,我直接用的方法2)

(){[13]="\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x25\xFF\x0F\x00\x00";=();=();;ULONGLONGi,tbl_address,b;for(i=0;iCodeScanEnd-CodeScanStart;i++){if(!memcmp((char*)(ULONGLONG)CodeScanStart+i,(char*)KiSystemServiceStart_pattern,13)){for(b=0;b50;b++){tbl_address=((ULONGLONG)CodeScanStart+i+b);if(*(USHORT*)((ULONGLONG)tbl_address)==(USHORT)0x8d4c)return((LONGLONG)tbl_address+7)+*(LONG*)(tbl_address+3);}}}return0;}方法2

ULONGLONGMyGetKeServiceDescriptorTable64(){PUCHARStartSearchAddress=(PUCHAR)__readmsr(0xC0000082);PUCHAREndSearchAddress=StartSearchAddress+0x500;PUCHARi=NULL;UCHARb1=0,b2=0,b3=0;ULONGtemplong=0;ULONGLONGaddr=0;for(i=StartSearchAddress;iEndSearchAddress;i++){if(MmIsAddressValid(i)MmIsAddressValid(i+1)MmIsAddressValid(i+2)){b1=*i;b2=*(i+1);b3=*(i+2);if(b1==0x4cb2==0x8db3==0x15)//4c8d15{memcpy(templong,i+3,4);addr=(ULONGLONG)templong+(ULONGLONG)i+7;returnaddr;}}}return0;}

接下来就是讲述SSDT函数地址了。在获得地址之前,需要知道SSDT函数的INDEX。获得这个INDEX的方法很简单,直接在RING3读取NTDLL的内容即可。使用WINDBG的方法如下:随便创建一个进程,然后使用WINDBG附加:

可以看到两次反汇编的结果几乎完全相同,唯一不同的地方是第二句。XXh就是此函数的index。知道INDEX之后,就可以计算地址了(资料上也是给了两个方法,建议使用方法2)。

方法1

VOIDInitxxxx(){UCHARstrShellCode[36]="\x48\x8B\xC1\x4C\x8D\x12\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x4E\x8B\x14\x17\x4D\x63\x1C\x82\x49\x8B\xC3\x49\xC1\xFB\x04\x4D\x03\xD3\x49\x8B\xC2\xC3";/*movrax,rcx;rcx=indexlear10,[rdx];rdx=ssdtmovedi,eaxshredi,7andedi,20hmovr10,qwordptr[r10+rdi]movsxdr11,dwordptr[r10+rax*4]movrax,r11sarr11,4addr10,r11movrax,r10ret*/scfn=ExAllocatePool(NonPagedPool,36);memcpy(scfn,strShellCode,36);}ULONGLONGGetSSDTFunctionAddress64(ULONGLONGNtApiIndex){ULONGLONGret=0;ULONGLONGssdt=MyGetKeServiceDescriptorTable64();if(scfn==NULL)Initxxxx();ret=scfn(NtApiIndex,ssdt);returnret;}

方法2

typedefstruct_SYSTEM_SERVICE_TABLE{PVOIDServiceTableBase;PVOIDServiceCounterTableBase;ULONGLONGNumberOfServices;PVOIDParamTableBase;}SYSTEM_SERVICE_TABLE,*PSYSTEM_SERVICE_TABLE;ULONGLONGGetSSDTFunctionAddress64_2(ULONGLONGIndex){LONGdwTemp=0;ULONGLONGqwTemp=0,stb=0,ret=0;PSYSTEM_SERVICE_TABLEssdt=(PSYSTEM_SERVICE_TABLE)MyGetKeServiceDescriptorTable64();stb=(ULONGLONG)(ssdt-ServiceTableBase);qwTemp=stb+4*Index;dwTemp=*(PLONG)qwTemp;dwTemp=dwTempret=stb+(LONG64)dwTemp;returnret;}

最后,总结一下WIN32和WIN64在SSDT方面的不同(我直接截图过来)。大家可以把SSDT(其实SHADOWSSDT同理)想像成一排保险柜,每个柜子都有编号(从0开始),柜子的长度为四字节,每个柜子里都放了一个LONG数据。但不同的是,WIN32的“柜子”里放的数据是某个函数的绝对地址,而WIN64的“柜子”里放的数据是某个函数的偏移地址。这个偏移地址要经过一定的计算才能变成绝对地址。

测试代码:

#includentddk.h#includewindef.h#include"MyDriver.h"#pragmaintrinsic(__readmsr)typedefUINT64(__fastcall*SCFN)(UINT64,UINT64);SCFNscfn;ULONGLONGMyGetKeServiceDescriptorTable64(){PUCHARStartSearchAddress=(PUCHAR)__readmsr(0xC0000082);PUCHAREndSearchAddress=StartSearchAddress+0x500;PUCHARi=NULL;UCHARb1=0,b2=0,b3=0;ULONGtemplong=0;ULONGLONGaddr=0;for(i=StartSearchAddress;iEndSearchAddress;i++){if(MmIsAddressValid(i)MmIsAddressValid(i+1)MmIsAddressValid(i+2)){b1=*i;b2=*(i+1);b3=*(i+2);if(b1==0x4cb2==0x8db3==0x15)//4c8d15{memcpy(templong,i+3,4);addr=(ULONGLONG)templong+(ULONGLONG)i+7;returnaddr;}}}return0;}VOIDInitxxxx(){UCHARstrShellCode[36]="\x48\x8B\xC1\x4C\x8D\x12\x8B\xF8\xC1\xEF\x07\x83\xE7\x20\x4E\x8B\x14\x17\x4D\x63\x1C\x82\x49\x8B\xC3\x49\xC1\xFB\x04\x4D\x03\xD3\x49\x8B\xC2\xC3";/*movrax,rcx;rcx=indexlear10,[rdx];rdx=ssdtmovedi,eaxshredi,7andedi,20hmovr10,qwordptr[r10+rdi]movsxdr11,dwordptr[r10+rax*4]movrax,r11sarr11,4addr1win7 64 ssdt0,r11movrax,r10ret*/scfn=ExAllocatePool(NonPagedPool,36);memcpy(scfn,strShellCode,36);}ULONGLONGGetSSDTFunctionAddress64(ULONGLONGNtApiIndex){ULONGLONGret=0;ULONGLONGssdt=MyGetKeServiceDescriptorTable64();if(scfn==NULL)Initxxxx();ret=scfn(NtApiIndex,ssdt);returnret;}typedefstruct_SYSTEM_SERVICE_TABLE{PVOIDServiceTableBase;PVOIDServiceCounterTableBase;ULONGLONGNumberOfServices;PVOIDParamTableBase;}SYSTEM_SERVICE_TABLE,*PSYSTEM_SERVICE_TABLE;ULONGLONGGetSSDTFunctionAddress64_2(ULONGLONGIndex){LONGdwTemp=0;ULONGLONGqwTemp=0,stb=0,ret=0;PSYSTEM_SERVICE_TABLEssdt=(PSYSTEM_SERVICE_TABLE)MyGetKeServiceDescriptorTable64();stb=(ULONGLONG)(ssdt-ServiceTableBase);qwTemp=stb+4*Index;dwTemp=*(PLONG)qwTemp;dwTemp=dwTempret=stb+(LONG64)dwTemp;returnret;}VOIDDriverUnload(PDRIVER_OBJECTpDriverObj){UNICODE_STRINGstrLink;RtlInitUnicodeString(strLink,LINK_NAME);IoDeleteSymbolicLink(strLink);IoDeleteDevice(pDriverObj-DeviceObject);}NTSTATUSDispatchCreate(PDEVICE_OBJECTpDevObj,PIRPpIrp){pIrp-IoStatus.Status=STATUS_SUCCESS;pIrp-IoStatus.Information=0;IoCompleteRequest(pIrp,IO_NO_INCREMENT);returnSTATUS_SUCCESS;}NTSTATUSDispatchClose(PDEVICE_OBJECTpDevObj,PIRPpIrp){pIrp-IoStatus.Status=STATUS_SUCCESS;pIrp-IoStatus.Information=0;IoCompleteRequest(pIrp,IO_NO_INCREMENT);returnSTATUS_SUCCESS;}NTSTATUSDispatchIoctl(PDEVICE_OBJECTpDevObj,PIRPpIrp){NTSTATUSstatus=STATUS_INVALID_DEVICE_REQUEST;PIO_STACK_LOCATIONpIrpStack;ULONGuIoControlCode;PVOIDpIoBuffer;ULONGuInSize;ULONGuOutSize;pIrpStack=IoGetCurrentIrpStackLocation(pIrp);uIoControlCode=pIrpStack-Parameters.DeviceIoControl.IoControlCode;pIoBuffer=pIrp-AssociatedIrp.SystemBuffer;uInSize=pIrpStack-Parameters.DeviceIoControl.InputBufferLength;uOutSize=pIrpStack-Parameters.DeviceIoControl.OutputBufferLength;switch(uIoControlCode){;}if(status==STATUS_SUCCESS)pIrp-IoStatus.Information=uOutSize;elsepIrp-IoStatus.Information=0;pIrp-IoStatus.Status=status;IoCompleteRequest(pIrp,IO_NO_INCREMENT);returnstatus;}NTSTATUSDriverEntry(PDRIVER_OBJECTpDriverObj,PUNICODE_STRINGpRegistryString){NTSTATUSstatus=STATUS_SUCCESS;UNICODE_STRINGustrLinkName;UNICODE_STRINGustrDevName;PDEVICE_OBJECTpDevObj;pDriverObj-MajorFunction[IRP_MJ_CREATE]=DispatchCreate;pDriverObj-MajorFunction[IRP_MJ_CLOSE]=DispatchClose;pDriverObj-MajorFunction[IRP_MJ_DEVICE_CONTROL]=DispatchIoctl;pDriverObj-DriverUnload=DriverUnload;RtlInitUnicodeString(ustrDevName,DEVICE_NAME);status=IoCreateDevice(pDriverObj,0,ustrDevName,FILE_DEVICE_UNKNOWN,0,FALSE,pDevObj);if(!NT_SUCCESS(status))returnstatus;if(IoIsWdmVersionAvailable(1,0x10))RtlInitUnicodeString(ustrLinkName,LINK_GLOBAL_NAME);elseRtlInitUnicodeString(ustrLinkName,LINK_NAME);status=IoCreateSymbolicLink(ustrLinkName,ustrDevName);if(!NT_SUCCESS(status)){IoDeleteDevice(pDevObj);returnstatus;}//testDbgPrint("[method1]SSDT:%llx

",MyGetKeServiceDescriptorTable64());DbgPrint("[method1]NtOpenProcess:%llx

",GetSSDTFunctionAddress64(0x23));//WIN7X64HARDCODEDbgPrint("[method1]NtTerminateProcess:%llx

",GetSSDTFunctionAddress64(0x29));//WIN7X64HARDCODEDbgPrint("[method2]NtOpenProcess:%llx

",GetSSDTFunctionAddress64_2(0x23));//WIN7X64HARDCODEDbgPrint("[method2]NtTerminateProcess:%llx

",GetSSDTFunctionAddress64_2(0x29));//WIN7X64HARDCODE//testreturnSTATUS_SUCCESS;}执行结果:

相关阅读

  • win7旗舰版产品密钥永久激活分享
  • win7激活密钥教程
  • win7 64 ssdt
  • 推薦系統(tǒng)

    • 雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載

      雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載64位
      系統(tǒng)大小:0MB系統(tǒng)類型:WinXP

      雨林木風(fēng)在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)知名品牌,雨林木風(fēng)WindowsXP其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,是一款穩(wěn)定流暢的系統(tǒng),雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載,有需要的朋友速度下載吧。

      系統(tǒng)等級:
      進(jìn)入下載 >
    • 蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用

      蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用64位
      系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win7

      蘿卜家園win7純凈版是款非常純凈的win7系統(tǒng),此版本優(yōu)化更新了大量的驅(qū)動(dòng),幫助用戶們進(jìn)行舒適的使用,更加的適合家庭辦公的使用,方便用戶,有需要的用戶們快來下載安裝吧。

      系統(tǒng)等級:
      進(jìn)入下載 >
    • 雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載

      雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載64位
      系統(tǒng)大?。?/em>1.01GB系統(tǒng)類型:WinXP

      雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載,雨林木風(fēng)WinXP系統(tǒng)技術(shù)積累雄厚深耕多年,采用了新的系統(tǒng)功能和硬件驅(qū)動(dòng),可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對硬件的加速,加固了系統(tǒng)安全策略,運(yùn)行環(huán)境安全可靠穩(wěn)定。

      系統(tǒng)等級:
      進(jìn)入下載 >
    • 蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載

      蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載64位
      系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win10

      蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,(win10企業(yè)版,win10 ghost,win10鏡像),蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 ghost鏡像 X64位系統(tǒng)下載,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園

      系統(tǒng)等級:
      進(jìn)入下載 >
    • 蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載

      蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載64位
      系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win10

      蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 ghost X64位 系統(tǒng)下載,蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園win10國內(nèi)鏡像版,基于國內(nèi)用戶的習(xí)慣,做

      系統(tǒng)等級:
      進(jìn)入下載 >
    • windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載

      windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載64位
      系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win11

      蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,windows11下載 蘿卜家園win11專業(yè)版 X64位 官網(wǎng)正式版可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對硬件的加速,使得軟件在WINDOWS11系統(tǒng)中運(yùn)行得更加流暢,加固了系統(tǒng)安全策略,WINDOWS11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運(yùn)行環(huán)境安全可靠穩(wěn)定。

      系統(tǒng)等級:
      進(jìn)入下載 >

    熱門系統(tǒng)