beh.a parte il fatto di provare tutte le combinazioni,non riesco a capire cosa vuoi dire con "se rinominassi il file non sarebbe più completo".io intendevo il file che ti dà lo script una volta lanciato;se lo rinomini che cambia? il file rimane identico,cambia solo il nome.
ho pure capito che basterebbero 3 bytes del file (anche 1 solo quel 1F)per provare ma come hai visto se provi a offset diversi multipli di 3 che cioè si xorano (si presume) con lo stesso valore la stessa differenza per entrambi non va bene.quell' 1F ne è un esempio.
la struttura del PE per intero ,però non la conosco bene neanch'io.però sto vedendo questo adesso:
http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
dove c'è il PE Header la scritta PE in ASCII,
i primi 4 bytes sono il PE Header stesso, 50 45 00 00 poi comincia all'offset 0
il COFF file Header
2 byte 4C 01 (vanno letti in ordine inverso,così anche per gli altri-little endian)
The number that identifies the type of target machine. For more information, see section 3.3.1, "Machine Types."
offset 2:
The number of sections. This indicates the size of the section table, which immediately follows the headers.
04 00
The low 32 bits of the number of seconds since 00:00 January 1, 1970 (a C run-time time_t value), that indicates when the file was created.
offset 4 (4bytes)
8B A7 C9 42 (nel mio caso dopo uno xoramento) i secondi dal 1970 1 gennai
offset 8 (4bytes)
00 00 00 00
The file offset of the COFF symbol table, or zero if no COFF symbol table is present. This value should be zero for an image because COFF debugging information is deprecated.
offsset 12(4 bytes)
00 00 00 00
The number of entries in the symbol table. This data can be used to locate the string table, which immediately follows the symbol table. This value should be zero for an image because COFF debugging information is deprecated.
offset 16(2 bytes)
E0 00
The size of the optional header, which is required for executable files but not for object files. This value should be zero for an object file. For a description of the header format, see section 3.4, "Optional Header (Image Only)."
offset 18(2 bytes)
11 01<-- applicazione di Win32 non valida(è uno dei motivi per cui non va
e dà errore quando lo lanci in effetti è a 16 bit )The flags that indicate the attributes of the file. For specific flag values, see section 3.3.2, "Characteristics." <------IMAGE_FILE_32BIT_MACHINE
0x010 valore
Machine is based on a 32-bit-word architecture.
negli altri "win32.exe" il valore è 0F 01 o 0E 01,ma non è sufficente a farlo partire,(IAT a parte,relocazioni a parte,)c'è qualcos'altro.beh...... vedremo.
comunque..... se non troviamo l'erre.......penso che addentrarsi troppo nella giugla non porti a molto.la soluzione non deve essere troppo complicata,ma ovviamente bisogna conoscere quel "poco" che ci porti verso la fine,e questo "poco" non l'abbiamo ancora capito o trovato.Ciao.
pur essendo lo XOR un 'operazione facile da capire ,risulta essere una tra le più invulnerabili,quando usata
come in questo caso per criptare un programma,questo perchè all'origine
dello xor visto , confronto fatto bit a bit , non si potrà mai stabilire chi dei 2 guardiani dice il vero o il falso,e lo stesso risultato (0 ) è prodotto da due
verità 1 xor 1 o da due falsi 0 xor 0 .ho parecchi programmi(se volete ve li uploado su megaupload) XOrIT,CryptiT,XoRDecrypter (con uno script che confronta
tutte le possibili combinazioni con i 255 caratteri Ascii):nessuno di questi mi ha fornito la soluzione(a meno che il que oltre allo xor non abbia fatto qualche altra operazione beh....allora ).ci sono anche siti tipo questo se volete provare:
PS: se v'interessa "craccare" i giochi protetti con ActiveMark( Trygames,GameHouse,AOLgames),o HP & WildTangentGames,AlawarGames,Zylomgames,ReflexiveGames, e tutti i giochi protetti con Armadillo (MSNgames,IPlay,OberonMedia,Pogo,ShocKwave,Playfirst,Gamefools,IWin etc.etc) sono a vs disposizione.ovviamente usando OllyDbg,Imprec,ArmInLine,LordPe e qualche altro tool. é molto facile .