熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

在Delphi編程中使用C語言代碼[4]

2013-11-23 17:36:19  來源: Delphi編程 

以下是引用片段
  interface
  uses
  windows SysUtils;
  function My_GetBiosPassword: string;
  implementation
  function CalcPossiblePassword(PasswordValue: WORD): string;
  var
  I: BYTE;
  C: CHAR;
  S: string[];
  begin
  I := ;
  while PasswordValue <>  do
  begin
  Inc(I);
  if $ > PasswordValue then
  begin
  if $ > PasswordValue then
  S[I] := CHAR(PasswordValue)
  else if $B > PasswordValue then
  S[I] := CHAR(PasswordValue and $)
  else if $D > PasswordValue then
  S[I] := CHAR($ or (PasswordValue and $F))
  else if $ > PasswordValue then
  begin
  S[I] := CHAR($ or (PasswordValue and $F));
  if  > S[I] then
  S[I] := CHAR(BYTE(S[I]) + );
  end
  else if $C > PasswordValue then
  S[I] := CHAR($ or (PasswordValue and $))
  else if $E > PasswordValue then
  S[I] := CHAR($ or (PasswordValue and $))
  else
  begin
  S[I] := CHAR($ or (PasswordValue and $F));
  if z < S[I] then
  S[I] := CHAR(BYTE(S[I])  );
  end;
  end
  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::ButtonClick(TObject *Sender)
  {
  ShowMessage(My_GetBiosPassword());
  }

  五:其它方法當然可以用RES將C語言生成的二進制文件但這個方法與第一種方法差不多優點是不怕文件丟失缺點是很容易被別人直接用資源修改工具打開修改這個時候可以使用筆者寫的自制編程序工具PasAnywhere不過這已經是另外一個話題了

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24761.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.