加为好友
发送私信
在线聊天
cnwikee
等级:
可用分等级:短工
总技术分:0
总技术分排名:313963
揭贴率:0.00%
发表于:2008-08-19 15:11:37 楼主
program getzcm; {$APPTYPE CONSOLE} uses SysUtils, Registry, Windows; var Reg: TRegistry; buf: PByteArray; size: Integer; mask: array[0..19] of Byte = ($52,$D6,$E2,$E9,$EA,$F0,$CC,$F2,$35,$64,$07,$AD,$82,$C8,$78,$75,$9F,$31,$45,$BC); i: integer; username, password: string; begin try Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly('SOFTWARE\Eset\Nod\CurrentVersion\Modules\Update\Settings\Config000\Settings') then begin username := Reg.ReadString('Username'); size := Reg.GetDataSize('Password'); GetMem(buf, size); Reg.ReadBinaryData('Password', buf^, size); i := 0; while i < size - 1 do begin password := password + chr(buf[i] xor mask[i]); Inc(i, 2); end; WriteLn('Username: ' + username); WriteLn('Password: ' + password); end; finally Reg.CloseKey; Reg.Free; end; except on E: Exception do Writeln(E.Classname, ': ', E.Message); end; end. -------------------------------------------------------------------------------------- 以上是代码原文,我没有学delhpi 看不大懂 这是我理解的: buf: PByteArray;//这个我不知道作什么 username := Reg.ReadString('Username'); // 是读注册表的项值 size := Reg.GetDataSize('Password'); //这个是不是读注册表中password值的 字符长度 ? GetMem(buf, size);//这个我上网查是说分配内存,不明白做什么 Reg.ReadBinaryData('Password', buf^, size); //这个完全不明白这个意思 i := 0; while i < size - 1 do begin password := password + chr(buf[i] xor mask[i]); //这个是把 buf[i] 和 mask[i] 进行异或比较取值 不明白buf[i]是什么? 和 mask[i]就是 mask: array[0..19] of Byte = ($52,$D6,$E2,$E9,$EA,$F0,$CC,$F2,$35,$64,$07,$AD,$82,$C8,$78,$75,$9F,$31,$45,$BC);这个 ?? Inc(i, 2); // 这个不清楚 end; WriteLn('Username: ' + username); //这里是写出换算好的值 WriteLn('Password: ' + password); //这里是写出换算好的值 我主要是知道这个算法的原理,我学的是易语言,看这个看不懂。希望赐教!!!感激不尽
问题点数: 30 回复次数:6
显示所有回复 显示星级回复 显示楼主回复
修改
删除
举报
引用
回复