作者: 陳經韬[email protected],http://www.138soft.com
更新: 2004-01-17
=======================================================}
以下是引用片段:
interface
uses
Windows,SysUtils;
functionMy_GetBiOSPassWord:string;
implementation
functionCalcPossiblePassword(PasswordValue:Word):string;
var
I:BYTE;
C:CHAR;
S:string[8];
begin
I:=0;
whilePassWordValue<>0do
begin
Inc(I);
if$263>PassWordValuethen
begin
if$80>PassWordValuethen
S[I]:=CHAR(PassWordValue)
elseif$B0>PassWordValuethen
S[I]:=CHAR(PassWordValueand$77)
elseif$11D>PassWordValuethen
S[I]:=CHAR($30or(PassWordValueand$0F))
elseif$114>PassWordValuethen
begin
S[I]:=CHAR($64or(PassWordValueand$0F));
if'0'>S[I]then
S[I]:=CHAR(BYTE(S[I])+8);
end
elseif$1C2>PassWordValuethen
S[I]:=CHAR($70or(PassWordValueand$03))
elseif$1E4>PassWordValuethen
S[I]:=CHAR($30or(PassWordValueand$03))
else
begin
S[I]:=CHAR($70or(PassWordValueand$0F));
if'z'<S[I]then
S[I]:=CHAR(BYTE(S[I])-8);
end;
end
else
S[I]:=CHAR($30or(PassWordValueand$3));
PasswordValue:=(PassWordValue-BYTE(S[I]))shr2;
end;
S[0]:=CHAR(I);
PassWordValue:=Ishr1;
whilePassWordValue<Ido
begin{thisistodobecauseawardstartscalculatingwiththelastletter}
C:=S[BYTE(S[0])-I+1];
S[BYTE(S[0])-I+1]:=S[I];
S[I]:=C;
Dec(I);
end;
CalcPossiblePassWord:=S;
end;
functionreadcmos(off:byte):byte;
var
value:byte;
begin
asm
xorax,ax
moval,off
out70h,al
inal,71h
movvalue,al
end;
readcmos:=value;
end;
functionMy_GetBiOSPassWord:string;
var
superpw,userpw:Word;
begin
ifWin32Platform<>VER_PLATFORM_WIN32_NTthen//不是NT
begin
pchar(@superpw)[0]:=char(readcmos($1C));
pchar(@superpw)[1]:=char(readcmos($1D));
pchar(@userpw)[0]:=char(readcmos($64));
pchar(@userpw)[1]:=char(readcmos($65));
Result:=('************BiOS密碼**********************')+#13+'超級用戶密碼為:'+CalcPossiblePassword(superpw)+#13+'用戶密碼為:'+CalcPossiblePassWord(userpw);
end
else
Result:='用戶系統為NT,無法獲取BiOS密碼!';
end;
end.
如何直接在CBC中使用它呢?新建一個CBC工程,然後把這個單元加到項目裡面去.具體操作為:Add to Project--->文件類型:pascal unit(*.pas),然後Build Demo1.這個時候將在AwardBiosPas.pas的同目錄下生成一個AwardBiOSPas.hpp文件.把它引用到我們的需要調用的單元.然後直接調用即可:
以下是引用片段:
void__fastcallTFrmMain::Button1Click(TObject*Sender)
{
ShowMessage(My_GetBiOSPassWord());
}
五:其它方法.當然可以用RES將C語言生成的二進制文件,但這個方法與第一種方法差不多.優點是不怕文件丟失.缺點是很容易被別人直接用資源修改工具打開修改.這個時候可以使用筆者寫的自制編程序工具PasAnywhere.不過這已經是另外一個話題了.