第7章WinLogon编程(7)

2018-12-27 16:05

(wchar_t))+sizeof(wchar_t);

EncodedString.Buffer=(PWSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,EncodedString.MaximumLength); //因为在Windows2000中hash-byte并不存放在编码中 //所以在这里进行的是暴力破解 //下面的循环中i就是hash-byte

//我们将i从0x00到0xff分别对密文进行解密

//如果有一个hash-byte使得所有密码都是可见字符,就认为是有效的 //这个算法实际上是从概率角度来解码的

//因为如果hash-byte不正确,而解密出来的密码都是可见字符的概率非常小 for(i=0;i<=0xff;i++) {

CopyMemory(EncodedString.Buffer,PasswordP,PasswordLength* sizeof(wchar_t));

//使用i作为hash-byte对密文进行解码

pfnRtlRunDecodeUnicodeString((BYTE)i,&EncodedString); //检查解码出的密码是否完全由可见字符组成 //如果是则认为是正确的解码

PBYTEp=(PBYTE)EncodedString.Buffer; BOOLViewable=TRUE; DWORDj,k;

for(j=0;(j

if((*p)&&(*(PBYTE)(DWORD(p)+1)==0)) {

if(*p<0x20)Viewable=FALSE; if(*p>0x7e)Viewable=FALSE;

//0x20是空格,0X7E是~,所有密码允许使用的可见字符都包括在里面了 } else

Viewable=FALSE; k=DWORD(p); k++;k++; p=(PBYTE)k; }

if(Viewable) {

printf(\UserName,EncodedString.Buffer); printf(\} }

HeapFree(GetProcessHeap(),0,EncodedString.Buffer); }//DisplayPasswordWin2K

如图7-1所示。

图7-1用户密码的获得 7.5小结

本章通过两个实例介绍了WinLogon通知包和GINA动态链接库的编写方法,以 及它们的特殊应用。 7.6思考题

(1)WinLogon通知包相对于编写WindowsNT服务程序,有哪些优势? (2)GINA动态链接库和WinLogon通知包有哪些区别? 7.7练习题

(1)编写一个简单的WinLogon通知包动态链接库,实现关机或者重新启动时能够 清理上网记录,包括cookie、浏览历史、浏览键入的URL。

(2)编写一个进程,注入到Winlogon进程,实现开机时能够自动完成文件的清理。


第7章WinLogon编程(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:20101014123937765《社会工作导论》试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: