Webfeedback |
||
Data |
by "syscalo" |
|
18/01/2002 |
Published by Quequero |
|
|
Beh ahia..Tostissimo, come hai fatto??? Beato te che sei capace di queste prodezze..Grazie sys mi hai aperto un mondo davanti :PPPPPP |
In fin dei conti anche gli alberi hanno diritto di volare! |
.... |
|
.... |
Difficoltà |
( )NewBies ( )Intermedio ( )Avanzato (*)Master |
Volete sapere cosa è, o meglio cosa fa webfeedback? Ok, dalla schermata iniziale:
"webfeedback is an easy-to use, intuitive website analysing tool."
forse è la definizione che non è molto intuitiva =).
Introduzione |
Tools usati |
URL o FTP del programma |
Essay |
Il tutorial è breve, ma vediamo comunque di schematizzare i passi che ci porteranno ad essere utenti registrati:
Passiamo all'azione:
punto 1)
Portiamoci nella dir principale del programma
e vi troviamo un po' di file: il file webfeedback.exe potrebbe essere il nostro
obiettivo ma la nostra esperienza (l'avete anche voi vero?!) ci porta a dare
un'occhiata alle proprietà del file, e si scopre che come descrizione
c'è:
"LaunchAnywhere: the Java application launcher"
e come nome del file originale:
"laxw.exe"
è chiaro che i programmatori hanno semplicemente rinominato il launcher per applicazioni Java.
Ormai ci siamo, dobbiamo cercare un file jar che costituisce la vera applicazione. Tra le varie dir c'è lib che tra tutte quelle presenti mi sembra la più indicata. Ed infatti all'interno della dir lib c'è il file webfeedback.jar, cosa vogliamo di più?-)
punto 2)
spero non ci sia nulla da spiegare.
punto 3)
girovagando tra le directory si trova una dir interessante, register,
che contiene un file ancora più interessante RegistrationKeyData.class
che come il nome lascia intuire dovrebbe fare al caso nostro!
punto 4)
arriva la parte in cui sfruttare le potenzialità di jad usandolo
per decompilare il file RegistrationKeyData.class:
jad -sjava RegistrationKeyData.class
e "magicamente" ci ritroviamo con un file RegistrationKeyData.java con il seguente contenuto:
// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3)
// Source File Name: RegistrationKeyData.java
package WebFeedback.register;
import java.io.Serializable;
import java.util.Date;
// Referenced classes of package WebFeedback.register:
// ValidationInformation
public class RegistrationKeyData implements Serializable
{
public RegistrationKeyData()
{
userName = "Unregistered Version";
registrationOk = false;
}
public void setFirstUsedTimeSec(long l)
{
firstUsedTimeSec = l;
}
public boolean isFirstTimeUsed()
{
return firstUsedTimeSec == 0L;
}
public void setUserName(String s)
{
userName = new String(s);
}
public long getFirstUsedTimeSec()
{
return firstUsedTimeSec;
}
public ValidationInformation isExpired(long l)
{
Date date = new Date();
long l1 = date.getTime();
long l2 = getFirstUsedTimeSec() + l * 24L * 3600L * 1000L;
long l3 = (l2 - l1) / 0x5265c00L + 1L;
ValidationInformation validationinformation = new ValidationInformation(l3);
validationinformation.setExpired(l1 > l2);
return validationinformation;
}
public boolean isRegistered() <-- questa è la funzione che più vi deve attirare
{
return registrationOk; <-- e questo è il punto dove interveniamo
}
public String getUserName()
{
return userName;
}
public void unlockRegistration()
{
registrationOk = true;
}
private long firstUsedTimeSec;
private String userName;
private boolean registrationOk;
}
come ho commentato nel codice, la funzione che
a noi interessa è isRegistered che come si può intuire
ritorna lo stato di registrazione dell'utente.
Per fare questo il programma ritorna il contenuto della variabile registrationOk
che come si vede dal valore di ritorno della funzione e dalla dichiarazione
della variabile, è di tipo boolean.
Ora potreste pensare di andare a cercare nel codice dove viene settato il valore di registratioOk e agire di conseguenza, ma tutto questo non ci serve!
In questo momento noi siamo la classe RegistrationKeyData, e dobbiamo rispondere al programma che ci chiede se l'utente isRegistered e noi possiamo solo rispondergli true (equivalente a "certamente signor programma").
siamo così giunti al punto 5)
editiamo il file RegistrationKeyData.java modificando la funzione isRegistered
in:
public boolean isRegistered()
{
return true; <--
questo è il "certamente signor programma"
}
passiamo alla compilazione, punto 6)
compilate il file RegistrationKeyData.java che avete appena modificato:
javac RegistrationKeyData.java
ed ottenete il nuovo RegistrationKeyData.class.
punto 7)
trascinate il file RegistrationKeyData.class all'interno del file webfeedback.jar
(dopo averlo aperto con il rar) ovviamente nella dir WebFeedBack\register.
punto 8)
avviate il programma e scoprirete (dopo avere passato la prima schermata di
presentazione) che non c'è più la finestra di registrazione e
che sulla barra in basso dell'applicazione compare la scritta:
"Your installation of weebfedback is already registered!"
che come avete già notato contiene pure un errore di battitura (probabilmente i programmatori non hanno ben chiaro come si chiama il loro programma).
at the next time, syscalo
Note finali |
Una sola, ma mooolto interessante:
come avrete capito il vero problema di Java è che si può facilmente
passare dal bytecode al sorgente Java.
Bene, tutto ciò che avete letto oggi sarà
possibile anche per i futuri (ormai già presente) moduli "assembly"
di .net, l'ambiente di lavoro con cui Microsoft vuole rivoluzionare il mondo
del software.
Come sapete Miscrosoft è molto attenta ;^) ai problemi di sicurezza e
per non permettervi di decompilare il codice "assembly" (il bytecode
di .net) metterà a disposizione dei programmatori un tool che attualmente
è in fase di preparazione, dal nome inconfondibile: "obfuscator".
Come farà ad impedirvelo? Rinominerà funzioni e variabili con
nomi generati in modo random!
Con questa brillante idea la piattaforma .net è salva... o forse lo è solo secondo Microsoft! Il mio consiglio è:
state pronti, perchè se ne vedranno delle belle!
Disclaimer |
Il seguente tutorial è divulgato a
solo scopo informativo, nella speranza che i programmatori possano impare a
proteggere il loro software (se proprio decidono che è necessario).
Non usate questa tecnica per utilizzare il programma senza registrarlo, i programmatori
hanno lavorato e se voi ritenete che il loro programma vi sia utile è
giusto che lo paghiate.