ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode, the executable encryption utility Version 1.0 U S E R' S G U I D E Copyright (c) 1995 Bal zs Scheidler ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 2 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Table of contents ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1. What is ExeCode 2. System requirements 3. Usage 4. Frequently asked questions 5. The AntiDbg feature 6. Your rights 7. Warranty 8. Registration 9. How to contact me 10. Greetings go to ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 2 ExeCode User's Guide Page: 3 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1. What is ExeCode ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode is a small utility, that allows you - the programmer - to encrypt your distributed executables. You can encrypt DOS .EXE or .COM type programs, while they remain executable by the system. This is achieved by a small routine, which decrypts the program when it is executed. The decryption takes about 0.02-0.03 sec. I don't think it is a too long period of time. The benefits using ExeCode are the followings: * Your programs cannot be modified by your users. For example they cannot edit the registration name in it. * Your programs cannot be disassembled by using - for example - Sourcer (tm). * By using the antidebug feature (registered versions only) prevents debugging your code. These are the main reasons I created ExeCode. I developed it for my own use, but I thought it could also be useful for anyone else. You can compress your programs by using one of the compression utilities like DIET and PKLite (tm) before processing them with ExeCode. These compressors are not effective when you compress an already ExeCoded executable. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 2. System requirements ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode uses only the 8086 instruction set, so an ExeCoded program can also be ran on an XT. However it is recommended to use at least a 80286 processor to increase decryption speed. ExeCode requires MS-DOS or PC-DOS version 2.0 or higher. An encrypted executable requires about 1-64 kB more memory to load, depending on the number of relocations it has. The following table shows a timing test. The time shows the period of time that was necessary to run VIVID.EXE version 1.0, which displayed its help screen. The length of the file was 102509 bytes. I tested it on my Cyrix486DX2/80 processor. The Landmark (tm) speed test v2.0 shows 263.82MHz with turbo on, and 115.8MHz with turbo off. ³ Turbo on ³ Turbo Off ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ Without encryption³ 0.0548 sec ³ 0.1407 sec Standard ³ 0.0672 sec ³ 0.1720 sec AntiDbg ³ 0.0732 sec ³ 0.1867 sec ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 3 ExeCode User's Guide Page: 4 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3. Usage ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ This is the help screen displayed by ExeCode: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ExeCode Executable encoder version 1.0 UNREGISTERED shareware ³ ³Copyright (c) 1995 Bal zs Scheidler ³ ³Usage: ³ ³ ExeCode [options] [d:][path]infile [d:][path]outfile ³ ³ ³ ³ Input is the DOS EXE or COM executable file to be encrypted. ³ ³ Options may be one of the followings in any order: ³ ³ /H, /? Display this help screen ³ ³ /A Append antidebug code (registered versions only) ³ ³ /E Force EXE-type output. ³ ³ /O Do not append overlays present in the input file to the³ ³ output file ³ ³ /V Display compile time ³ ³ /Bxxxx Encryption parameter 1. 4 digit hexadecimal number. ³ ³ /Cxxxx Encryption parameter 2. 4 digit hexadecimal number. ³ ³ The /B and /C parameter together define the encryption method. ³ ³ If you find ExeCode easy and convinient to use and you want to ³ ³ distribute programs encrypted with ExeCode, you must register ³ ³ it by sending $19 to the below address. ³ ³ Read the readme file REGISTRATION section for details. ³ ³ Remit the registration fee to ³ ³ OTP Bank 840. ³ ³ 7100 Szeksz rd, HUNGARY ³ ³ account no: 1 068715/021-000 ³ ³ Pay to Bal zs Scheidler ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The following options are available: /A - Append anti-debug code, instead of standard decryption routine. Executes a bit slower, but prevents debugging. /E - The output will be an EXE type file, regardless what the input file type was. /O - When an EXE file contains overlays, by default ExeCode appends it to the encrypted executable. By the /O switch you can disable this feature. /V - Display the ExeCode compilation time and exit. /Bxxxx} These parameters allows you to set the ecnryption and } method. Using different numbers produces different /Cxxxx} encryption. Instead of the xxxx you must type 4 digit hexadecimal numbers. For example: /A1234 /BFEDC. The input should be an MS-DOS .EXE or .COM type program. ExeCode decides whether a file is an EXE or COM based on the first two ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 4 ExeCode User's Guide Page: 5 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ bytes. If the first two bytes are "MZ" or "ZM" ExeCode will handle the file as EXE otherwise as COM. The output is the encrypted executable. It will have the same structure as the input. If an encrypted COM file would be longer than 64kB, ExeCode automatically converts it to an EXE file. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 4. Frequently Asked Questions ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q: Why does the coded EXE hang the system? A: There may be several reasons of this problem. Here are some of these: * The program uses an overlay file which is expected to be at a constant position in the file. Since ExeCode changes the program size, the overlay position is also changed. To avoid this problem, determine the overlay position based on the EXE header in the following way: The header has the following structure Length Ofs Description 2 0 Signature, should contain the letters "MZ" or "ZM" 2 2 Exe image size mod 512 = PageLeft. 2 4 Exe image size div 512 + 1 = PageCnt. . . . There are some additional fields, but these are unnecessary for determining the overlay position. The overlay position is equal to: OvrPos := (PageCnt-1)*512+PageLeft; * The program checks its size or performs an integrity check on itself. Q: What language did you use to develop ExeCode ? A: The decryption routine itself is written of course 100% assembly. The encryption program is written in Borland C++ version 2.0. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 5. The AntiDebug feature ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The registered version of ExeCode includes a feature called AntiDbg, which prevents debugging your program. Of course there is no perfect method against hackers, but I think beginners will be unable to access your code. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 5 ExeCode User's Guide Page: 6 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ !!!!!!!!!!!! A special offer !!!!!!!!!!!! If you can crack the antidebug code found on EXECODE.EXE, send me a letter and you receive a free copy of the registered version. The letter should include the filled registration form (REGISTER.FRM), a signed license agreement, and the details how you succeeded to crack this protection (debugger you used, the tricks you discovered in the antidebug code, suggestions on how to improve the protection, etc.) You only need to pay for the postal charges ($2 in Europe, $5 Overseas). ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 6. Your rights ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode is a copyrighted material. It is protected by international and Hungarian copyright laws. You may not make any changes or modifications to ExeCode or this manual. You may not decompile, disassemble or otherwise reverse-engineer the program in any way. You cannot distribute programs coded by the UNREGISTERED version of the program, however by registering ExeCode, you are given the right to sell, distribute any programs you encrypted using ExeCode. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 7. Warranty ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ I (Bal zs Scheidler) do not warrant that software will meet your requirements or that the operation of the software will be uninterrupted or error free. The warranty does not cover any media or documentation which has been subjected to damage or abuse by you or others. In other words there is no warranty either implied or expressed. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 8. Registration ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ To register ExeCode send me the filled registration form (REGISTER.FRM), the signed license agreement, and remit the registration fee. There are two types of registration for ExeCode - For $19 you get the newest, registered version of ExeCode. - For $29 you get the newest registered version of ExeCode, and you're entitled for two free updates. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 6 ExeCode User's Guide Page: 7 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Future releases for registered users will be available for $10 update cost. I reserve the right to change the registration prices without notice. In addition of the registered ExeCode, you get the shareware versions of some of my programs, and you'll be notified about my program's major updates. For postal charges please add $2 in Europe and $5 overseas. This includes disk prices. Remit the registration fee to: OTP Bank 840. 7100 Szeksz rd, HUNGARY account no: 1 068715/021-000 Pay to Bal zs Scheidler ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 9. How to contact me ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ I'm terribly sorry, but I've no e-mail address yet :-((((. If you have any problems or suggestions write a letter to the below address: Bal zs Scheidler 42. Bem Street Szeksz rd, 7100 Hungary If you have an urgent problem you can call me at: (36)-74/313-997 Please call me in the afternoons between 16h-20h (Central European Time). As soon as I will have an e-mail address I release a new version, which will contain it. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 10. Greetings go to ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Borland International - for their great Pascal compiler (would you mind adding the 386 instruction set to BASM?) - for their great assembler (would you mind adding a command which ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 7 ExeCode User's Guide Page: 8 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ includes a binary file as DB's, like the INCBIN command on the AMIGA) Ben Castricum - for his great unpacking utility (UNP). Please don't hurry to add ExeCode/AntiDbg remover. Michael Bauder - the author of tRON, an unpacking utility, that allows removing even unknown compressors and scramblers. I've just got an UNREGISTERED version of tRON v1.21, when I developed ExeCode, and it could remove the standard encryption. Could we exchange the registered versions of our programs? and to everyone who thinks this program is worth of using... ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ExeCode User's Guide Page: 8