ASM Riddle di Quequero

Stato
Discussione chiusa ad ulteriori risposte.
eh.si.le ho tutte.ma dimmi una cosa ; per rendere visibile il check box hai usato OLLy o ResHacker?
l'algoritmo l'ho trovato anch'io, ma quel 7F ,con cui si confronta la prima lettera della password è sempre presente ,e che io capisca, affinchè il JNZ al messaggio di password is not correct non avvenga ,il risultato di
0040125A . |3A4C14 0C CMP CL,BYTE PTR SS:[ESP+EDX+C]
deve essere = 0
e l'unico caso è quando 7F = 7F ,quindi il primo carattere della password
dovrebbe essere 7F confrontato con quello della Keystring 7F ,la cui differenza
(CMP) sarebbe =0.
il problema è che 7F corrisponde al carattere "delete" in ascii.
Già ,come dicevi tu,carattere non stampabile.anch'io per il momento non capisco.
 
Ultima modifica:
Infatti.. non capisco come andare avanti... ho provato un po' tt. Forse ho sbagliato qualcosa. Magari dando un occhiata alle API GetMessage() troviamo cosa modificare per rendere il check visibile con olly perchè io ho usato reshacker. Magari modificando questo qualcosa non rimane la lettera ma xorra e viene 7F. Io continuo a dare un occhiata... lui dice di stare attento ai messaggi nel riddle.

EDIT. va attivato da codice sono sicuro. Il registro che ti varia la lettera dovrebbe essere maggiore di 7.
 
Ultima modifica:
Risolto anche il livello 4: la password è Goddess
Praticamente questa è la parte che rende il check enable
/*4012B0*/ CMP DWORD PTR DS:[4065E4],7
/*4012B7*/ JBE SHORT lol.004012D5
/*4012B9*/ MOV EDX,DWORD PTR SS:[ESP+14C]
/*4012C0*/ PUSH 3EF
/*4012C5*/ PUSH EDX
/*4012C6*/ CALL DWORD PTR DS:[<&USER32.GetDlgItem>]
/*4012CC*/ PUSH 5
/*4012CE*/ PUSH EAX
/*4012CF*/ CALL DWORD PTR DS:[<&USER32.ShowWindow>]


Mi sono accorto che /*4012B0*/ CMP DWORD PTR DS:[4065E4],7 è quello che serviva a noi... all'inizio ho provato a usare 7 ma senza successo. Mi sono accorto poi del JBE (jump if equal or below) e ho detto se 7 era equal 8 è below. Provato con 8 e generata la password...
Un po' di fortuna fa sempre bnbn


Leggi qui asd..

Login: Level4, password: Level4 password.
Level4 uses a common technique. You know where to put your serial/pass but you can't check it because the button is hidden. Of course you can enable it using a Resource Editor, but the program won't be able to check your password if you do this. Enabling the check button is easy, simply click 8 times on the clown logo, then once on the window. If you click more times the algorithm will never generate a valid password. Reversing this protection is not hard. If you look in the wndproc, you'll notice that there is a counter also used in the algorithm... This is the key :).
 
ciao. complimenti per aver risolto,e grazie per gli aiuti.adesso che ho letto ho capito che bisognava cliccare esattamente 8 volte il logo + 1 volta sulla finestra per abilitare il check,sì adesso che ho letto la soluzione però.ho provato a rieseguire il codice dell'algoritmo :
0040124C . 33D2 XOR EDX,EDX
0040124E . 8AC3 MOV AL,BL
00401250 . F6EB IMUL BL
00401252 > 8A4C14 14 MOV CL,BYTE PTR SS:[ESP+EDX+14]
00401256 . 2ACB SUB CL,BL
00401258 . 32C8 XOR CL,AL
0040125A . 3A4C14 0C CMP CL,BYTE PTR SS:[ESP+EDX+C]
0040125E . 884C14 14 MOV BYTE PTR SS:[ESP+EDX+14],CL
00401262 .^ 75 BD JNZ SHORT level4.00401221
00401264 . 42 INC EDX
00401265 . 83FA 07 CMP EDX,7
00401268 .^ 7C E8 JL SHORT level4.00401252
ed ho notato che nella finestra dump di Olly alla fine viene questo:
0012F9F8 7F 27 1C 1C '
0012FA08 1D 2B 2B 00 7F 27 1C 1C 1D 2B 2B ++.'+
cioè eseguendo il codice sostituisce alle lettere della mia password inserita(la seconda stringa che comincia per 7F,nel dump c'era scritto Goddess) con quelle uguali di quelle del progamma ,e giustamente trovandole alla fine identiche dà giusta password.però ancora non capisco qualcosa,cioè,
la password Goddess era possibile vederla nel dump,oppure lettera per lettera eseguendo il codice,o da qualsiasi parte?perchè io avrei dovuto andare a tentativi,comunque.
un'altra cosa : come hai abilitato il check(senza cliccare sul logo 8 volte +1 su window) ;hai scritto che hai provato con 8,ma non ho capito se hai editato questo,inserendoci un 8:
004012B0 > \833D E4654000 07 CMP DWORD PTR DS:[4065E4],7
cioè in 4065E4 hai fatto bynary edit e hai inserito 8?
io ho provato così,però il check non si abilita(ovvio bisogna cliccare una volta in più sulla finestra),alla fine:
sei andato a tentativi per la pass?
come hai abilitato il check?.
hai inserito 8 qui 4065E4,il check non lo vedi, e sei andato a tentativi per la pass.giusto?
comunque rinnovo i miei complimenti.spero di essrti d'aiuto io per i prossimi.
grazie di tutto,per il momento.
PS: se sono un pò scocciante ,scusami,è che voglio capire bene le cose.
 
Ultima modifica:
Nunu nn ci sono problemi. Avevo visto che per abilitare il pulsante c'era /*4012B0*/ CMP DWORD PTR DS:[4065E4],7 e il salto JBE. Quindi ho capito che la password era generata solo se il pulsante era abilitato facendo + di 7 cicli (non capivo però di quale pulsante). Ho visto che metteva in BL il numero dei cicli quindi ho provato 8. Asd un po' a tentativi sono andato... di lusso. Il 5 cmq nn è facile
Non riesco a capire bene come funziona...

EDIT: Oggi non ci sono stato molto al PC, Domani mi rimetto a provare.
 
ciao! mo ti aiuto questa volta. chi è John Wayne ?
un PISTOLERO,che tradotto in inglese è GUNSLINGER.vai qui:
00401275 > /8B90 10574000 MOV EDX,DWORD PTR DS:[EAX+405710]
0040127B . |8B88 30504000 MOV ECX,DWORD PTR DS:[EAX+405030]<00401281 . |83C2 28 ADD EDX,28
00401284 . |3BCA CMP ECX,EDX
00401286 . |75 11 JNZ SHORT level5.00401299
00401288 . |83C0 04 ADD EAX,4
0040128B . |C605 A0584000 01 MOV BYTE PTR DS:[4058A0],1
00401292 . |83F8 28 CMP EAX,28
00401295 .^\7C DE JL SHORT level5.00401275
e poi mentre esegui il codice guarda ECX ed EDX nella finestra dei registri in OLLY.se i valori sono uguali significa che la cifra è giusta.
per trovare i numeri guarda nel dump qui:
00405030 2F 00 00 00 2D 00 00 00 2A 00 00 00 2C 00 00 00 /...-...*...,...
00405040 2E 00 00 00 28 00 00 00 31 00 00 00 2A 00 00 00 ....(...1...*...
00405050 2C 00 00 00 2B 00 00 00 ,...+
ci sono come vedi 10 valori HEX ai quali va sottratto 28(00401292 CMP EAX,28)
per ottenere le cifre esatte.la prima lettera è G = 7 (abcdefg) da Gunslinger=pistolero.Il numero esatto è :
7524609243.Alla prossima !
 
Ultima modifica:
Asd bravissimo... all'evento ero arrivato ma non capivo bene come funzionasse il controllo. Grazie. Ora mi scarico il 6 e mi rimetto al lavoro.
Questo sì che è difficile. Ho letto qualche 3d sul forum ma nn capisco bn cosa si debba fare. Alcuni ci hanno passato mesi e mesi...

Alcuni byte devono essere sostituiti con 00
 
ciao.lieto di risentirti.eh sì.mi sa che questo sarà un osso duro.perchè è tutto criptato.se lo apri con HxD(editor esadecimale,cerca su google) ti sostituisce in un colpo solo i valori,senza script(anche se dopo temo sarebbe utile lo stesso, lo script).per il momento io ho cambiato i primi 2 byte con MZ e ho sostituito la stringa HEX = CD 6D 89 con gli zeri.Ne trovi circa 15000.poi casomai ti dirò il numero esatto,xchè al momento non c'e l'ho.a questo punto vedi il tuo
Level6.exe un pò più chiaramente.e adesso viene il bello.per il momento è tutto.
Ciao!
 
ti rispondo io perchè gabri al momento è da un amico... da quanto ho capito mi ha detto che alcuni byte anche se sono CD 6D 89 devono restarlo, e si può capire guardando l'header del programma... quindi sostituendoli tutti si danneggia il programma... poi quando torna magari vi sentite meglio xD
 
Ultima modifica:
ti rispondo io perchè gabri al momento è da un amico... da quanto ho capito mi ha detto che alcuni byte anche se sono CD 6D 89 devono restarlo, e si può capire guardando l'header del programma... quindi sostituendoli tutti si danneggia il programma... poi quando torna magari vi sentite meglio xD

Infatti. Per ora meglio sostituire solo quando compaiono tutti e tre insieme.
Infatti alcuni singoli servono nel programma ma altri no.

EDIT: Non sono del tutto sicuro ma anche quelli che servivano sono criptati quindi puoi eliminarli tutti. Ci sono 18000 e qualcosa casi di ognuno

Se mi aggiungi su msn o su skype o su qualcos'altro ne parliamo bn.
Cmq mi sono scaricato Hxd. Ho il pc pieno di Hex Editor.... lol
Ora resta da capire cosa vuol dire nella storiella

Qui
S: Certo, è solo una questione di differenze, se si sa cosa ci dovrebbe essere e che cosa c'è realmente ...
R: Beh?
S: ... li troverai, e tu lo sai (sono sicuro), quello che dovrebbe essere lì. Questo è il primo passaggio btw, non correre, stare attenti.

mi sembra di capire che dobbiamo fare riferimento all'header di un altro programma

Rileggiendo a me sembra di aver capito che

il level6 è un normale esguibile con una differenza: la differenza è data da 89 CD 6D. Per toglierli non dobbiamo semplicemente sostituirli con degli 00 ma usare la storia dei guardiani:

S: Remember the tale of the guardians... If one of them is lying, the other is not...
A: And if each one is saying the truth, or the lie, I'll never get the right path.

Arrivati qui dobbiamo

S: Right! The builder adds, you need to remove. A little from the first, some more from the second, more again from the third....

Il problema è che nn capisco la storia dei guardiani... e nemmeno quella di togliere.

Ho mandato un PM a Que... XD. Speriamo mi risponda velocemente... Ho scritto
Codice:
Asd fino al level6 ci sono arrivato senza troppi problemi (tranne che per lo stereogramma!) ma per questo livello ho bisogno di un hint.
Rileggendo la storiella a me sembra di aver capito che

il level6 è un normale esguibile con una differenza: la differenza è data da 89 CD 6D.

S: Sure, it's only a matter of differences, if you know what should be there and what is there actually...
A: Well?
S: ...You'll find them, and you know (I'm sure) what should be there. This is the first pass btw, don't run, be careful.
Qui mi dice di fare riferimento all'header di un altro programma.

Per togliere 89 CD 6D (le tre chiavi) non si deve semplicemente sostituirli con degli 00 ma usare la storia dei guardiani:

S: Remember the tale of the guardians... If one of them is lying, the other is not...
A: And if each one is saying the truth, or the lie, I'll never get the right path.

Arrivati qui si deve

S: Right! The builder adds, you need to remove. A little from the first, some more from the second, more again from the third....

Il problema è che nn capisco la storia dei guardiani... e nemmeno quella di togliere. 
Dimmi se sono sulla buona strada o se ho sbagliato del tutto... e se sto andando bene dammi un piccolo aiuto per andare avanti.
Que mi ha risposto al PM ma il forum è in manutenzione..

Ecco la risposta
Codice:
Normalmente non rispondo a questi PM per non levare il gusto a chi fa il riddle (non per sadismo! [IMG]https://quequero.org/forum/images/smilies/icon_smile.gif[/IMG]). Faro' in modo di darti delle hint senza darti le soluzioni, sperando di non essere eccessivamente criptico:

Prima domanda: tu scrivi "di un altro programma", non e' necessariamente vero [IMG]https://quequero.org/forum/images/smilies/icon_smile.gif[/IMG]

Seconda: i guardiani sono molto molto piu' semplici da capire di quanto penseresti, se hai capito quali sono le chiavi e se hai capito cosa dovrebbe esserci... Ti manca capire come da A si arrivi a B, ma le scelte in questo caso sono talmente limiate che puoi provarle tutte in neanche 1 minuto ;p. Quando hai capito come si arriva da A a B (e l'hai capito!) l'ultima hint ti spiega come proseguire.

Se non l'hai capito domandati cosa sia "truth" e cosa "lie" nel mondo dei computer.

Ma nn capisco lo stesso asd
 
Ultima modifica:
so che in un PE ci devono essere MZ all'inizio( 4D 5A HEX ).
la scritta PE in ASCII text deve esserci. l'offset di questa (PE) è scritto nei primi 64 bytes dell'exe(e_lfanewcredo).
la storiella dei guardiani la so così:
un tale aveva smarrito la strada per casa,e giunto ad un bivio incontrò 2 guardiani (uno mente,l'altro dice il vero):aveva a disposizione solo una domanda da fare ad uno dei guardiani per capire qual'era la direzione giusta per tornare a casa;la domanda è questa: che cosa mi risponderebbe l'altro guardiano se gli chiedessi qual'è la direzione giusta per andare a casa?
qualsiasi guardiano avesse interrogato ,esso avrebbe risposto con la direzione opposta a quella esatta per tornare a casa(le direzioni valide sono 2
destra o sinistra),quindi il tale avrebbe seguito la direzione opposta a quella della risposta ottenuta per tornare a casa.(tutti e 2 i guardiani danno la stessa risposta a quella precisa domanda).
Solo devo ancora capire il nesso col nostro Level6 exe.ho visto che ti risposto il que dicendoti cosa è true e cosa è lie nel mondo dei pc,non so se true =1 e lie=0 ,ma potrebbe essere.
quando ti ho parlato di sovrascrivere con 0 tutte le stringhe HEX CD 6D 89,intendevo presi tutti e 3 insieme.(ce ne sono + di 15000 nel mio exe):già dopo questa operazione l'exe è già più comprensibile.comunque sono ancora fermo qui per il momento;se sapessi "le differenze" da compiere forse capirei qualcosa in+.per il momento ciao!
PS:aggiungo questo adesso:13.05 20 /11 /2009,ieri sera avevo fatto il login al sito,ma il suo look era totalmente cambiato,c'era anche scritto .forum in manutenzione:adesso è tornato come era.
 
Ci sono quasi alla soluzione... mi manca veramente poco. Non sono tanto bravo in c++ a editare hex di un file. Praticamente il discorso dei guardiani introduce che devi usare xor. Vero xor Vero = Falso ecc. Quindi 82 xor CD = 4F , 33 xor 6D = 5E , 19 xor 89 = 90 , CD xor CD = 00 e così via.
Il file viene quasi perfetto. Manca solo il discorso di togliere quel poco da alcuni per far tornare tt
 
ciao! sono contento che tu stia arrivando a risolvere.ma mi spieghi xchè hai
"xorato" CD con CD,e la stringa HEX CD 6D 89 rispettivamente con 82,33 e 19?
da dove saltano fuori questi numeri?
e il risultato cioè 4F 5E 90 e 00 per CD xor CD dove va messo?
io ho ancora CD 6D 89 nel mio exe ma non insieme tutti e 3,sono qua e là,cioè sparsi.grazie!
 
Praticamente 82 xor CD = 4F. L'header dovrebbe essere 4D. Quindi qui entra in gioco il discorso di levare qualcosa, la fine della storiella. Stessa cosa per 33 xor 6D = 5E. Dovrebbe essere invece 5A. 19 xor 89 = 90 ovvero il 3 numero dell'header di un programma. Poi andando avanti così si eliminano anche CD 6D e 89 che diventano 00. Ti posto il risultato.

MEGAUPLOAD - The leading online storage and file delivery service

Manca solo di levare quei pochi byte come dice la storiella alla fine. Se capisco quello siamo apposto.
 
ciao! ancora grazie per tutte le info.ho provato a scaricare il tuo file ma,
Il file al quale si sta tentando di accedere non è temporaneamente disponibile.Credo sia una condizione temporanea ,comunque.proverò + tardi.provo a vedere se riesco ad andare avanti,dopo le tue info.ah,ho visto la località da cui scrivi ,Livorno a quel vedo.io sono a Padova.a proposito non ho capito quel riferimento al C++,io Visual Studio 2009 l'ho usato qualche volta ho fatto un browser in Visual Basic (è negli esempi di Visual Basic)e ho compilato (sempre negli esempi di C++ questa volta) una piccola finestra condentro un cubo rotante(usando Directx 3d,ma anch'io ne so poco di C++,ma credo che per il Level6.exe sia inutile visto che il prog è già compilato ,e ladecompilazione cioè il procedimento inverso è impossibile da farsi.sto sempre sintonizzato su questo forum comunque.A presto.
 
Prova ora dovrebbe andare... Il c++ è uno dei linguaggi + semplici per editare file. Te usi un hex editor scritto (almeno la maggior parte) in C++. Per xorrare tt il file non puoi fare a mano. Serve uno script, un programmino che modifica tt. Io in c++ ero riuscito ma nn funzionava molto bn. Mi ha dato una mano D4n13le in python.
Il download che ti ho postato è il risultato dello "xorramento". Non manca tanto al risultato...
 
si.avevo capito che editando a mano ci vorrebbe un eternità.ci vuole uno script.ci sono HexEditor che supportano gli script(come XVI32 ad esempio,ma anche molti altri),ma il problema è di creare lo script ,cioè sapere quali istruzioni scrivere ,e poi avviare lo script; stavo tentando con XVI32,ma non ho ancora risolto.Se ho capito giusto tu hai fatto un'operazione di questo tipo sul
file,una volta aperto con l'Hex editor:
OFFSET 0 VALORE HEX XORED con OFFSET 0+3 VALORE HEX,poi
OFFSET 0+1 VALORE HEX XORED con OFFSET 0+4 VALORE HEX,
e così via per tutti gli indirizzi contenuti nel file,in modo cioè che la differenza
degli indirizzi contenenti i valori HEX da xorare sia 3.
la questione del "togliere" credo di averla capita visto che come dicevi tu
82 xor CD = 4F e non 4D come dovrebbe essere(c'è un 2 di differenza).
Gli script io li uso anche con OLLY quando "spacchetto" i giochi,ma sono già
scritti,(non li ho creati io),e basta solo avviarli(caricarli e poi run).
comunque ,sè è giusto quello che ti ho scritto sopra basterebbe creare uno script che facesse questo:
x+k XOR x+(k+3) ,solo che non riesco a trovare ,per il momento, la giusta sintassi con XVI32 HEX editor,per scrivere lo script.Ciao.Sto sempre sintonizzato.
AH, a proposito del Level 1:
004011D2 MOV BL,BYTE PTR SS:[ESP+EAX+C]
ho modificato la riga che vedi assemblando C al posto di 18.
ho cambiato 1 solo byte.Mentre steppi nel codice se segui nel dump questo:
12FA54, vedi che ti scrive la soluzione(xoringmania) lettera per lettera.
si, bastava cambiare 1 solo byte.Ciao!
 
Ultima modifica:
No. L'ho scritto in phython, un linguaggio non difficile. Offset 0 Valore Hex XOR CD Offset 1 Valore Hex XOR 6D Offset 2 Valore Hex XOR 89 Offset 3 Valore Hex XOR CD Offset 4 Valore hex XOR 6D e così via. Se scarichi il file che ho postato in qualche post + indietro ho già xorrato tt. Se vuoi ti mando anche il programma che ho fatto per xorrare. Ora mi manca quanto togliere e dove togliere... Cmq per il Level1 buona scoperta lol.

Però voglio provare anche come mi dici te. Magari io ho sbagliato.

Scarica questo http://www.megaupload.com/?d=BDJTVXAC
 
Ultima modifica:
penso di aver trovato la soluzione . Ma potrei anche aver sbagliato tutto!
la storiella del togliere un po' dal primo ,un po + dal secondo,e ancora un po'
di + dal terzo potrebbe essere interpretata così:
dal primo byte = 82 togli 1 e diventa 81
dal secondo byte 33 togli 2 e diventa 31
dal terzo = 19 togli 3 e diventa 16
così i primi 3 byte dell'exe sono adesso diventati:
81 31 16.
questa operazione devi continuare a farla per tutti i byte del file ,sempre sottraendo 1 dal primo,2 dal secondo,3 dal terzo, cioè all'offset
03 toglierai 1
04 toglierai 2
05 toglierai 3 e poi di nuovo all'offset
06 togli 1
07 togli 2
08 togli 3 e avanti così fino alla fine del file,ovvio che a mano con l'hex editor ci metti una vita.Alla fine ottieni un file ovviamente diverso con valori Hex che agli
offset 0 + k3 (k è intero naturale) saranno diminuiti di 1
agli offset 01 +3k saranno diminuiti di 2
agli offset 02 +3k saranno diminuiti di 3.
adesso con questo nuovo file (il programma in Python che hai ti servirà,se compie però le giuste operazioni)
devi compiere l'operazione di XOR tra tutti i byte del file con la famosa stringa HEX CD 6D 89 ,ma attenzione anch'essa diminuita di 1,2,3 cioè con la stringa
CC (ho diminuito di 1) 6B(ho diminuito di 2) 86 (ho diminuito di 3)
te la riscrivo. CC 6B 86 .
se provi i primi 3 byte (gia diminuiti) 81 31 16 e fai lo XOR con CC 6B 86 ottieni:
81 xor CC =4D
31 xor 6B = 5A
16 xor 86 = 90
proprio i primi 3 bytes dell'exe che noi vogliamo.
in pratica i valori hex degli offset diminuiti di 1 andranno xorati con CC (anch'esso diminuito di 1)
i valori hex degli offset diminuiti di 2 andranno xorati con 6B(anch'esso diminuito di 2)
e i valori hex degli offset diminuiti di 3 andranno xorati con 86(anch'esso diminuito di 3).
credo che all fine dovresti avere l'exe esatto.però editare a mano,no ci vuole una vita.ci vuole "il programmino" che esegua queste operazioni automaticamente.ti posto la prima stringa del mio exe in modo che tu possa vedere meglio e confrontare.è questa:((non ancora xorata)
81 31 16 CC 68 86 CC 6B 8A CC 6B 86 CB 6C 86 CC
Ciao!speriamo che sia la strada giusta..comunque la soluzione me l'hai data tu,quando ho capito dall'ultimo post che xoravi i bytes sempre con CD 6D 89,xchè prima non mi era chiaro ,ma nell'ultimo post ho capito..credo che tu abbia avuto le intuizioni migliori.in questo caso io ,ho solo trovato i calcoli da fare,ma come vedi erano semplicissimi.GIà ,questione di legger e capire bene il Riddle,come dice il QUE.morale: quello che stavi facendo era giustissimo,ma prima bisognava.....togliere,quindi se riusi il tuo "programmino" questa volta fai centro
PS.se mi mandi il programma per xorare ,mi fai un favore,xchè sono curioso di vedere com'è fatto lo script,però devi dirmi come si usa.
io il Python non lo conosco.
Grazie.Ciao!!
 
E' da ieri che faccio prove del genere ma il risultato nn è perfetto... manca ancora da fare qualcosa. Ti ho messo script + level6 già xorrato e tutto. Guarda un po' se riesci a fare qualcosa. Ma a te queuqero va?? A me nn carica...
Cmq python non è difficile come linguaggio. Scaricalo e installalo sono pochi mb. Poi editi lo script con il percorso del tuo file e premi f5.

MEGAUPLOAD - The leading online storage and file delivery service
 
ciao.scaricato python ,installato.e già ho imparato qualcosa.ma molto poco visto che è la prima volta che lo vedo.son riuscito comunque a far correre lo script.ho provato dalla command line con help() e ho visto.ho dato un occhio alle istruzioni dello script ,e mi sembra comunque che non vadano bene,anche se ti ripeto è la prima volta che vedo Python.
quello che abbiamo trovato noi va bene,xchè io ho provato ancora a rivedere tutto ed è giusto.Ma lo script non fa ciò che è giusto.ci vorrebe l'aiuto di daniele.
Se ha fatto quello,saprà fare velocemente anche il discorso delle differenze,credo.Prima di xorare bisogna togliere dagli offset 1 per gli offset 0+k3, 2 dagli offset 01+k3, e 3 dagli offset 02+k3,questo,lo script non mi sembra lo faccia.non so se sarò in grado però di modificare quello esistente,vediamo.prova a contattare daniele e spiegagli questo.
a proposito di quequero,sì hai ragione neanche io per il momento riesco a connettermi.se vuoi sapere,quando visiti un sito,se funziona o no con certezza
basta che vai qui downforeveryoneorjustme.com ,digiti l'indirizzo che sospetti non essere funzionante e vedi la risposta.Ciao per il momento.se ho novità te le scrivo.Grazie per i files.
 
Ultima modifica:
ma cos'e sta ridle di quehero??

Sono degli indovinelli sul reversing... basta sapere un po' di ASM, saper usare OLLY e avere un po' di intuito.

Questo script toglie 1 dal primo offset , 2 dal secondo e 3 dal terzo e così via e poi xorra per CD -1 , 6D -2 , 89 -3.
Però i risultati hanno bisogno di qualche correzione. Se hai qualche consiglio scrivi qui tanto ci parlo io con D4n13le

EDIT. Provato come dici te.. il risultato è pessimo lol
 
scusate se posto solo ora, avevo da fare una cosa, comunque ecco lo script che intendi te:
PHP:
import struct
file_or = open('/home/daniele/Documenti/Level 6/level6origine.exe','r')
file_or2 = open('/home/daniele/Documenti/Level 6/level6origine.exe','r')
file_ot = open('/home/daniele/Documenti/Level 6/level6output.exe', 'wb')
file_or.seek(0)
file_or2.seek(3)
file_ot.seek(0)
while True:
	a = ord(file_or.read(1))
	A = ord(file_or2.read(1))
	if a > 1: a-=1
	if A > 1: A-=1
	print hex(a),hex(A),'-',
	res = a^A
	file_ot.write(struct.pack('B',res))
	####################################
	b = ord(file_or.read(1))
	B = ord(file_or2.read(1))
	if b > 2: b-=2
	if B > 2: B-=2
	print hex(b),hex(B),'-',
	res = b^B
	file_ot.write(struct.pack('B',res))
	####################################
	c = ord(file_or.read(1))
	C = ord(file_or2.read(1))
	if c > 3: c-=3
	if C > 3: C-=3
	print hex(c),hex(C),'-'
	res = c^C
	file_ot.write(struct.pack('B',res))
	
#Lo script termina dando errore quando finiscono i byte del programma, ma non e' un problema

se hai bisogno di qualche aiuto sul python addami su msn (trovi email sul profilo)

come ti ha già detto Gabri il risultato è molto lontano da cioè dovrebbe venire, la strada migliore per me è quella di togliere prima dello xor (xorrando per la famosa terna a cicli di 3 in 3)
 
Stato
Discussione chiusa ad ulteriori risposte.