|
quequero.org UIC
Forum
|
View
previous topic :: View
next topic |
Author |
Message |
piratino Newbie
Joined: 20 Feb 2005 Posts:
45
|
Posted: Tue Mar 01, 2005
5:52 pm Post subject:
help please a craccare VBC4 new |
|
|
|
VISUAL BUSINESS CARD 4 New
----------------------------------------------------------
URL: http://www.rkssoftware.com/visualbusinesscards/overview.html
tools usato ollydbg oppure windasm
Premetto che sono un novellino, e quindi perdonatemi
gli errori che ho fatto.... Comunque dissassemblando il file
exe e cercando nelle RefSTR di WinDasm "Product Registration"
vediamo che ci sono tre salti da cambiare e cioè:
004CD59C JE IN JNE 004CD5B9 JE IN JNE 004CD60D
JE IN JNE
Bene fatte queste modifiche faccio partire
il programma e mi registro con un nome a caso per esempio
PAPERINO ed un seriale a caso per esempio RKS-12345678 ed il
programma mi accetta il seriale e mi registra completamente...
ma se io esco dal programma e lo riavvio esso riparte in
versione trial perchè? dov'è che sbaglio?
Per favore
mi aiutate?
Grazie, piratino | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Tue Mar 01, 2005
5:59 pm Post subject:
|
|
|
|
Proverò appena posso a
dargli un okkio ma ti avverto ke sono un noob! _________________ In Code We Trust | |
Back to
top |
|
|
LittleLuk Moderator
Joined:
15 Aug 2002 Posts: 851
|
Posted: Tue Mar 01, 2005
6:06 pm Post subject:
|
|
|
|
Probabilmente se il seriale
é esatto oltre a mostrarti le stringhe giuste andrà a settare
o ritornare quale variabile. In base al valore di questa
variabile andrà a scrivere i dati di registrazione_ok nel
registro o in un file. Se non li trova quando lo riavvi dice
che è demo. Prova a guardare bene la routine che verifica
il seriale in particolare analizza le call a cui viene pushato
il seriale
Byez | |
Back to
top |
|
|
piratino Newbie
Joined: 20 Feb 2005 Posts:
45
|
Posted: Tue Mar 01, 2005
7:15 pm Post subject:
|
|
|
|
Ciao e grazie per avermi
risposto LittleLuk e grk. Infatti il programma scrive un file
ini VCB.ini e se io lo leggo c'è il mio seriale, ma nonostante
cio riparte trial. Comunque forse non imparero mai forse
perchè scelgo prog troppo difficili per me.
ciao
piratino | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Tue Mar 01, 2005
7:19 pm Post subject:
|
|
|
|
Il seriale è
tranquillamente pescabile senza troppi problemi, e ce ne sono
addirittura 2 ke vanno bene x ogni nome inserito, non so a ke
serva.. Ti
consiglio di mettere un breakpoint a 004DCBB8 e steppare, i
seriali buoni appariranno x magia senza nessuna fatica! PS: il seriale deve cominciare con "RKS-" _________________ In Code We Trust | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Wed Mar 02, 2005
2:07 am Post subject:
Re: help please a craccare VBC4 new |
|
|
|
piratino
wrote: |
tools usato ollydbg oppure
windasm | argh... ti prego, sbarazzati quanto prima
di quel trabiccolo del windasm; non lo usa più nemmeno la mi'
nonna per disassemblare le ricette per le torte! se non puoi procurarti IDA, va benissimo il
disassemblatore interno di Olly, perché windasm spesso e
volentieri prende delle cantonate non indifferenti... lo dico
per il tuo bene
cmq, il programma l'ho scaricato anch'io; se poi hai
problemi, domani vedrò di darci un'occhiata anch'io,
altrimenti se hai già risolto... meglio così!
PS:
non è scritto in VB4, ma in Delphi (marò che palle, ancora
lui! )
-=Zero_G=- _________________ "To see
a World in a grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Wed Mar 02, 2005
4:02 am Post subject:
|
|
|
|
è stato più forte di me,
non ce l'ho fatta... anche stasera, mini-tutorial della
buonanotte!
la
procedura associata al click del pulsante OK nel
RegistrationForm comincia all'indirizzo 004CD514, quindi
intanto piazza un breakpoint lì che sei già a buon punto.
a 004CD55 legge il nome e a 004CD568 ne ricava la
lunghezza (il JE 004CD56F successivo serve per vedere se il
campo è vuoto o no) a 004CD581 legge il seriale e a
004CD595 c'è la chiamata alla procedura principale di
verifica. il
JE subito dopo il TEST (004CD59C) secondo te che sarà? un
simpatico good/bad boy jump!
la
parte che va da 004CD5B0 a 004CD6A8 serve soltanto per
decidere quale degli innumerevoli messaggi d'errore stampare;
se noppi il JE, vedrai che prima di saltare gli errori e far
comparire il MessageBox buono, viene settata una variabile
globale tramite MOV DS:[EAX+128], 1, cioè mette a 1 un flag,
che di norma stanno nel data segment; ovviamente la soluzione
non è patchare definitivamente quel byte, perché tanto la
procedura lo reimposta tutte le volte, bensì, ti conviene
ritornare un secondo sulla "checkSerial()" che ti dicevo
prima, cioè la CALL all'indirizzo 004CD595.
questa
funzione è la chiave di volta, perché contiene il controllo
effettivo sulla struttura del seriale (basta un'occhiata
rapida per vedere tutti questi sospetti frammenti ASCII "JTF",
"MF", "FLM", ...); la puoi seguire passo passo (entra con F7)
e vedrai che dopo aver controllato le lunghezze (da 004DCBB8 a
004DCCB4), il tuo seriale viene sottoposto ad una serie di
controlli per vedere se è nella forma giusta e per farlo
esegue un sacco di volte CALL 004DCC4F; beh appena steppi su
quella vedrai un seriale buono comparire nello stack poco più
in basso di ESP, sotto il tuo nome e seriale.
Quella
funzione vuole tre parametri che vengono passati nei registri
EAX, EDX e ECX, che contengono rispettivamente la stringa da
cui generare il codice (il nome in questo caso), il prefisso
("VBC", "MF", ...) ed un numero (10h o 20h) che serve per
avere più varianti (credo dipenda dal tipo di versione che
vuoi registrare); lui cmq ne genera due, una con il parametro
10h ed un'altra con 20h e le mette belle belle sotto i nostri
dati nello stack.
le successive due CALL (004DCC6E e
004DCC79) servono per ripulire il seriale dagli spazi e
caricarlo in EAX, mentre la terza CALL (004DCC84) è uno
splendido StrCmp()! (i nomi simbolici prtrp non si vedono,
perché né IDA, ne DeDe c'hanno capito una mazza di questa
versione di Delphi, quindi devi andare un po' a occhio e
capire mentre fai lo step in) questa solfa si ripete per
tutti gli altri tipi di seriali buoni in funzione del prefisso
ed in fondo quello che conta è che la funzione restituisce un
mero 1 o 0 in base all'esito del controllo (te lo ricordi il
TEST AL,AL subito dopo la chiamata a 004CD59A?), ed infatti di
solito questi valori finiscono in EAX per poi essere letti
dall'esterno. quindi?
Semplice! ritorna in cima alla procedura di check
(004DCBB8) e premi il destro scegliendo "Find references to
selected command" e vedrai che questa procedura viene chiamata
da ben 6 locazioni in totale (una è quella da cui abbiamo
cominciato); questo sta a significare che il controllo viene
fatto in più punti (infatti se patchi in memoria, il seriale
lì per lì viene accettato, ma quando vai a controllare
nell'about è ancora trial). ma allora, estirpiamo il
problema alla radice, dico io! (bene bene, vedo che in queste
due settimane il Metodo del
Boscaiolo sta riscuotendo un notevole successo...):
facciamo sempre restituire 1 a quella maledetta funzione!
vai in fondo a 004DCF20, lì c'è un RETN e poco sopra
c'è LEA EAX,[LOCAL.8]: te dirai subito "bono! ci scrivo MOV
EAX,1 e tutto funza" 7 per l'intuizione, 4 per il
risultato: in Delphi come in VB, spesso le funzioni sono
"wrappate" all'interno di una specie di guscio, cioè un'altra
funzione che le contiene con il solo scopo di risistemare lo
stack ed altre michiate del genere. se steppi sul RETN,
infatti, non ritornerai subito fuori a 004CD59A, ma subito
sotto a 004DCF28 per eseguire un paio di MOV e qualche POP
prima dell'effettivo RETN. ottimo, perché proprio lì c'è il
decisivo assegnamento ad EAX con un MOV EAX,EBX; fino a quel
momento era EBX a contenere 1 o 0...
beh, stavolta ci siamo davvero, ma, in che modo
cambieresti quell'istruzione stavolta? MOV EAX,1 come prima
forse? promosso a teoria, bocciato a pratica!
prova a cambiarlo e guarda che succede: un casino!
l'opcode risultante diventa B8 0100000 che sputtana
completamente tutto, dato che prima c'era un semplice 8BC3 da
2 bytes. come mai secondo te? EAX è un registro a 32 bit,
cioè 4 bytes e metterci 1 significa porre a 0 tutti i suoi bit
meno il primo a destra (l'opcode è al contrario per via del
BigEndian); ma abbiamo davvero bisogno di metterli tutti a 0?
no, basta solo il primo byte che deve contenere 1 (cioè AL =
1, se non lo ricordi, riguardati un pochino di teoria sui
registri, ma è semplicissimo), dato che anche fuori viene
controllato tramite TEST AL,AL e non con TEST EAX,EAX.
provare per credere: se ci scrivi MOV AL,1 occupi due
bytes con B0 01 e setti con successo il flag di seriale
corretto.
EPILOGO: premi il destro, fai Save to Executable,
All Modifications e poi Save file con un nome diverso
dall'originale; chiudi tutto e lancialo e vedrai che
l'intuizione era giusta: il seriale veniva controllato anche
all'inizio (non ho controllato, ma probabilmente tentava di
leggerlo da file o da registro) mediante la stessa funzione
usata per validarlo all'immissione, che noi abbiamo
gentilmente forzato a dirci che va tutto bene... non per
niente, adesso non trovi nemmeno più l'opzione per immettere
il seriale: l'ignara vittima si fida ciecamente di noi!
ora è meglio che vada, sennò fra un po'
arrivano i lupi dalla finestra e mi prendono a morsi il
monitor, perché li dà fastidio pure a loro la luce che fa.
buonanotte...
-=Zero_G=- (Night
Angel mode
) _________________ "To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."
Last edited by Zero_G on Wed Mar 02,
2005 2:08 pm; edited 2 times in
total | |
Back to
top |
|
|
piratino Newbie
Joined: 20 Feb 2005 Posts:
45
|
Posted: Wed Mar 02, 2005
12:19 pm Post
subject: |
|
|
|
Grazie Zero_G veramente
molto bravo e preciso nello spiegare le varie fasi del crack,
e con professori di cracking come te che si impara molto,
ottimo tutorial che spero mi vada bene anche per future
applicazioni in delphi grazie,
piratino | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Wed Mar 02, 2005
4:19 pm Post subject:
|
|
|
|
Avrei qualke domanda (da
nooooob) sul tuo tutorial!
Zero_G wrote: |
la procedura associata al click del
pulsante OK nel RegistrationForm comincia all'indirizzo
004CD514, quindi intanto piazza un breakpoint lì che sei
già a buon punto. | Come si fa a trovare la procedura associata
a un evento, tipo pressione del tasto o altri?
Zero_G wrote: |
in Delphi come in VB, spesso le funzioni
sono "wrappate" all'interno di una specie di guscio,
cioè un'altra funzione che le contiene con il solo scopo
di risistemare lo stack ed altre michiate del
genere. | Come
capisco se la funzione è wrappata? (ke brutto nome! )
Zero_G wrote: |
ora è meglio che vada, sennò fra un po'
arrivano i lupi dalla finestra e mi prendono a morsi il
monitor, perché li dà fastidio pure a loro la luce che
fa. | Sei
sopravvisuto all'attacco dei lupi?!
Grazie! _________________ In Code We Trust | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Wed Mar 02, 2005
4:42 pm Post subject:
|
|
|
|
grk wrote: |
Avrei qualke domanda (da nooooob) sul
tuo tutorial!
| vai,
spara!
grk wrote: |
Zero_G
wrote: |
la procedura associata al click
del pulsante OK nel RegistrationForm comincia
all'indirizzo 004CD514, quindi intanto piazza un
breakpoint lì che sei già a buon punto. | Come si fa a trovare la procedura
associata a un evento, tipo pressione del tasto o
altri? |
questo era un caso particolare perché
era in Delphi, quindi la prima scelta era usare DeDe per
trovare le CALL relative agli eventi; purtroppo però DeDe si è
emozionato di fronte al Delphi 2.0 ed è svenuto (troppo antico
il linguaggio?)
Al
che, dato che anche la conoscenza di IDA si ferma al Delphi
3.0, avevo di deciso di usare la ricerca di stringhe, dato che
tra VB e Delphi fanno a gara a chi ne lascia di più a giro;
sia lo string reference di Olly che il plugin ultra string
reference, individuano il messaggio d'errore in posizione
004CD5CB, 004CD5F5, 004CD61F e 004CD64CD, che corrispondono al
momento in cui le stringhe vengono "pushate" per essere
stampate dal relativo MessageBox.
da una qualsiasi di
esse (sono tutte vicine), cominci a risalire verso l'alto per
cercare l'inizio della procedura (l'assembler non è puramente
sequenziale, quindi non può che essere lì sopra); questa si
può facilmente riconoscere (oltretutto Olly la evidenza pure
sulla sinistra), perché di solito cominciano con il classico
PUSH EBP e MOV EBP,ESP, separati dalla funzione precedente da
NOP o DB 00. Nel nostro caso era a 004CD514.
grk wrote: |
Zero_G
wrote: |
in Delphi come in VB, spesso le
funzioni sono "wrappate" all'interno di una specie
di guscio, cioè un'altra funzione che le contiene
con il solo scopo di risistemare lo stack ed altre
michiate del genere. | Come capisco se la funzione è
wrappata? (ke brutto nome! )
| facile, in fondo alla procedura ci sono 2
RETN uno vicino all'altro; è un po' come le bamboline
cinesi...
Code: |
inizio proc.wrapper
inizio proc.vera .....
..... risistema lo stack
fine proc.vera (RETN) risistema lo
stack fine proc.wrapper (RETN)
|
il
RETN alla fine della proc.vera "rientra" all'istruzione
successiva, cioè all'inizio della fase di restore dello stack
che precede l'ultimo RETN della proc.wrapper. rileggendolo
sembra senso, ma forse capisci meglio dallo schemetto...
grk wrote: |
Zero_G
wrote: |
ora è meglio che vada, sennò fra
un po' arrivano i lupi dalla finestra e mi
prendono a morsi il monitor, perché li dà fastidio
pure a loro la luce che fa.
| Sei
sopravvisuto all'attacco dei lupi?!
| no, questi erano licantropi, quindi stanno
tuttora accerchiando casa mia...
grk wrote: |
Grazie!
| prego!
-=Zero_G=- _________________ "To see a World in
a grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Wed Mar 02, 2005
7:49 pm Post subject:
|
|
|
|
Uazz sei stato un missile!
Ma quel plugin ultra string reference dove lo trovo?
(altri plugin di olly utili?) E DeDe a ke serve? Dove lo
trovo?
Mentre oggi pome cazzeggiavo in palestra ho
pensato ke forse si potrebbe scrivere un loader ke breaka
quando il prog genera le chiavi buone e ce le fa vedere. E'
una cosa fattibile? E
farcele mostrare dal prog stesso?
Grazie! _________________ In Code We Trust | |
Back to
top |
|
|
bender0 Guru
Joined:
18 Jan 2004 Posts: 390 Location: ~/
|
Posted: Wed Mar 02, 2005
8:57 pm Post subject:
|
|
|
|
grk wrote: |
(altri plugin di olly
utili?) | qui
ce n'e un sacco. cerca cerca io uso
godup, ollydump, ollyscript, isdebuggerpresent, questi sono
quelli che mi ricordo. _________________ b0 | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Wed Mar 02, 2005
10:12 pm Post
subject: |
|
|
|
grk wrote: |
Ma quel plugin ultra string
reference dove lo trovo? (altri plugin di olly utili?)
E DeDe a ke serve? Dove lo trovo?
|
Zero_G fornisce gentilmente tutto
quello di cui hai bisogno: se leggi lo sticky post sui plugins
ed i file .ini di olly, vedi che c'è il link al mio sito dove
puoi trovare queste cose; sei fortunato perché ieri ho deciso
di metterci anche DeDe ultima versione, visto che il sito di
quel pazzoide di DaFixer va a pedali.
i
link sono questi...
Ollydbg plugins: http://zerog.altervista.org/RE/ollydbg/olly_plugins.rar
Ollydbg.ini: http://zerog.altervista.org/RE/ollydbg/ollydbg.ini
DeDe 3.50: http://zerog.altervista.org/RE/tools/DeDe%203.50.rar
questo fine settimana metto il link anche a DeDe e poi
volevo mettere qualche screenshot del syntax highlightning
così si vede meglio.
grk wrote: |
Mentre oggi pome cazzeggiavo in
palestra ho pensato ke forse si potrebbe scrivere un
loader ke breaka quando il prog genera le chiavi buone e
ce le fa vedere. E' una cosa fattibile?
E farcele mostrare dal prog stesso? |
mmhh.. non credo valga la pena di
sgobbare così tanto: per fare serial sniffing ti basta
tranquillamente il debugger; nel semi-tutorial che ho scritto
mi pare di aver indicato il punto in cui qualche seriale buono
passa dalla memoria, quindi ti basta segnarlo da una parte.
scrivere un loader come dice te non è proprio
semplicissimo: deve intercettare le API Call (e questo in
fondo in fondo si può anche fare), ma devi fare una cosa ad
hoc per questo target che capisca in base alle chiamate
quand'è il momento in cui puoi dumpare dalla memoria il
seriale giusto; dal punto di vista didattico di sicuro sarebbe
bello, però ti devi impegnare!
-=Zero_G=-
Grazie! [/quote] _________________ "To see a World in a
grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Wed Mar 02, 2005
10:44 pm Post
subject: |
|
|
|
X il loader era solo
un'idea..ma in effetti sarebbe troppo sbatti! L'unico
loader ke ho scritto è x il mirc e mi sono dovuto sparare 1
tutorial e leggere qualcosa sulle api di winzoz x fare debug!
Cmq i link non
funzionano! Il sito
c'è ma non ho trovato i link..
Fammi avere notizie e grazie! _________________ In Code We Trust | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Fri Mar 04, 2005
1:42 am Post subject:
|
|
|
|
non capisco... se posto
i link, non funzionano, ma se ci clicco sopra dal sito sì;
eppure sono del tutto identici!
boh! vai nella sezione Reversing --> "Cassetta
degli Attrezzi" e cliccaci sopra, poi dimmi come è andata...
http://zerog.altervista.org/reversing.htm
PS: DeDe è un
decompilatore per il Delphi.
-=Zero_G=- _________________ "To see a World in
a grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Fri Mar 04, 2005
8:22 am Post subject:
|
|
|
|
Ho controllato sul sito e
ho trovato i plugin di olly e il tuo file ini Di
DeDe nessuna traccia xò e il link continua a non funzionarmi!
Grazie! _________________ In Code We
Trust | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Fri Mar 04, 2005
8:34 am Post subject:
|
|
|
|
questa cosa non ha senso...
il link non funziona: http://zerog.altervista.org/RE/tools/DeDe.rar
ma il programma c'è, porcaccia la miseria!
-=Zero_G=- _________________ "To see a World in
a grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
grk Guru
Joined:
14 Jan 2005 Posts: 250 Location: Zion
|
Posted: Fri Mar 04, 2005
10:03 am Post
subject: |
|
|
|
Ahahahah! Improvvisamente
sono riuscito a scaricare DeDe ma i link di olly continuano a
non andare mentre dal sito funzionano! Azz,
non sono più i siti di una volta! Grazie!
_________________ In Code We Trust | |
Back to
top |
|
|
Zero_G Moderator
Joined:
20 May 2004 Posts: 886 Location: Dark Side of the
Moon
|
Posted: Sat Mar 05, 2005
6:51 pm Post subject:
|
|
|
|
OK, allora ancora non ho
capito perché i link da qui non funzionano, ma ho aggiornato
tutto il sito e l'ho testato, da lì va; chiunque avesse
bisogno di DeDe o della roba per Olly, andate nella sezione
Reversing e scaricate, anche se ultimamente il server di
AlterVista è un pochino lento...
buon download! (se
avete bisogni particolari di tools, scaricate la lista di
quello che ho e mandatemi un PM; la trovate come "link
all'inventario" sempre nella stessa pagina)
-=Zero_G=- _________________ "To see a World in
a grain of Sand, Hold Infinity in palm of your
Hand." | |
Back to
top |
|
|
|
Watch
this topic for replies |
You can post new topics in this forum You
can reply to topics in this forum You can edit your
posts in this forum You can delete your posts in this
forum You can vote in polls in this forum You
can moderate
this forum |
|