Go Back   FileForums > Game Backup > PC Games > PC Games - CD/DVD Conversions > Conversion Tutorials

Reply
 
Thread Tools Display Modes
  #1  
Old 30-08-2024, 04:40
BLACKFIRE69's Avatar
BLACKFIRE69 BLACKFIRE69 is offline
Registered User
 
Join Date: Mar 2019
Location: In the Hell
Posts: 668
Thanks: 471
Thanked 2,374 Times in 542 Posts
BLACKFIRE69 is on a distinguished road
Arrow ISCompilerEx.dll: Protect and Compile InnoSetup Scripts with Ease

ISCompilerEx.dll Documentation


Overview

ISCompilerEx.dll is a versatile plugin designed to enhance the capabilities of InnoSetup by allowing script compilation from both local script files and encrypted resources embedded within the DLL. The latest update introduces support for encrypted code snippets, enabling you to securely share your scripts while protecting specific portions of the code.


Key Features

Quote:
- Compile Local Scripts: Compile scripts directly from local files.

- Compile Encrypted Embedded Scripts: Compile scripts embedded as encrypted resources within the DLL.

- Script Protection: Scripts added to the ISCompilerEx.dll resource are encrypted internally, making extraction impossible. This feature turns ISCompilerEx.dll into a script protector.

- Encrypted Code Snippets: Securely encrypt parts of your script to protect sensitive code, allowing you to share your script with others while keeping critical code snippets hidden.

Script Compilation Examples

1. Compile Encrypted Embedded Scripts: 'Compile_Sample1_Res.iss' & 'Compile_Sample2_Res.iss'

These scripts demonstrate how to compile scripts like 'Sample1.iss' and 'Sample2.iss' from resources embedded in the DLL.

Quote:
  • Step 1: Add these sample scripts to the ISCompilerEx.dll resource using 'ResourcePacker.exe'.
  • Note: The scripts are automatically encrypted when added to the DLL resource, ensuring they cannot be extracted or tampered with.
  • Step 2: Assign any name to the 'ResourceName' in 'ResourcePacker.exe'.
  • Make sure to update this name in the 'ResourceName' field within the 'Compile_Sample_Res.iss' script.
  • For this example, 'SCRIPT_01' and 'SCRIPT_02' are used as the 'ResourceName' for the sample scripts.

2. Compile Local Scripts: 'Compile_Sample2_Local.iss'

This script demonstrates how to compile a local script using ISCompilerEx.dll.


3. Encrypted Code Snippets: 'Sample2.iss'

The updated ISCompilerEx.dll supports encrypted code snippets within your scripts, allowing you to encrypt specific sections of your code while leaving the rest in plain text.

Quote:
  • Step 1: Use 'CodeEncryptor.exe' to create encrypted code snippets.
  • Step 2: Ensure that the encrypted code is enclosed within the following comments:
"
{Seal:0xAE}
<encrypted_code>
{Seal:0x3C}
"

Example of Encrypted Script

Below is an example of a script with partially encrypted code:

Code:
[Setup]
AppName={#NameX}
AppVersion={#VerX}
WizardStyle=modern
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=lzma2
SolidCompression=yes
OutputDir=.\Output
OutputBaseFilename={#OutfileX}

{Code]

{Seal:0xAE}
dNQkg8LpNjyBfU48X3DyUR3Pkcco+bgcibpIhMi4t07ZbR3MEM0TxEvARUAEUwGMbf92vxg6D7SxG6wCOVCf/up8oth+UgUqCiovrhf4pO/XFVVHzOw88Fq4GCLutcCelFyyyS45OtjfawgHkVh1eiZqjKS/+A==
e9JIccRqtvsXNUbnhRIA6syn/Pg3WnIcxjfx0feZu4tspf+oRVz6FcBOaeMgAi6/qepD2uqFotB0eqfFX2AJHtWb4IvRpLaZJpAq1c9bhEeqhQM9+YaLWA==
d9O5cMHfzl5barXk4UaLF/1u+zJOX+wgoBaoYG2Wft8O3ng8j50lkyCzhTA=
d9O75uq6+3Q=
{Seal:0x3C}

function InitializeSetup(): Boolean;
begin
  Result := True;
end;

{Seal:0xAE}
YmiFZJblBzwT2nkmEC7l0s0pQjE7KHb6iD607yxgrZT5VFozkHoJQkJTCwfABfSpVzwAvQsAxGD2H/6Jl4oQQw==
W4vBRBylP7NLEi2viMA1zD06IbMZrvSvVB2aLCPKVRV60yd3vSmVxddaeUxGBj7K8N+jtUnbtc/JqS1iBzC9F5lp5q9Os2YTZoG8HLPbjOpwUFxpeTCeOg==
cAe/VFx74XUPxKDd5B944KbmMB8GbUDDOq+oUunlw66rN+IUwUtg0KT6EXVQqvc8gyCnjw==
QsMs+NzGetgL1QTYcdMeEUUldC8tm2+p5bMmApBPBtNrVUSmcxWkhxPZDnIvtGwXD/jZgPPNV4K4565O+w8T/bEt7aaVsWszxNRV1cWqJ9sTxsIQ7asMFJgTbRKo0AiPkmEdmZd/3XNM7guoT2Q4ET9VxtmUPRtDGKm3WvO6k+WapZSor75ni9yV4DKDJ3nPPqe2q9n4C3GZfK2aUFAGeUwUPm02/yJQOn7eMk/htddH3ch/x1S9ozFT7uaJNygfohiXtuY6cf0gFpjKTDHTsA==
QsMs+NzGetgL1QTYcdMeEUUldC8tm2+p5bM3MQTn9iv4VVwT/IVURnH6asIIWJ5xkTVHbMSW5R1qmDBObT/z8ukrOW+iHJpqgzQALnTNStcI1Gx/eazeIqfnzDcWEqVE
{Seal:0x3C}

Corresponding Original Code

Here is the original code corresponding to the encrypted snippets above:

Code:
[Setup]
AppName={#NameX}
AppVersion={#VerX}
WizardStyle=modern
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
Compression=lzma2
SolidCompression=yes
OutputDir=.\Output
OutputBaseFilename={#OutfileX}

{Code]

function CheckNumberParity(Number: Integer): String;
begin
  if (Number mod 2 = 0) then
    Result := 'even'
  else
    Result := 'odd';
end;

function InitializeSetup(): Boolean;
begin
  Result := True;
end;

procedure InitializeWizard;
var
  InputNumber: Integer;
  ParityResult: String;
begin
  InputNumber := 147;
  ParityResult := CheckNumberParity(InputNumber);

  MsgBox('The number ' + IntToStr(InputNumber) + ' is ' +
    ParityResult + '.', mbInformation, MB_OK);
end;

Note:
- The code surrounded by '{Seal:0xAE}' and '{Seal:0x3C}' is encrypted to protect sensitive logic while sharing scripts.


.
Attached Images
File Type: png 0a.png (36.0 KB, 71 views)
File Type: png 0b.png (27.4 KB, 71 views)
File Type: png 1.png (22.6 KB, 67 views)
File Type: png 2.png (31.6 KB, 70 views)
File Type: png 3.png (11.3 KB, 68 views)
File Type: png 4.png (19.6 KB, 69 views)
Attached Files
File Type: rar ISCompilerEx [2024-Aug-30].rar (4.06 MB, 25 views)
Reply With Quote
The Following 8 Users Say Thank You to BLACKFIRE69 For This Useful Post:
ADMIRAL (30-08-2024), audiofeel (30-08-2024), Cesar82 (30-08-2024), Ele (30-08-2024), Fak Eid (31-08-2024), hitman797 (30-08-2024), Lord.Freddy (30-08-2024), ScOOt3r (30-08-2024)
Sponsored Links
  #2  
Old 30-08-2024, 22:04
Cesar82's Avatar
Cesar82 Cesar82 is offline
Registered User
 
Join Date: May 2011
Location: Brazil
Posts: 1,016
Thanks: 1,721
Thanked 2,178 Times in 741 Posts
Cesar82 is on a distinguished road
The project is great.
Thanks!

However, ResPckrAPI.dll should contain a function to extract the script contained in the resource to the .iss file on the hard disk again.

Sometimes developers have their encryption password for the script resource in ISCompilerEx.dll, but have lost the backup script, or are even unsure if the script in the resource is the same as the one they have as backup, so a function to extract the script from ISCompilerEx.dll to the disk would be welcome.

If the functions in ResPckrAPI.dll are only compatible with including resources in ISCompilerEx.dll, then these functions could be inside ISCompilerEx.dll, without the need for an additional library for this.
Reply With Quote
  #3  
Old 31-08-2024, 00:18
Fak Eid Fak Eid is offline
Registered User
 
Join Date: Jun 2023
Location: Mars
Posts: 144
Thanks: 89
Thanked 136 Times in 53 Posts
Fak Eid is on a distinguished road
Resourceful and very good project. Looking forward on what it can achieve in future. I've always wanted to do this to some of my repacks, so that repackers cannot alter the info, like link to my YT or my name on credit section, but always wanted to keep my script to be free and open-source. If there is any midway where we can achieve that, it would be really very good.
Reply With Quote
  #4  
Old 31-08-2024, 00:20
Fak Eid Fak Eid is offline
Registered User
 
Join Date: Jun 2023
Location: Mars
Posts: 144
Thanks: 89
Thanked 136 Times in 53 Posts
Fak Eid is on a distinguished road
I'm working on a repack where I have settings.ini file to alter the installer. Any idea how can I have a UI for it, so that it's no longer just a code that user has to edit but with buttons and click and can be done, idk maybe like DSG

Last edited by Fak Eid; 31-08-2024 at 02:51.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How to Protect InnoSetup from Unpacking BLACKFIRE69 Conversion Tutorials 1 12-05-2024 03:43



All times are GMT -7. The time now is 20:20.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Copyright 2000-2020, FileForums @ https://fileforums.com