@ 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.