谢谢你提示,我又研究了一下win如何加密屏保密码的,它的加密过程如下:
现在win98的屏保密码加密过程再研究一下了,win的屏保密码加密过程其实是一个很简单的过程,它的具体算法很简单的。如下::780510AF 0FB6442413 movzx eax, byte ptr [esp+13] 初始值为0,以后每次加1,就为得到下面的cl值,所以cl值只同位数值有关,不同密码有关。
:780510B4 40 inc eax
:780510B5 99 cdq
:780510B6 33C2 xor eax, edx
:780510B8 2BC2 sub eax, edx
:780510BA 25FF000000 and eax, 000000FF
:780510BF 33C2 xor eax, edx
:780510C1 2BC2 sub eax, edx
:780510C3 88442413 mov byte ptr [esp+13], al
:780510C7 0FB6C0 movzx eax, al
:780510CA 8D0C38 lea ecx, dword ptr [eax+edi]
:780510CD 8A19 mov bl, byte ptr [ecx]
:780510CF 0FB6442412 movzx eax, byte ptr [esp+12]
:780510D4 0FB6F3 movzx esi, bl
:780510D7 03C6 add eax, esi
:780510D9 99 cdq
:780510DA 33C2 xor eax, edx
:780510DC 2BC2 sub eax, edx
:780510DE 25FF000000 and eax, 000000FF
:780510E3 33C2 xor eax, edx
:780510E5 2BC2 sub eax, edx
:780510E7 88442412 mov byte ptr [esp+12], al
:780510EB 0FB6C0 movzx eax, al
:780510EE 8D1438 lea edx, dword ptr [eax+edi]
:780510F1 8A02 mov al, byte ptr [edx]
:780510F3 8801 mov byte ptr [ecx], al
:780510F5 881A mov byte ptr [edx], bl
:780510F7 0FB601 movzx eax, byte ptr [ecx]
:780510FA 03C6 add eax, esi
:780510FC 99 cdq
:780510FD 33C2 xor eax, edx
:780510FF 2BC2 sub eax, edx
:78051101 25FF000000 and eax, 000000FF
:78051106 33C2 xor eax, edx
:78051108 2BC2 sub eax, edx
:7805110A 8A0C07 mov cl, byte ptr [edi+eax]
:7805110D 8B442420 mov eax, dword ptr [esp+20]
:78051111 300C28 xor byte ptr [eax+ebp], cl
:78051114 45 inc ebp
:78051115 3B6C241C cmp ebp, dword ptr [esp+1C]
:78051119 7C94 jl 780510AF
win的加密过程是先使用从0开始将从780510AF开始计算一直到7805110A计算结束,得到cl值这个值不于正确的密码有关,所以它只同密码的位数有关的,具体关系如下:
位数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ……
密文: 48 EE 76 1D 67 69 A1 1B 7A 8C 47 F8 54 95 97 5F ……
win的加密过程就是将上面的密文同你输入的密码进行xor运算,得到的加密密文后再同以前保存的密码比较,如果……。正在就不用说了。
win将密码的加密密文放在这里
HKEY_USERS\.DEFAULT\Control Panel\desktop\ScreenSave_Data
它当然是最后的密文了。你在这里可以得到十六位的密文。如果你设的密码为:????(这个是演示使用的),在这里你将得到如下的数据:
0000 37 38 44 46 34 34 32 45 78DF442E
0001 00
这里最后的00就是密码的结束标志,上面才是密文的。它将是你输入密码的两倍,这个很容易理解,现在大家就可以使用从位数得到的密文来对这个加密的密码进行解密处理。
具体操作为:屏保加密密码=屏保位数密文XOR屏保明文
屏保位数密文: 48 EE 76 1D
XOR 屏保明文:
= 屏保加密密码: 78 DF 44 2E
通过上面的反xor运算可以得到屏保密码的明文了。运算结果为:30 31 32 33,则明文就为:0123。这下屏保的密码破解过程就完全研究成功了。
现在可以很简单的制作出win98的屏保密码破解软件了。当然你得输入加密后的密文了。这样就可以得到明文了。具体制作过程很简单的,大家使用C就可以解决了
