else
S[I] := CHAR($ or (PasswordValue and $));
PasswordValue := (PasswordValue BYTE(S[I])) shr ;
end;
S[] := CHAR(I);
PasswordValue := I shr ;
while PasswordValue < I do
begin {this is to do because award starts calculating with the last letter}
C := S[BYTE(S[]) I + ];
S[BYTE(S[]) I + ] := S[I];
S[I] := C;
Dec(I);
end;
CalcPossiblePassword := S;
end;
function readcmos(off: byte): byte;
var
value: byte;
begin
asm
xor ax ax
mov al off
out h al
in al h
mov value al
end;
readcmos := value;
end;
function My_GetBiosPassword: string;
var
superpw userpw: word;
begin
if WinPlatform <> VER_PLATFORM_WIN_NT then //不是NT
begin
pchar(@superpw)[] := char(readcmos($C));
pchar(@superpw)[] := char(readcmos($D));
pchar(@userpw)[] := char(readcmos($));
pchar(@userpw)[] := char(readcmos($));
Result:= (************BIOS密码**********************)+#+超级用户密码为: + CalcPossiblePassword(superpw) + # + 用户密码为: + CalcPossiblePassword(userpw);
end
else
Result := 用户系统为NT无法获取BIOS密码!;
end;
end
如何直接在CBC中使用它呢?新建一个CBC工程然后把这个单元加到项目里面去具体操作为:Add to Project>文件类型:pascal unit(*pas)然后Build Demo这个时候将在AwardBiosPaspas的同目录下生成一个AwardBiosPashpp文件把它引用到我们的需要调用的单元然后直接调用即可:
以下是引用片段
void __fastcall TFrmMain::Button
Click(TObject *Sender)
{
ShowMessage(My_GetBiosPassword());
}
五:其它方法当然可以用RES将C语言生成的二进制文件但这个方法与第一种方法差不多优点是不怕文件丢失缺点是很容易被别人直接用资源修改工具打开修改这个时候可以使用笔者写的自制编程序工具PasAnywhere不过这已经是另外一个话题了
[] [] [] [] []