Able2doc 2.0 Standard E. +Professional

Data

by Johan_Padan

 

18/11/2005

UIC's Home Page

Published by Quequero

 

Grazie di nuovo Johan! Continua cosi'!

 

....

 

....

Difficoltà

(x)NewBies ( )Intermedio ( )Avanzato ( )Master

 

 

Introduzione

Able2Doc Version 2.0, Standard Edition converte I file da PDF a .DOC

Able2Doc Professional has the ability to convert scanned PDF documents too.(OCR)

Tools usati

OllyDbg

URL o FTP del programma

XXX.investintech.com  scaricate la versione free trial

Essay

La versione free trial di Able2Doc S.Edition ha una durata di 7 giorni ed il limite massimo di conversione della pagine da pdf a .doc è di tre. Non vale la pena cercare di bloccare il timer avrei un programma quasi inutilizzabile per cui cerchiamo dove viene controllato il seriale.

L’approccio è il solito, apro Olly e vado alla ricerca della stringa “Invalid Pin” che il programma emette puntalmente al primo tentativo di immissione del seriale. Alla riga 00403E0B individuo la scritta ed appena sopra ci sono tre call e tre rispettivi je che mi permettono, se eseguiti, di saltare il messaggio di invalid pin. Nessun criterio particolare di scelta, decido di partire ad analizzare la prima all’istruzione 00403DD5 con call.0044F0F0. Dentro questa call trovo a partire da 0044F121  tre chiamate alla call 0044F350 che recupera il mio seriale nella forma xxxx-xxxx-xxxx e ognuna delle call modifica una parte del seriale assegnando valori diversi. Non sono riuscito a capire il senso di tale modifica peraltro mi sono accorto che digitando il seriale 2222-2222-2222 veniva tenuto inalterato e quindi ho deciso di tenere questo per riuscire a rintracciarlo tra  le varie chiamate. A partire dall’istruzione 0044F13D ci sono tre chiamate alla call 0044FF835 ognuna delle quali prende una sezione del seriale e verifica che sia composto esclusivamente da lettere o numeri, non ci devono essere caratteri speciali. Seguendo il flusso del programma all’istruzione 0044F172 ho la call 4196F0 che è quella che effettua il controllo del seriale! Anche questa call si ripete per tre volte ed ognuna richiama una parte del seriale.

00419739  |.  7A 08         JPE SHORT .00419743 (lo trasformiamo in jmp)

0041977B  |.^ 74 C0         JE SHORT .0041973D (lo noppiamo)

00419780  |.  F77C24 14     IDIV DWORD PTR SS:[ESP+14]

00419784  |.  BA 00000000   TEST EDX, EDX (sostituire con MOV EDX,0)

0041978B  |.  F77C24 18     IDIV DWORD PTR SS:[ESP+18]

0041978F  |.  BA 00000000   TEST EDX, EDX  (sostituire con MOV EDX,0)

00419796  |.  F77C24 1C     IDIV DWORD PTR SS:[ESP+1C]

0041979A  |.  BA 00000000   TEST EDX, EDX  (sostituire con MOV EDX,0)

004197A9  |.  0F94C0        SETNE AL (sostituire con SETE AL)

Non sono chiaramete riuscito a trovare tutta la logica della routine perché ci sono parecchie istruzioni x8087 tipo FLD, FCOMPP, FSTSW AX che si basano sui numeri a virgola mobile e lascio l’incarico a quelli più bravi; peraltro il senso delle rettifiche è che tutte le divisioni devono dare zero, come resto, affichè il programma si registri per cui ho forzato l’immissione dello zero nel registro edx nel quale deve confluire il resto di ogni divisione.

A questo punto inserisco nuovamente i mio seriale 2222-2222-2222 ed ottengo come messaggio “you have 30 days left on your 30 day subscription” . E’ come se avessi acquistato una licenza temporanea per l’uso completo del programma (basta limitazione delle 3 pagine).

C’è una curiosità; se dovessi inserire come seriale provvisorio i numeri 0000-0000-0000-0000 ottengo come  messaggio che  questo seriale non va bene per questa versione ma devo prima scaricare l’upgrade professional. Quindi per il momento proseguo con il mio vecchio serial.

A questo punto visto che il programma è completamente funzionante, per 30 gg., vale la pena di bloccare il timer ed eliminare la nag screen che appare tutte le volte ricordandomi i gg rimanenti. Questa volta con Olly non riesco a trovare nessuna stringa di questa nagscreen per cui decido di steppare a partire dalla prima istruzione successiva alle tre call che verificavano il seriale. Breakko il prg a partire dall’istruzione 0044F1AA e steppando con F8 individuo all’istruzione 0044E5BE la call 0044E820 responsabile della nag screen.Steppiamo all’interno della call e all’istruzione

0044E8B3   8B8C24 900B00>MOV ECX,DWORD PTR SS:[ESP+B90] (vale 1E “30gg”)

0044E8BC SUB ECX, EAX   (lo noppiamo)

0044E8BC  85C9          TEST ECX,ECX

in questo modo ecx contiene sempre 1E.

Per eliminare la nag screen che a questo punto continuerebbe a riproporre 30 gg, dall’istruzione 0044F172 dopo le 3 call 004196F0 di verifica del serial steppando con F8 arrivo all’istruzione 0044e4c5 .

0044E58C cmp al, 1   sostituire mov al,0

0044e5ad  cmp al, 1 sostituire con mov al,0

(in questo modo salto la call 0044e820 generatrice della nag screen)

0044e5d7  test al, al sostituire con mov al,0

(evito la call di controllo sulle modifiche all’orologio di sistema).

La protezione per quanto riguarda Able2Doc Professional è esattamente la stessa vista nella versione Standard Edition per cui:

0044F8F9 jpe  diventa jmp

0044F93B je diventa nop

0044F944 test edx,edx diventa mov edx,0

0044F94F  test edx,edx diventa mov edx,0

0044F95A  test edx,edx diventa mov edx,0

0044F969 setne al  diventa sete al  (e il seriale 2222-2222-2222 viene accettato)

0044F0BA sub ecx, eax diventa nop (x bloccare il contantore a 30 gg)

Note finali

Un bacio a N. moglie perfetta ed impareggiabile amante!!!!!

Disclaimer

Vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo che ogni sviluppatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Reversiamo al solo scopo informativo e per migliorare la nostra conoscenza del linguaggio Assembly.