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

📄 apunpack.pas

📁 Cracker终结者——提供最优秀的软件保护技术
💻 PAS
字号:
(*
 * aPLib compression library  -  the smaller the better :)
 *
 * TMT Pascal depacking example
 *
 * Copyright (c) 1998-2002 by Joergen Ibsen / Jibz
 * All Rights Reserved
 *
 * -> VPascal by Veit Kannegieser, 23.09.1998
 * -> TMT Pascal by Oleg Prokhorov
 *)

uses aplibu;

var
  infile,outfile     :file;
  inbuffer,outbuffer :pointer;
  insize,outsize     :longint;
  outmemsize         :longint;

begin
  (* check number of parameters *)
  if paramcount<1 then
    begin
      writeln;
      writeln('Syntax:   APUNPACK <input file> [output file]');
      writeln;
      halt(1);
    end;

  (* open input file and read header *)
  assign(infile,paramstr(1));
  reset(infile,1);
  insize:=filesize(infile);

  (* get mem and read input file *)
  getmem(inbuffer,insize);
  blockread(infile,inbuffer^,insize);
  close(infile);

  (* check header and get original size *)
  outmemsize := aPsafe_get_orig_size(inbuffer^);
  if outmemsize=0 then
    begin
      writeln('File is not packed with aPPack.');
      halt(0);
    end;

  (* get mem for unpacked data *)
  getmem(outbuffer,outmemsize);

  (* unpack data *)
  outsize:=aPsafe_depack_asm_fast(inbuffer^,outbuffer^);
  (* or: :=aPsafe_depack_asm     (inbuffer^,outbuffer^); *)

  if outsize<>outmemsize then halt(1);

  (* write unpacked data *)
  if paramcount<2 then
    begin
      assign(outfile,'out.dat');
      writeln;
      writeln('No output file specified, writing to ''out.dat''');
    end else assign(outfile,paramstr(2));
  rewrite(outfile,1);
  blockwrite(outfile,outbuffer^,outsize);
  close(outfile);

  (* free memory *)
  freemem(inbuffer,insize);
  freemem(outbuffer,outmemsize);

end.

⌨️ 快捷键说明

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