Oppure

Loading
26/04/20 12:39
Goblin
Postato originariamente da Carlo:

Postato originariamente da Goblin:
No in questo caso sono stringhe

Ti ho fatto una domanda stupida dato che nell'assegnazione ci sono gli apici.

Se sono stringhe non devi cercare gli esadecimali ma i corrispondenti codici ASCII
per esempio di: CS_AA1 = '50'; // P
devi cercare il codici di 5 e 0 =

Con costanti così corte, nell'eseguibile troverai troppe corrispondenze per capirci qualcosa.

Però puoi perseguire questa strada; compili due eseguibili identici in tutto meno che in una costante es:
eseguibile 1: CS_AA1 = '50';
eseguibile 2: CS_AA1 = '51';

tutto il resto deve essere uguale, poi con un Hex compare, trovi dov'è la differenza :yup::rofl:


Si potrei provare a compilare 2 .exe e fare il giochino "trova le differenze", ma il mio punto di partenza è un po' diverso, ossia visto il file.exe da un esterno è possibile risalire alla chiave formata da delle costanti dichiarate separate e poi unite.
Per unirle faccio una cosa abbastanza semplice e terra terra
...
  a := StrToInt('$' + CS_AA1);  // trasformo la costante in intero
  b := chr(a);  // prendo il codice ascii
  s := s + b;   // lo accodo 
...


faccio una "select" su una tabella leggendo un campo crittografato ed applicando la chiave lo rendo "intelligibile"
Ovviamente è una "protezione" per gente scarsa come me, ma abbastanza valida (credo) per lo smanettone che vuol vedere i campi "crittografati" nel "DB",
Ibis redibis non morieris in bello
26/04/20 12:44
Carlo
Come sai conosco molto poco Delphi, ho fatto un test, l'eseguibile prodotto molto probabilmente è offuscato, non so se c'è qualche opzione per disattivare l'offuscazione.
Con VS, nessun problema le costanti di stringa sono rappresentate così come sono "50" lo trovi come 35 00 30 00 e "63" come 36 00 33 00.
Per VS ci sono vari .NET Obfuscator, perché gli eseguibili VS sono facilmente decompilabili.
Ultima modifica effettuata da Carlo 26/04/20 12:48
in programmazione tutto è permesso
26/04/20 12:48
Goblin
Postato originariamente da Ultimo:

Postato originariamente da Ultimo:

Per fare questi lavoretti ci sono dei programmi dedicati molto potenti :k:


Una volta mi sono divertito a sbloccare un programmino

solo per divertimento personale


mmm non credo che chi userà (nel caso lo useranno) questo programmino abbia le tue competenze (almeno spero :rofl::rofl:)
Ibis redibis non morieris in bello
26/04/20 12:52
Carlo
Postato originariamente da Goblin:
Si potrei provare a compilare 2 .exe e fare il giochino "trova le differenze", ma il mio punto di partenza è un po' diverso, ossia visto il file.exe da un esterno è possibile risalire alla chiave formata da delle costanti dichiarate separate e poi unite.
Per unirle faccio una cosa abbastanza semplice e terra terra
...
  a := StrToInt('$' + CS_AA1);  // trasformo la costante in intero
  b := chr(a);  // prendo il codice ascii
  s := s + b;   // lo accodo 
...


faccio una "select" su una tabella leggendo un campo crittografato ed applicando la chiave lo rendo "intelligibile"
Ovviamente è una "protezione" per gente scarsa come me, ma abbastanza valida (credo) per lo smanettone che vuol vedere i campi "crittografati" nel "DB",


Ho capito bene? l'.exe è il tuo e vuoi evitare che uno smanettone cercando nel tuo exe possa recuperare le costanti che contengono la tua chiave crittografica?
Poi il DB, che c'entra?, prima non lo avevi nominato...:asd:
Ultima modifica effettuata da Carlo 26/04/20 12:55
in programmazione tutto è permesso
26/04/20 12:53
nessuno
Nel caso specifico non ci sono tool che possano individuare questo dato.

Semmai, ripeto, con OllyDbg o S-Ice o simili puoi fare debug del processo in esecuzione e trovare il punto in cui la chiave (una volta ricostruita interamente) viene utilizzata.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
26/04/20 12:56
Carlo
Postato originariamente da nessuno:

Nel caso specifico non ci sono tool che possano individuare questo dato.

Semmai, ripeto, con OllyDbg o S-Ice o simili puoi fare debug del processo in esecuzione e trovare il punto in cui la chiave (una volta ricostruita interamente) viene utilizzata.


Quello che dice nessuno è chiaro, ma praticamente irrealizzabile, a meno che si scriva un codice apposito che analizza i processi e identifica quello giusto, e non lo saprei fare...!
Ultima modifica effettuata da Carlo 26/04/20 12:59
in programmazione tutto è permesso
26/04/20 13:10
nessuno
Postato originariamente da Carlo:

Postato originariamente da nessuno:

Nel caso specifico non ci sono tool che possano individuare questo dato.

Semmai, ripeto, con OllyDbg o S-Ice o simili puoi fare debug del processo in esecuzione e trovare il punto in cui la chiave (una volta ricostruita interamente) viene utilizzata.


Quello che dice nessuno è chiaro, ma praticamente irrealizzabile, a meno che si scriva un codice apposito che analizza i processi e identifica quello giusto, e non lo saprei fare...!


Irrealizzabile? Perché? Quando ero "giovane" lo facevo giornalmente per vari motivi su vari sistemi.
Anche adesso si potrebbe fare, ma adesso non ne vedo la ragione.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
26/04/20 13:21
Carlo
Postato originariamente da nessuno:
Irrealizzabile? Perché? Quando ero "giovane" lo facevo giornalmente per vari motivi su vari sistemi.
Anche adesso si potrebbe fare, ma adesso non ne vedo la ragione.

Avrei dovuto specificare meglio: irrealizzabile per me :k:
in programmazione tutto è permesso