Understand for java

Data

by Johan_Padan

 

04/06/2005

UIC's Home Page

Published by Quequero

 

Grazie Johan :)

 

....

 

....

Difficoltà

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

 

 

Introduzione

Stavo cercando in internet un ambiente di sviluppo per Java ed ho trovato questo “understand for java” che con quello che costa ho subito pensato potesse fare tutto lui al mio posto.

Speriamo che il costo sia direttamente proporzionale alle effettive capacità di questo Ide.

Tools usati

Olly dbg (sezione tool della UIC)

Peid v 0.93

URL o FTP del programma

www.scitools.com

Essay

Il programma è in versione trial per 15 giorni e si riceve un e-mail con il relativo codice di attivazione.

Aprendolo con Peid vedo che è scritto in Visual C++ 6 e non packed. Faccio partire il programma e nella sezione dedicata alla registrazione del prodotto si vede che per il codice di attivazione definitivo verrà mandato un key file. Appartengo ancora a pieno titolo alla categoria “aspiranti newbies” è meglio che cerci una strada più semplice provando a rendere illimitata la versione trial.

Apro il programma con OllyDbg e metto dei breakpoint sulle classiche API GetLocalTime, GetTickCount e GetSystemTime per vedere che cosa posso ricavarne ma il sistema si blocca e non riesco a debuggare; riesco a proseguire solo attivando il plug-in IsDebuggerPresent:Hide.

E’ strano vado a controllare ma non c’è nessuna chiamata all’API di Windows IsDebuggerPresent peraltro per continuare il lavoro devo continuamente attivare questa opzione. Dall’analisi delle precedenti chiamate alle API non riesco a ricavare niente (ovviamente per le mie misere conoscenze nell’arte del reverse engineering).

Proviamo a cercare in All referenced text string e trovo “evaluation has expired”. In prossimità di questo codice trovo “Licensing” ,  “If you need more time for evaluation...” L’unica mia possibilità è quella di mettere un breakpoint all’inizio di questa procedura e siccome il programma non è ancora scaduto segnarmi i je/jne che esegue/non esegue fino all’avvio del programma e trasformare i salti condizionali in jmp mentre dove non esegue nessun salto condizionale noppare e lasciare fluire il programma (ho letto su un tute della uic che questa tecnica è quella del boscaiolo non credo ci sia nulla da aggiungere !!!!).

Per cui dall’istruzione :

005A6B2B JNZ TAKEN trasformato in JMP

005A6C88 JE TAKEN trasformato in JMP

005A6D04 JE NOT TAKEN trasformato in NOP

005A6D2B JE NOT TAKEN trasformato in NOP

005A6DA2 JE NOT TAKEN trasformato in NOP

005A6DEE JE TAKEN trasformato in JMP

006EB232 JNZ TAKEN trasformato in JMP

006EB24C JE NOT TAKEN noppato

006EB25A JE NOT TAKEN noppato

006EB269 JE TAKEN trasformato in JMP

A questo punto il programma funziona anche se continua ad apparire la nag screen con scritto “expired”  metto un bpx su EnableWindow e mi trovo all’interno della procedura che gestisce la nag screen mi porto all’inizio della procedura e con tre salti (come a damone) la elimino:

007253CF JMP

00725751 JMP

00725798 JMP

Faccio un paio di verifiche spostanto l’orologio e tutto funziona.

(Chiedo venia a tutti gli informatici).

Note finali

In primis un ringraziamento al Magnifico Rettore senza il suo sito non avrei potuto imparare niente (non so se dopo aver letto il tute sia il caso di creare una sotto sezione newBies) un grazie a tutti coloro che pubblicano i tute sulla UIC e sono disposti a condividere le loro conoscenze con gli aspiranti reverser e infine 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.