标题:关于of_compute函数写的程序看不懂它的逻辑?
只看楼主
linxixi
Rank: 1
来 自:汕头
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-8-26
 问题点数:0 回复次数:1 
关于of_compute函数写的程序看不懂它的逻辑?
各位兄弟,我有个程序...其中的zmother06.dll文件大小是286780字节,也就是说下面的FileLength('D\zmsoft\zmother06.dll')将返回286780,下面的of_compute函数程序能帮注释下意思吗,真的看不懂呀,有劳各位兄弟了

 

程序如下:

Return of_compute(String(FileLength('D\zmsoft\zmother06.dll')))//这个返回值是来判断系统文件是不是非法的

 

 

其中的上面的of_compute函数程序如下:

 

public                  string                        of_compute

 

value                   string                        as_password

 

 

ulong m[], lv
long ll_len, ll_full
long i, j, k
/*首先需要对信息进行填充,使其字节长度对512求余的结果等于448。
  因此,信息的字节长度(bits length)将被扩展至n*512+448,即n*64+56个字节(bytes),
  n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,
  直到满足上面的条件时才停止用0对信息的填充。
  然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。
  经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。
*/
ll_len = len(as_password)
ll_full = long(ll_len / MD5_BYTESIZE) * MD5_BYTESIZE + MD5_BYTESIZE
k = mod(ll_len,MD5_BYTESIZE)
if k > 56 then ll_full += MD5_BYTESIZE
if k <> 56 then as_password = as_password + char(128)
m[ll_full / 4 - 1] = BitShl( ll_len, 3)
m[ll_full / 4] = BitShr( ll_len, 29)
//
k = 1
ll_len = len(as_password)
for i = 1 to ll_len
m[k] = BitShl(asc(mid(as_password,i,1)),j) + m[k]
j += 8
if j = 32 then
k ++
j = 0
end if
next
//
ulong a, b, c, d, aa, bb, cc, dd

k = 1
a = CAA; b = CBB; c = CCC; d = CDD
for i = 1 to ll_full / MD5_BYTESIZE
aa = a; bb = b; cc = c; dd = d;
ff(a,b,c,d,m[k + 0],  7,CF0);
ff(d,a,b,c,m[k + 1], 12,CF1);
ff(c,d,a,b,m[k + 2], 17,CF2);
ff(b,c,d,a,m[k + 3], 22,CF3);
ff(a,b,c,d,m[k + 4],  7,CF4);
ff(d,a,b,c,m[k + 5], 12,CF5);
ff(c,d,a,b,m[k + 6], 17,CF6);
ff(b,c,d,a,m[k + 7], 22,CF7);
ff(a,b,c,d,m[k + 8],  7,CF8);
ff(d,a,b,c,m[k + 9], 12,CF9);
ff(c,d,a,b,m[k + 10],17,CF10);
ff(b,c,d,a,m[k + 11],22,CF11);
ff(a,b,c,d,m[k + 12], 7,CF12);
ff(d,a,b,c,m[k + 13],12,CF13);
ff(c,d,a,b,m[k + 14],17,CF14);
ff(b,c,d,a,m[k + 15],22,CF15);
//second round
gg(a,b,c,d,m[k + 1],  5,CG0);
gg(d,a,b,c,m[k + 6],  9,CG1);
gg(c,d,a,b,m[k + 11],14,CG2);
gg(b,c,d,a,m[k + 0], 20,CG3);
gg(a,b,c,d,m[k + 5],  5,CG4);
gg(d,a,b,c,m[k + 10], 9,CG5);
gg(c,d,a,b,m[k + 15],14,CG6);
gg(b,c,d,a,m[k + 4], 20,CG7);
gg(a,b,c,d,m[k + 9],  5,CG8);
gg(d,a,b,c,m[k + 14], 9,CG9);
gg(c,d,a,b,m[k + 3], 14,CG10);
gg(b,c,d,a,m[k + 8], 20,CG11);
gg(a,b,c,d,m[k + 13], 5,CG12);
gg(d,a,b,c,m[k + 2],  9,CG13);
gg(c,d,a,b,m[k + 7], 14,CG14);
gg(b,c,d,a,m[k + 12],20,CG15);
// 第三轮
hh(a,b,c,d,m[k + 5],  4,CH0);
hh(d,a,b,c,m[k + 8], 11,CH1);
hh(c,d,a,b,m[k + 11],16,CH2);
hh(b,c,d,a,m[k + 14],23,CH3);
hh(a,b,c,d,m[k + 1],  4,CH4);
hh(d,a,b,c,m[k + 4], 11,CH5);
hh(c,d,a,b,m[k + 7], 16,CH6);
hh(b,c,d,a,m[k + 10],23,CH7);
hh(a,b,c,d,m[k + 13], 4,CH8);
hh(d,a,b,c,m[k + 0], 11,CH9);
hh(c,d,a,b,m[k + 3], 16,CH10);
hh(b,c,d,a,m[k + 6], 23,CH11);
hh(a,b,c,d,m[k + 9],  4,CH12);
hh(d,a,b,c,m[k + 12],11,CH13);
hh(c,d,a,b,m[k + 15],16,CH14);
hh(b,c,d,a,m[k + 2], 23,CH15);
// 第四轮
ii(a,b,c,d,m[k + 0],  6,CI0);
ii(d,a,b,c,m[k + 7], 10,CI1);
ii(c,d,a,b,m[k + 14],15,CI2);
ii(b,c,d,a,m[k + 5], 21,CI3);
ii(a,b,c,d,m[k + 12], 6,CI4);
ii(d,a,b,c,m[k + 3], 10,CI5);
ii(c,d,a,b,m[k + 10],15,CI6);
ii(b,c,d,a,m[k + 1], 21,CI7);
ii(a,b,c,d,m[k + 8],  6,CI8);
ii(d,a,b,c,m[k + 15],10,CI9);
ii(c,d,a,b,m[k + 6], 15,CI10);
ii(b,c,d,a,m[k + 13],21,CI11);
ii(a,b,c,d,m[k + 4],  6,CI12);
ii(d,a,b,c,m[k + 11],10,CI13);
ii(c,d,a,b,m[k + 2], 15,CI14);
ii(b,c,d,a,m[k + 9], 21,CI15);

a += aa; b += bb; c += cc; d += dd
k += 16
next
return lower(pof_hex(a) + pof_hex(b) + pof_hex(c) + pof_hex(d))
搜索更多相关主题的帖子: 兄弟 public 
2011-08-26 14:45
linxixi
Rank: 1
来 自:汕头
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-8-26
得分:0 
各位兄弟,我的QQ是349797592,希望同行的可以加下我的Q,共同进步!
2011-08-26 22:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-348472-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036390 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved