⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_main.pas

📁 Cracker终结者——提供最优秀的软件保护技术
💻 PAS
字号:
unit t_main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  aPLib, ExtCtrls, StdCtrls, ComCtrls;

type
  TfrmMain = class(TForm)
    aPLib: TaPLib;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    OD: TOpenDialog;
    GroupBox1: TGroupBox;
    PB: TProgressBar;
    Label3: TLabel;
    Label4: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    CancelBtn: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    Cancel   : Boolean;
    FileSize : DWORD;
  end;

(*$IFDEF DYNAMIC_VERSION*)
  function CallBack(w1, w2 : DWORD) : DWORD;stdcall;
(*$ELSE*)
  function CallBack(w1, w2 : DWORD) : DWORD;cdecl;
(*$ENDIF*)

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}

function CallBack(w1, w2 : DWORD) : DWORD;
begin
  with frmMain do
  begin
    Label4.Caption := FormatFloat('##%', ((FileSize - (w1-w2))/FileSize) * 100);
    PB.Position    := Round(w1/FileSize*100);

    Application.ProcessMessages;

    if Cancel then Result := aP_pack_break
              else Result := aP_pack_continue;
  end;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  FileIn,
  FileOut : TFileStream;
  Length  : DWORD;
  Buffer  : Pointer;
begin
  if not OD.Execute then Exit;

  FileIn := TFileStream.Create(OD.FileName,fmOpenRead or fmShareDenyWrite);
  GetMem(Buffer, FileIn.Size);
  Length := FileIn.Size;
  FileIn.Read(Buffer^, Length);

  aPLib.Source   := Buffer;
  aPLib.Length   := Length;

  aPlib.CallBack := @CallBack;

  FileSize          := FileIn.Size;
  Cancel            := False;
  CancelBtn.Enabled := True;

  aPLib.Pack;

  FileIn.Destroy;

  if aPLib.Length = 0 then Exit;

  FileOut := TFileStream.Create(ExtractFilePath(OD.FileName)+'out.apk', fmCreate);
  FileOut.Write(aPLib.Destination^, aPLib.Length);
  FileOut.Destroy;

  CancelBtn.Enabled := False;

  ShowMessage('Packed file name is out.apk !');

end;

procedure TfrmMain.Button2Click(Sender: TObject);
var
  FileIn,
  FileOut : TFileStream;
  Buffer  : Pointer;

begin
  if not OD.Execute then Exit;

  FileIn := TFileStream.Create(OD.FileName,fmOpenRead or fmShareDenyWrite);

  GetMem(Buffer, FileIn.Size);
  FileIn.Read(Buffer^, FileIn.Size);

  aPLib.Source := Buffer;

  aPLib.DePack;

  FileIn.Destroy;

  FileOut := TFileStream.Create(ExtractFilePath(OD.FileName)+'out.dat', fmCreate or fmOpenWrite);
  FileOut.Write(aPLib.Destination^, aPLib.Length);
  FileOut.Destroy;

  ShowMessage('Original file name is out.dat !');
end;

procedure TfrmMain.CancelBtnClick(Sender: TObject);
begin
  Cancel := True;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -