Zoom Icon

Able2Doc

From UIC

Able2doc 2.0 Standard E. +Professional

Contents


Infos
Author: Johan Padan
Email:
Website:
Date: 18/11/2005 (dd/mm/yyyy)
Level: Working brain required
Language: Italian Image:Flag_Italian.gif
Comments: Que: Grazie di nuovo Johan! Continua così!



Introduction

Able2Doc Version 2.0, Standard Edition converte i file da PDF a DOC.
Able2Doc Professional può convertire anche i PDF scannerizzati.(OCR)


Tools

OllyDbg


Link e Riferimenti

http://www.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" . È 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 MOV ECX,DWORD PTR SS:[ESP+B90] (vale 1E "30gg")
0044E8BC SUB ECX, EAX (lo noppiamo)
0044E8BC 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 contatore a 30 gg)


Note Finali

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


Disclaimer

I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.

Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.