Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Valori di stringhe dall'EXE

Premettendo che non conosco strumenti per "analizzare" un EXE (fatto in VB,
ovviamente),
Ipotizziamo di scrivere:
Dim s As String
s="ABC"
è probabile che analizzando/"visualizzando" i bytes dell'EXE come se fossero
caratteri, a un certo punto veda "ABC" in chiaro.
Se scrivo così (per camuffare un po'):
Dim s As String
s=""
For n=Asc("A") to Asc("C")
    s = s & Chr(n)
Next n
è invece possibile (?) che la sequenza "ABC" non sia "visibile" nell'EXE con
le stesse modalità.
La domanda finale è semplice: Con qualsivoglia strumento, pensate che sia
possibile (disponendo solo dell'EXE) "vedere" il valore di una variabile
stringa (non una costante), comunque composto, quindi, nel caso indicato
"ABC"?
Motivazione: Vorrei inserire in un programmillo a larga distribuzione (no,
non diventerò ricco, anzi, non beccherò un soldo) una chiave che mi serve
per crittografare e che vorrei fissare nel programma, ma (comunque
complicata nella sua composizione) alfine assegnata a una variabile per non
doverla comporre ogni volta che serve nei vari punti del programma stesso.
Mi rugherebbe un tantino che con qualche aggeggio se ne possa vedere il
valore...
Grazie.

 aggeggio se ne possa vedere il valore...
e ma se si confrontano 2 tuoi exe ? anche se spalmi la chiave le differenze
son proprio i tuoi pezzi di chiave ! Non credi ?
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 differenze son proprio i tuoi pezzi di chiave ! Non credi ?
No. Nel mio caso la chiave sarebbe sempre la stessa, in tutti gli EXE
(ovviamente di quella procedura) e di qualsiasi versione. E' fissa e
immutabile (proprio perchè deve garantire la de-crittazione anche di file
fatti con versioni precedenti quella in uso).

valore...
Male che vada la vedi in memoria col debugger quando fai il test ;-)
-- 
ciao, hal

Lupo wrote:
<snip>
Lupo fai così:
1) Crea un programma che usa un algoritmo per cifrare la chiave( magari con
uno XOR o un HASH )
2) Nel tuo programma, mettici l'hash già creato, poi l'utente dovra'
inserire la password che tu
otterrai mettendo in hash il valore che ti interessa e confrontandolo con
quello che hai nell'eseguibile.
Dovresti essere abbastanza sicuro, così.
Ciao,
Andrea

 Dovresti essere abbastanza sicuro, così.
Ho capito: La regola non della chiave, ma del suo risultato.
Ma ho sempre un problema: La chiave è mia e solo mia, nessuno la deve
digitare (e quindi nemmeno conoscere), quindi, come faccio a verificare se
il risultato è giusto se in qualche variabile del programma non metto la
chiave di partenza? Suggerimenti?

 chiave di partenza? Suggerimenti?
-Crea una funzione generatrice di numeri (pseudocasuali)
-Nel programma inserisci al posto della stringa in chiaro lo XOR byte per
byte tra i numeri forniti dalla funzione e quelli della codifica dei
caratteri originali della stringa.
-Quando ti serve la stringa in chiaro fai lo stesso XOR per ottenerla. Poi
la cancelli subito.
tieni conto che:
-Chiunque sia motivato/capace abbastanza da fare reverse engineering capirà
il metodo e quindi troverà la chiave.
-Chiunque abbia voglia di vedere lo spazio di memoria del tuo programma in
esecuzione prima o poi la vedrà in chiaro.
termoPilucco.

 programma in esecuzione prima o poi la vedrà in chiaro.
Già. :-(

Lupo wrote:
<snip>
Un'alternativa potrebbe essere un "disco chiave".
Potresti fornire un dischetto con all'interno un solo file "enorme" e da
programma verifichi la presenza di suddetto supporto e che l'hash
contenuto nel programma stesso corrisponda ad una certa "regola" tua.
Che ne pensi?
Andrea

chiave di partenza? Suggerimenti?
Non capisco. Quanto suggerito da Andrea e' confrontare il risulatato
dell' hash quindi memorizzi l'hash, *NON* la chiave iniziale confronti
l'hash della chiave inserita con quello che hai memorizzato.
Credo che l'unico modo per bypassare questo genere di protezione sia
ricompilare l'eseguibile con il test invertito, in modo che non
funzioni con la chiave giusta, ma sempre con chiavi sbagliate.
Si comincia gia' ad aver bisogno di debugger, disassemblatore,
assemblatore... insomma, deve proprio valerne la spesa ;-)
-- 
ciao, hal

 file fatti con versioni precedenti quella in uso).
Allora spezzetta e ad ogni versione cambiagli qualcosa tipo che se per
scrivere "8" nella ver 1 fai "4 * 2" nella seconda fai "4 + 2 + 2" e cose
simili ^_^
-- 
-Gigio@Work(?)-

[*The DeerBear* = 
rain...@tin.it
 in
news:blgpii$c1ur4$
1...@ID-170738.news.uni-berlin.de
] ha scritto:

Che ... non è "applicabile", vista la diffusione (ampia, facile e libera,
insomma, il solito download da un sito di "nicchia" e, per quel che ne so,
di una certa importanza) e la gratuità... ;-)

 l'hash della chiave inserita con quello che hai memorizzato.
Sě, ora mi faccio un caffč, eccito i pochi neuroni, ma ... mi par di vedere
un po' di luce.
Grazie della delucidazione e mi scuso con Andrea per non aver letto il suo
post con attenzione. Sono un po' preso...
Grazie a tutti gli intervenuti.

Lupo wrote:
<snip>
Ragazzi, se non ci si aiuta fra colleghi... ^_^
Andrea

 Ragazzi, se non ci si aiuta fra colleghi... ^_^
Ok al met vi aiuto a finire i secondi e il vino allora ^_-
-- 
-Gigio@Work(?)-

 Già. :-(
Anche questo è inevitabile. Per questo ogni software è craccabile.
termoPilucco.

Ok al met vi aiuto a finire i secondi e il vino allora ^_-
Nel senso che finisci il vino in pochi secondi? ;-)
-- 
ciao, hal

 Nel senso che finisci il vino in pochi secondi? ;-)
si ma il TUO vino ^_-
-- 
-Gigio@Work(?)-