Newsgroup: it.comp.lang.delphi
Titolo: Modificare un eseguibile... Un grande problema!!!

Ciao a tutti,
Ecco un bel domandone di quelli da mandarmi subito a quel paese ;;)))
Ecco il problema:
Ho un eseguibile creato da un professionista ormai deceduto, il quale a suo
tempo dietro compenso oltre all'eseguibile ci aveva fornito anche i
sorgenti.
L'applicazione è stata creata con Delphi 3 (se ben ricordano) ed oramai
anche i dischetti con i sorgenti sono andati a puxxane (sfiga nella sfiga!!)
Ecco il domandone, come posso fare a cambiare alcuni parametri
dell'applicazione non avendo i sorgenti??
In realta si tratta di cambiare delle caxxate, ovvero, ho un archivio dove
vengono immessi degli articoli i quali hanno un codice a 4 cifre numerico,
poiché siamo ormai vicini al fatidico codice 9999 (9923 x essere esatti)
abbiamo formulato l'ipotesi di modificare codesto codice affinche possa
anche avere lettere oltre che cifre!! (A000, A001, ....)
Abbiamo contattato una azienda, ma chiaramente ci ha risposto che loro non
ci mettono le mani e che ci offrono il loro prodotto... ovviamente.
E qui 'provo' ad entrare in ballo io...
Ho sentito che esistono dei de-compilatori per delphi e dopo una piccola
ricerca ho pure trovato qcosa, ma niente da fare...
Preciso che il programma è abbastanza banale nel complesso, e chiedo a voi
se poteste aiutarmi
1M grazie a chi saprà consigliarmi..
Marco


Ciao,
Prova con resource hacker io ho fatto un programmino composto da una sola
maskedit ke può contenere al max 4 caratteri e che siano solo numeri...
A Questo punto ho compilato per ottenere l'exe e l'ho decompilato con
Resource Hacker 3.4.0
Nella cartella RCData dovresti trovare qualcosa tipo Tform1 o il nome della
form dell'exe (smanettaci un pò)...
A fianco trovi tutti gli oggetti che fanno parte di quella form e tra questi
dovrebbe esserci anche il campo da te cercato (devi solo capire qual'è,
magari ci arrivi dal nome o per pura fortuna...).
Nel mio caso trovo questo:
  object Mask: TMaskEdit
    Left = 8
    Top = 8
    Width = 120
    Height = 21
    EditMask = '0000;1;_'
    MaxLength = 4
    TabOrder = 0
    Text = '    '
  end
So che l'oggetto si kiama MaskEdit e mi cambio la proprietà editmask da
'0000;1;_' in '00000;1;_' in modo da farle contenere 5 cifre anzikè 4 e la
proprietà MaxLength in 5 anzichè 4 (per lo stesso ovvio motivo).
Non ottieni il risultato sperato nel senso che potrai mettere solo numeri
(ma 5 cifre anzichè 4) e non per esempio "A0000".
Al max prova a cambiare l'editmask da '0000;1;_' in 'A0000;1;_', in modo da
poterci mettere anche una lettera iniziale...
Non ti garantisco il funzionamento (magari sono stati implementati altri
algoritmi di controllo sull'input che da resource hacker non puoi editare.
Tutto quel che vuoi può comunque essere fatto tramite un editor esadecimale
ma (guarda un pò) il codice esadecimale è praticamente incomprensibile.
Prova e facci sapere.
Ciao


Sembrava la soluzione ma...
quando apro il file mi dice 'This is not a Win32 executable file'...
probabilmente è ancora a 16 bit....
che altro posso provare???
1k grazie ancora
Marco

se poteste aiutarmi
guarda, risalire al .pas dall'exe sara' molto dura, cmq puoi provare questa:
http://monster.icc.ru:8080/~alex/PAS/
Morde
P.S.
Non l'ho provato, ma dalla descrizione sembra molto utile:
The DFM2PAS utility by Alexei Hmelnov.
----------------------------------------------------------------------------
E-Mail: 
al...@monster.icc.ru
http://monster.icc.ru/~alex/
----------------------------------------------------------------------------
Purpose:
--------
The utility DFM2PAS enables to create corresponding *.pas file
for *.dfm file or both *.dfm and *.pas for form resource extracted from
executable generated by any existing by now version of Delphi (1.0 .. 4.5)
(Thanks to Borland this format had never been changed).


ABLS Team - 
www.abls.it
SINTESI S.r.l. - 
www.sintesi.com

 E ho usato proprio Resource Hacker... :-|
Probabilmente si ricordano male, poiche inizialmente il programma girava
sotto win 3.1...  quindi sicuramente è ancora a 16 bit, e probabilmente non
è stato fatto con delphi3 bensi con la prima versione :((
Cmq grazie
Marco

 (Thanks to Borland this format had never been changed).
Nisba, continua a darmi  'EReadError:  "Stream read error'
:((((((
Mi sa che.....
1K grazie
Marco