Jump to content
Excelsior Forums
transmedia

Copy-protecting a jet executable

Recommended Posts

I'm using Excelsior Jet 4.0

I am using Armadillo to copy-protect my Jet executable file.  Unfortunately, when I do this, Jetpack II no longer recognizes the file as a Jet executable.  If I include a trivial "hello.exe" Jet executable, I can still build the installer.  It will install the copy-protected executable files on the same computer that I run Jet on, but if I install the executable files on any other computer, I get a "Jet can't find executable" error box.  The hello.exe file does run on the other computers.

I'm wondering if the problem is related to the CPB block at the end of the executable file.  If I add that block to the copy-protected executable file, it doesn't seem to help.

Is there anything else that I can try?

Share this post


Link to post
Share on other sites

We have not tried Armadillo licensing system, but the described problem is standard for combination JET + encryption systems.

First of all, check that encrypted executable works on the development machine (before JetPackII). Some encryption systems are known to corrupt PE sections used by JET runtime system. For example, for PCGuard to work it is required to switch off the "Hide executable object names" within the "General" protection options.

Below I suppose that after the encryption the JET-compiled executable works.

For Excelsior JET 4.1 and prior, the instruction to deploy such applications is as follow:

----

1) In JetPackII create a project for your application without encryption and save it. Let the name of the project be, for example, YourApp.jpn.

2) execute this command

jpiib YourApp.jpn /imagedir package_dir

3) encrypt the executable in package_dir

4) execute this command

xpackage YourApp.jpn /from-image package_dir /no-bind

----

For Excelsior JET 4.5 and above, the instruction is a bit different:

----

1) In JetPackII create a project for your application without encryption and save it. Let the name of the project be, for example, YourApp.jpn.

2) execute this command

xpack YourApp.jpn -make-image package_dir

3) encrypt the executable in package_dir

4) execute this command

xpack YourApp.jpn -from-image package_dir

----

It results in creating Excelsior Installer package with the required license checking.

Share this post


Link to post
Share on other sites

Do we need to do this? I thougt that JET executables are as protected as C++ executables because "highly optimized native code is firmly protected from complete reverse engineering".

JR

Share this post


Link to post
Share on other sites

Do we need to do this? I thougt that JET executables are as protected as C++ executables because "highly optimized native code is firmly protected from complete reverse engineering".

You mix copy protection and protection against reverse engineering. Your JET-compiled applications are hard to understand, but easy to copy. So if you are concerned about copy protection, you have to use a third-party license management solution.

Share this post


Link to post
Share on other sites

> but easy to copy.

Yes, that is understood.

I use a USB authorization scheme myself...

After this post, however, I openned my compiled executable in a text editor as a test, and I did notice some recognizeable text in the form of the names of my classes. The bytes seemed non-discernable though...I do not think they are in the same format as a Java class, correct?

JR

Share this post


Link to post
Share on other sites

The bytes seemed non-discernable though...I do not think they are in the same format as a Java class, correct?

Yes. The class names which you have seen are the only things which are in the original form. The java code, indeed, is absent (unless you chose the "Pack as whole" option on the "Resources" page in JET Control Panel). Instead, there is only low-level machine code that is viewable with only a disassebler.

Share this post


Link to post
Share on other sites

Below I suppose that after the encryption the JET-compiled executable works. The instruction to deploy such applications follow:

1) In JetPackII create a project for your application without encryption and save it. Let the name of the project be, for example, YourApp.jpn.

2) execute this command

jpiib YourApp.jpn /imagedir package_dir

3) encrypt the executable in package_dir

4) execute this command

xpackage YourApp.jpn /from-image package_dir /no-bind

It results in creating Excelsior Installer package with the required license checking.

Yes, this procedure does work!? Thank you very much!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×