以下是引用片段
interface
uses
windowsSysUtils;
functionMy_GetBiosPassword:string;
implementation
functionCalcPossiblePassword(PasswordValue:WORD):string;
var
I:BYTE;
C:CHAR;
S:string[];
begin
I:=;
whilePasswordValue<>do
begin
Inc(I);
if$>PasswordValuethen
begin
if$>PasswordValuethen
S[I]:=CHAR(PasswordValue)
elseif$B>PasswordValuethen
S[I]:=CHAR(PasswordValueand$)
elseif$D>PasswordValuethen
S[I]:=CHAR($or(PasswordValueand$F))
elseif$>PasswordValuethen
begin
S[I]:=CHAR($or(PasswordValueand$F));
if>S[I]then
S[I]:=CHAR(BYTE(S[I])+);
end
elseif$C>PasswordValuethen
S[I]:=CHAR($or(PasswordValueand$))
elseif$E>PasswordValuethen
S[I]:=CHAR($or(PasswordValueand$))
else
begin
S[I]:=CHAR($or(PasswordValueand$F));
ifz<S[I]then
S[I]:=CHAR(BYTE(S[I]));
end;
end
else
S[I]:=CHAR($or(PasswordValueand$));
PasswordValue:=(PasswordValueBYTE(S[I]))shr;
end;
S[]:=CHAR(I);
PasswordValue:=Ishr;
whilePasswordValue<Ido
begin{thisistodobecauseawardstartscalculatingwiththelastletter}
C:=S[BYTE(S[])I+];
S[BYTE(S[])I+]:=S[I];
S[I]:=C;
Dec(I);
end;
CalcPossiblePassword:=S;
end;
functionreadcmos(off:byte):byte;
var
value:byte;
begin
asm
xoraxax
movaloff
outhal
inalh
movvalueal
end;
readcmos:=value;
end;
functionMy_GetBiosPassword:string;
var
superpwuserpw:word;
begin
ifWinPlatform<>VER_PLATFORM_WIN_NTthen//不是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__fastcallTFrmMain::ButtonClick(TObject*Sender)
{
ShowMessage(My_GetBiosPassword());
}
五:其它方法当然可以用RES将C语言生成的二进制文件但这个方法与第一种方法差不多优点是不怕文件丢失缺点是很容易被别人直接用资源修改工具打开修改这个时候可以使用笔者写的自制编程序工具PasAnywhere不过这已经是另外一个话题了
[] [] [] []