View Single Post
  #10  
Old 01-27-2005, 03:39
sackpower sackpower is offline
Friend
 
Join Date: Jan 2003
Location: Europe
Posts: 26
Rept. Given: 5
Rept. Rcvd 3 Times in 1 Post
Thanks Given: 15
Thanks Rcvd at 13 Times in 6 Posts
sackpower Reputation: 3
@ wasq: 0xF1 is the right XOR value.

I started a small project and decrypted a setup.inx with ISDHelper,
then I worked on it with SID (Sexy InstallShield Decompiler) and
rebuild the original crypted setup.inx. All worked fine.

Here is my solution for rebuilding the crypted INX:

Code:
//Usage: ISDGoBack.exe <newsetup.inx> setup.inx

#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#define XOR_VAL 0xF1

void main (void) 
{
	int i, c;
	unsigned char b;
	// Set "stdin" and "stdout" to have binary mode
	setmode (_fileno (stdin), _O_BINARY);
	setmode (_fileno (stdout), _O_BINARY);
	// Rebuild the crypted INX
	for (i = 0; (c = getchar ()) != EOF; i++)
	{
            int d, e;

            d = 0x00;

            do
            {
                e = d;
	        e ^= XOR_VAL;
		b = (unsigned char)((e >> 2) | (e << 6)) - (i % 71);
                if (b == c)
                {
		    putchar (d);
                }
                else d++;
            } while (b != c && d <= 0xFF);
	}
}
I don't know if there is a better solution, but it works.
Reply With Quote