[Back to ENCRYPT SWAG index]  [Back to Main SWAG index]  [Original]

{ PD> This looks like something I would like to add to my Programs.  My
 PD> question is, how do you modify the .exe from the Program.  I can do the
 PD> encryption but don't know how to store the encrypted passWords in the
 PD> Program's own .exe.  Any help would be appreciated.
}

Procedure PatchExeFile(ItemAddr:Pointer;itemsize:LongInt);
Var
  FiletoPatch : File;
  HeaderSize  : Word;
  seeksize    : LongInt;
  offset      : Word;
  LDseg       : LongInt;
  ch          : Char;

begin
  assign(FiletoPatch, paramstr(0));
  reset(FiletoPatch, 1);
  seek(FiletoPatch, 8);
  blockread(Filetopatch, headersize, sizeof(headersize));
  offset := ofs(itemAddr^);
  Ldseg := LongInt(Dseg);
  seeksize := 16 * (LDseg - PrefixSeg + HeaderSize) + offset - 256
    seek(Filetopatch, seeksize);
  blockWrite(Filetopatch, ItemAddr^, ItemSize);
  close(Filetopatch);
end;

{Call it this way:
}
PatchExeFile(Addr(passWords), sizeof(passWords));

{note that For this to work, passWords must be a TypeD ConstANT.
So you declare it this way:
}
  PassWords : PassWord_Array =
  (
    (PassWord : #247#154#189#209#18#104#143#29; Protected : False),
    .
    .
    .
    (PassWord : #247#154#189#209#18#104#143#29; Protected : False)
  );

{  PassWord_Array is declard as an Array of PassWord_Record;

    The above declaration is from my Crypto.inC. I have a Crypto.PAS
Program that generates this File from my Make File so that on each
Compile the encryption is changed and the Array of passWords is stored
with valid encrypted passWords. I used #<AsciiValue> because the
encryption can generate values from Ascii 0 to Ascii 255 and some of
those cause troubles in Strings Constants using "'" as delimeters.

    As long as you use:

Const <ConstName> : <ConstType> = <ConstantValue>;

    You will be sure PatchExe can find it's correct adress in the EXE.
From there on you can read it in your TP Program as usual and store it
using the call to PatchExe I gave up there.

    BTW, do as I do and generate a new random encryption key on each
run, Re-encrypting everything and writting it back to the exe. This
drives Hackers mad when they try to decypher your encrypted passWords.

One last note:
    The above PatchExe was written when I used TP 6.0. I haven't checked
    yet if TP 7.0 Uses different mapping of his EXe and it will most
    probably not work on a Protected-mode Compiled EXE.
}

[Back to ENCRYPT SWAG index]  [Back to Main SWAG index]  [Original]