这是我总结的第四种方法中的第一个函数的使用
NtSystemDebugControl 可以调用其14 15号功能即可实现对端口的读写
另外附MJ在windows7RC版NtSystemDebugControl的功能
http://hi.baidu.com/mj0011/blog/item/b3ee910a05811636b1351db5.html
总之NtSystemDebugControl是一个很繁杂但是却很有用的函数 调用他我们能干很多事情
我的机器T4300的处理器 不支持VT虚拟化 我只能在真实机器上装64位系统 下面是2008R2SP1的关于这各函数的反汇编 一开始看到rax rsp好惊奇呢 忽然想起来是64位的系统啊
其他的注释还有链接都写在代码里面 大家又要纠正或者补充的请跟帖
直接在XP SP3下拖动console.exe到CMD就可以看到CMOS密码被清空了
nt!NtSystemDebugControl:
fffff800`01b67ab0 488bc4 mov rax,rsp
fffff800`01b67ab3 4c894820 mov qword ptr [rax+20h],r9
fffff800`01b67ab7 44894018 mov dword ptr [rax+18h],r8d
fffff800`01b67abb 48895010 mov qword ptr [rax+10h],rdx
fffff800`01b67abf 894808 mov dword ptr [rax+8],ecx
fffff800`01b67ac2 53 push rbx
fffff800`01b67ac3 56 push rsi
fffff800`01b67ac4 57 push rdi
fffff800`01b67ac5 4154 push r12
fffff800`01b67ac7 4155 push r13
fffff800`01b67ac9 4156 push r14
fffff800`01b67acb 4157 push r15
fffff800`01b67acd 4881ec90000000 sub rsp,90h
fffff800`01b67ad4 4d8bf1 mov r14,r9
fffff800`01b67ad7 458be0 mov r12d,r8d
fffff800`01b67ada 4c8bea mov r13,rdx
fffff800`01b67add 8bf9 mov edi,ecx
fffff800`01b67adf 8364243800 and dword ptr [rsp+38h],0
fffff800`01b67ae4 83609000 and dword ptr [rax-70h],0
fffff800`01b67ae8 33d2 xor edx,edx
fffff800`01b67aea 448d4234 lea r8d,[rdx+34h]
fffff800`01b67aee 488d4894 lea rcx,[rax-6Ch]
fffff800`01b67af2 e8990dd7ff call nt!memset (fffff800`018d8890)
fffff800`01b67af7 488364244800 and qword ptr [rsp+48h],0
fffff800`01b67afd 488364244000 and qword ptr [rsp+40h],0
fffff800`01b67b03 803d30b7edff00 cmp byte ptr [nt!KdPitchDebugger (fffff800`01a4323a)],0
fffff800`01b67b0a 0f85c0bb0c00 jne nt! ?? ::NNGAKEGL::`string'+0x58590 (fffff800`01c336d0)
[课程]FART 脱壳王!加量不加价!FART作者讲授!