其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

在Delphi编程中使用C语言代码[4]


发布日期:2020年06月20日
 
在Delphi编程中使用C语言代码[4]

以下是引用片段

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不过这已经是另外一个话题了

[] [] [] []

               

上一篇:Delphi向Word中导出数据

下一篇:在Delphi编程中使用C语言代码[3]