quequero.org Forum Index quequero.org
UIC Forum
 
 UIC HomeUIC Home FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 
 ProfileProfile   You have no new messagesYou have no new messages   Log out [ Zero_G ]Log out [ Zero_G ]   

prima crack

 
Post new topic   Reply to topic    quequero.org Forum Index -> Reverse Engineering
View previous topic :: View next topic  
Author Message
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Sat Aug 20, 2005 11:13 am    Post subject: prima crack Reply to topic Reply with quote Edit/Delete this post Delete this post

ho scoperto da un mesetto l'UIC e mi è subito piaciuta, sporattutto per le numerose guide molto chiare.
come molti nuovi utenti ho tentato di installare softice senza successo, quindi ho ripiegato su ollydbg (che ha funzionato SUBITO!!) e mi sono letto la guida su questo sito.
come primo programma da crakkare ho scelto G*M*F*C* pro (http://g*m.c*n*c.free.fr/en/download.php), e' un software x macchine cnc e dura 30 giorni dopodichè bisogna registrarsi. il mio problema è che l'ho installato prima di finire la macchina cnc x vedere se l'elettronica funzionava, e ora che è tutto finito non posso più provarla (e quindi decidere se acquistare il software o meno)...
PEiD dice che il software e' stato scritto in Microsoft Visual C++ 6.0 [Debug]
con W32Dasm ho disassemblato l'exe e cercato di capire il funzionamento delle parti "interessanti"
poi ho provato a usare olly (l'avevo già usato con successo nei tuttorial) ma all'avvio mi appare una finestra che dice:

"Module 'cnc1' has entry point outside the code (as specified in the PE header). Maybe this file is self-extracting or self-modifyng. please keep it in mind when setting breakpoints"

significa che quando il programma viene caricato in memoria si modifica?
c'e' qualche soluzione?

attendo randellate
Back to top
View user's profile Send private message Send e-mail
pelledoca
Newbie
Newbie


Joined: 15 May 2004
Posts: 27

PostPosted: Sat Aug 20, 2005 5:12 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

Vuol dire che cnc1.dll (sotto %SystemRoot%\system32) è packed: PECompact 1.68 - 1.84 -> Jeremy Collake.

Da notare il seguente interessante blocchetto di codice:


Code:

00415C0A   PUSH GMFC.004E5468           ; ASCII "GMFC V2.2"
00415C0F   PUSH GMFC.004E545C           ; ASCII "GM SoftwarE"
00415C14   CALL DWORD PTR DS:[4F3EE0]   ; cnc1.SharewareReg
00415C1A   PUSH GMFC.004E5468           ; ASCII "GMFC V2.2"
00415C1F   PUSH GMFC.004E545C           ; ASCII "GM SoftwarE"
00415C24   CALL DWORD PTR DS:[4F3F4C]   ; cnc1.AppIsRegistered
00415C2A   AND EAX,0FF
00415C2F   TEST EAX,EAX
00415C31   JE SHORT GMFC.00415C4D



Bello quando i programmatori sono cosi amichevoli da dare nomi come "SharewareReg" o "AppIsRegistered" alle funzioni. Mr. Green Mr. Green Mr. Green


pelledoca
Back to top
View user's profile Send private message Send e-mail
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Sat Aug 20, 2005 7:39 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

quella parte di codice è contenuta nel file cnc1.dll?
ho guardato la descrizione su un sito di PEcompact, ma non è specificato se fa anche il procedimento inverso.. come faccio a decomprimerlo?
dal codice che hai postato sembra che mi basterebbe far saltare il programma all'istruzione 00415c24 quando inserisco il codice sbagliato...
Back to top
View user's profile Send private message Send e-mail
peppeviruz
Intermediate
Intermediate


Joined: 27 Oct 2002
Posts: 70

PostPosted: Sun Aug 21, 2005 1:55 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

no, il codicee lo trovi nel disassemblato dell'exe!!!
Ciao!!
Back to top
View user's profile Send private message Send e-mail
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Sun Aug 21, 2005 8:55 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

ma... che disassemblatore usate?? ad esempio a me alla riga 00415C31 c'e' l'istruzione mov ecx, dword ptr [esp +3C] anziche il salto condizionato O_O
Back to top
View user's profile Send private message Send e-mail
pelledoca
Newbie
Newbie


Joined: 15 May 2004
Posts: 27

PostPosted: Sun Aug 21, 2005 10:31 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

illo,

il fatto che tu abbia istruzioni diverse nelle posizioni da me riportate è esclusivamente dovuto al fatto che tu hai un diverso sistema operativo. Io uso windows 2000 ... tu con ogni probabilità XP.
Come ha detto peppeviruz, la sezione di codice che ho riportato si trova nell'exe non nella dll. Metti un bpx sulle 2 funzioni esportate dalla DLL (SharewareReg e AppIsRegistered) ed attendi che Olly breaki sulle stesse ... dovresti cosi giungere al blocco di codice in questione.


pelledoca
Back to top
View user's profile Send private message Send e-mail
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Mon Aug 22, 2005 9:17 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

scusa non sapevo che le istruzioni cambiassero valore a seconda del sistema operativo..
è per questo che HIEV premendo F3 passa dal modo Address a quello Offset (distanza dall'inizio del file)? altrimenti le modifiche sarebbero valide solo sulla macchina in cui vengono fatte?
suppongo sia qui che si decide tutto vero?

se mi dicessi la distanza dall'inizio del file dovrei trovarlo a botta sicura no?

ho provato a brekkare sulle funzioni con olly, ma non ho capito cosa vuol dire "funzioni esportate dalla dll"
comunque ho provato a scrivere bp AppIsRegistered e bpx AppIsRegistered
nel primo caso finisco qui

mentre nel secondo appare una finestra (intermodular calls) piena di chiamate a funzioni (credo).
comunque non c'e' traccia del codice che hai postato Sad

come ultima speranza mi sono pasato tutto il codice del programma da W32dasm, l'unica cosa che ho trovato è questa (a me sembra interessante ma sono niubbo quindi...)


sei sicuro di aver scaricato la versione PRO e non la PE?
Back to top
View user's profile Send private message Send e-mail
pelledoca
Newbie
Newbie


Joined: 15 May 2004
Posts: 27

PostPosted: Mon Aug 22, 2005 9:49 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

illo,

onestamente non ricordo la versione scaricata ... ci ho dato un occhio veloce e non trovando l'applicazione di alcun interesse l'ho subito cancellata.
Le istruzioni *non* cambiano da sistema operativo a sistema operativo. Quello che *puo* cambiare è la posizione in memoria in cui viene caricato il binario. In altre parole, le istruzioni che ho mostrato si trovano in una posizione in memoria diversa quando l'applicazione viene eseguita su XP.

Le DLL *esportano* funzioni nel senso che mettono a disposizione una serie di funzioni ai programmi che possono essere interessati ad invocarle. In Olly puoi semplicemente richiedere l'elenco delle funzioni importate/esportate dall'exe e mettere un breakpoint sulle 2 funzioni gia discusse. Questo ti dovrebbe consentire di individuare la locazione del blocco di codice che ho postato.


pelledoca
Back to top
View user's profile Send private message Send e-mail
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Mon Aug 22, 2005 11:32 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

pelledoca wrote:
illo,
Le istruzioni *non* cambiano da sistema operativo a sistema operativo. Quello che *puo* cambiare è la posizione in memoria in cui viene caricato il binario. In altre parole, le istruzioni che ho mostrato si trovano in una posizione in memoria diversa quando l'applicazione viene eseguita su XP.
pelledoca


scusa mi sono espresso male, intendevo dire quello che hai scritto tu ^_^

ora devo solo scoprire come fare a richiedere l'elenco delle funzioni :p
grazie per l'aiuto Smile
Back to top
View user's profile Send private message Send e-mail
pelledoca
Newbie
Newbie


Joined: 15 May 2004
Posts: 27

PostPosted: Mon Aug 22, 2005 9:27 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

CTRL+N in OllyDbg


pelledoca
Back to top
View user's profile Send private message Send e-mail
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Tue Aug 23, 2005 11:10 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

ho provato a cercarla con ctrl - N (comando molto interessante) ma non c'e' neanche l'ombra della funzione appisregistered e neanche di riferimenti alla dll cnc1 Sad
mi sto rileggendo la guida di assembly perchè ancora ho difficoltà a interpretare alcune istruzioni e vorrei capire cosa combina il programma in questa parte di codice.
soprattutto Shareware limit e DateIsSetBack



mi sono letto il tutorial sui processori intel, penso di aver capito la parte di segmento e offset, ma se uno passa da un processore a 16 bit ad uno a 32 o 64 bit dovrebbe infischiarsene del problema di arrivare a 1 Mbyte di indirizzamento con vari trucchetti, tanto già con 32 bit si riesce a indirizzare 2^32 ~ 4Gbyte.. no?
Back to top
View user's profile Send private message Send e-mail
Zero_G
Moderator
Moderator


Joined: 20 May 2004
Posts: 960
Location: The Dark Side of the Moon

PostPosted: Tue Aug 23, 2005 5:09 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

illo, innanzitutto ti consiglio di buttare W32Dasm perché è pieno di bachi; è meglio se guardi il disassemblato direttamente dentro Olly oppure usi IDA, che è ancora meglio, ma più complicata/o. Idea

cmq il programma l'ho scaricato anch'io, se ho un pochino di tempo ci dò un'occhiata stasera... Wink

-=[Zero_G]=-
_________________
"To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
pelledoca
Newbie
Newbie


Joined: 15 May 2004
Posts: 27

PostPosted: Tue Aug 23, 2005 9:01 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

illo,

non ci vuole un genio per capire che DateIsSetBack controlla se hai modificato la data del sistema riportandola indietro rispetto all'ultima rilevata, che AppIsExpired controlla che l'applicazione non abbia terminato il periodo di trial e che AppIsRegistered controlla se i dati di registrazione sono corretti.
Tutti restituiscono un valore booleano. Basta una piccola patch .... ed è fatta!!


pelledoca
Back to top
View user's profile Send private message Send e-mail
Zero_G
Moderator
Moderator


Joined: 20 May 2004
Posts: 960
Location: The Dark Side of the Moon

PostPosted: Tue Aug 23, 2005 9:44 pm    Post subject: Zero_G - GMFC = 1 - 0 Reply to topic Reply with quote Edit/Delete this post Delete this post

siccome i breakpoint su GetDlgItemTextA o GetWindowTextA sembrano non funzionare su questo programma, devi passare ad un altro tipo di attacco che in questo caso potrebbe essere quello di sfruttare un altro punto debole: hai notato che quando sbagli il seriale viene mostrato un MessageBox di errore... Wink


**MINI-TUTORIAL "POST ESTIVO"**

PARTE 1: Troviamo il punto debole

1.1) carica GMFC.exe in OllyDbg e lancialo così com'è, ignorando la segnalazione del driver mancante, altrimenti avresti un break anche su quello. una volta premuto OK, il debugger si lamenta che cnc1.dll ha l'entry point fuori dalla sezione del codice... come t'ha detto pelledoca è packato, quindi lasciamolo bollire nel suo brodo ed ignoriamolo; i programmatori sono stati così geniali da criptare SOLO la dll che si occupa della verifica della registrazione, ma forse non si sono ricordati che la validazione del seriale viene comunque passata al livello superiore, cioè all'eseguibile che importa la DLL, GMFC.exe nel nostro caso. Mr. Green

1.2) a questo punto dovresti avere la finestra che ti chiede la License Key e, siccome sappiamo già che verrà fuori il MessageBox, torniamo in Olly e clicchiamo sulla E in alto che ti mostra l'elenco dei moduli richiamati dall'eseguibile (come vedi, c'è anche cnc1.dll, schiaffata senza pietà dentro C:\Windows\System32... Sad )

1.3) scegli USER32.DLL, la libreria di sistema che contiene MessageBoxA, premi il tasto destro, clicca su "View Names" e sempre con il destro attiva un breakpoint su MessageBoxA; adesso hai sotto controllo l'export di questa funzione dalla sua libreria nativa, quindi in qualsiasi momento l'eseguibile principale la richiamerà, Olly intercetterà la call.

1.4) torna nel programma, scrivi un numero a caso, premi OK e TADAH! ecco Olly sul palcoscenico! (questa frase fa sempre un certo effetto... :roftl: ) ovviamente non sarai in GMFC ma in USER32 e più precisamente all'"entry point" della funzione MessageBox; premi F8 varie volte per scorrere fino all'effettiva call che visualizza il messaggio d'errore, Olly andrà in pausa e te switcha su GMFC, premi OK ed il controllo ritornerà in mano al debugger. premi F8 un altro paio di volte fino al RETN, F8 un'altra volta e (per fortuna) sarai direttamente dentro GMFC (lo vedi scritto in alto nel titolo della finestra CPU).


PARTE 2: Risaliamo la corrente (da bravi reverser salmonati, o salmoni reversati Laughing )

2.1) a regola dovresti essere all'indirizzo 00493589 ed adesso dobbiamo trovare il punto in cui lui decide che il codice non va bene e chiama il MessageBox; salendo di qualche linea ti accorgerai facilmente che il problema è più a monte, perché la funzione comincia a 004934D1 ed a quel punto il seriale è già considerato sbagliato. Rolling Eyes

2.2) come fare allora? semplice, se hai "studiato" un pochino saprai che i punti di rientro delle call vengono accumulate nello stack che viene considerato come una pila a cui si accede tramite PUSH e POP, quindi scendendo andremo verso la sorgente (si va in basso nella finestra dello stack di OllyDbg, ma in realtà gli indirizzi crescono quando risaliamo la pila). Smile

2.3) comincia a scorrere lo stack in giù e ti accorgerai che la stringa "Invalid key..." è presente varie volte (questo perché viene passata da un livello all'altro come il testimone di una staffetta) e questo ti fa capire che l'errore era già nell'aria prima dei corrispondenti RETURN (se usi il mio schema di colori sono in celeste su sfondo nero); ad un certo punto (è a distanza circa 350 bytes dalla cima dello stack [ESP]) troverai una serie di numeri che non sono indirizzi relativi (sono il risultato dei calcoli fatti sul seriale), poi ancora quella stringa ed alla fine incontrerai il puntatore all'SE, molto utile in questo caso perché è indicatore della fine della catena dei gestori delle eccezioni ed infatti nel blocco successivo la stringa non c'è più ed alla prima posizione troviamo un simpatico "RETURN to GMFC.00415C7B from GMFC.004935F0" che ci illumina la via. clicchiamoci con il destro e scegliamo "Follow in Disassembler..." Idea


PARTE 3: Faccia a faccia col nemico

3.1) piano piano la nebbia si dirada e si capisce meglio come quella strana DLL viene usata dal programma... innanzitutto possiamo ottenere una lista delle funzioni da essa esportata per avere le idee più chiare; clicchiamo ancora sulla E in alto, ma stavolta facciamo "View Names" su cnc1.dll e questa è la lista che otteniamo (ti ho asteriscato le più "sospette"...):

Code:
4000E88C   pec1       Export     AppDaysLeft
4000E6C0   pec1       Export     AppIsExpired
4000E8E0   pec1       Export     *AppIsRegistered*
4000DF34   pec1       Export     AppIsSetup
4000E228   pec1       Export     AppRemove
4000E030   pec1       Export     AppSetup
4000DAFC   pec1       Export     *DateIsSetBack*
40010804   pec1       Export     DelEncrypted
4001F088   .rsrc      Import     KERNEL32.ExitProcess
4000DEFC   pec1       Export     GetCDriveSerial
40010758   pec1       Export     GetEncrypted
4001F130   .rsrc      Import     user32.GetKeyboardType
4001F08C   .rsrc      Import     KERNEL32.GetModuleHandleA
4001F07C   .rsrc      Import     KERNEL32.GetProcAddress
4001F078   .rsrc      Import     KERNEL32.LoadLibraryA
4001B000   .pec       Export     <ModuleEntryPoint>
4001F138   .rsrc      Import     advapi32.RegQueryValueExA
400108F8   pec1       Export     ResetDate
4001067C   pec1       Export     SaveEncrypted
4000F478   pec1       Export     SetDevPassword
4000F42C   pec1       Export     *SharewareLimit*
4000F2BC   pec1       Export     *SharewareReg*
4001F148   .rsrc      Import     shell32.SHGetSpecialFolderLocation
4001F140   .rsrc      Import     oleaut32.VariantChangeTypeEx
4001F080   .rsrc      Import     KERNEL32.VirtualAlloc
4001F084   .rsrc      Import     KERNEL32.VirtualFree


NOTA: ovviamente non c'interessa degli import (le funzioni che servono a questa DLL), ma ci dobbiamo concentrare sugli export (le funzioni che questa DLL offre ai programmi che la invocano).

3.2) ora è il momento di restringere il nostro campo d'azione ed isolare la funzione che si occupa del check del seriale, cioè presumibilmente quella dove ci troviamo in questo momento; per fare questo possiamo esaminare il disassemblato ed eseguire mentalmente le istruzioni in senso inverso per prevenire che il flusso giunga nel punto in cui viene chiamata la procedura d'errore (00493583 nel nostro caso), ma poche persone hanno questa specie di potere Jedi, e per i comuni mortali, me incluso, è più semplice usare un pochino di furbizia e colpo d'occhio. Mr. Green

3.3) la call subito successiva al punto in cui siamo rientrati dal MessageBox chiama la funzione cnc1.DateIsSetBack che controlla se abbiamo "manomesso" la data per farlo funzionare lo stesso, ed infatti la stringa corrispondente è "Invalid last execution time" (è scritta come commento nella colonna di destra), quindi noi dobbiamo salire ancora e più su troviamo riferimenti a quelle famose funzioni di cnc1.dll (SharewareReg, AppIsRegistered, ...), che tra le altre cose ora che è stata caricata e decriptata in memoria, quindi tranquillamente visibile; salendo ancora più in alto troviamo il punto d'entrata della funzione (00415AA4).

3.4) guardando dove vanno a finire i salti condizionali, quelli che deviano il normale flusso in cascata della funzione evitando le call "maligne" di cnc1.dll sono:

[1] 00415B2D -> dopo aver chiamato AppIsRegistered, questo salta in blocco il corpo centrale e va al RETN in fondo;
[2] 00415C31 -> evita o meno il JMP verso il medesimo RETN finale;

adesso che abbiamo capito come GMFC interagisce con la DLL, settiamo un bel breakpoint con F2 all'inizio della funzione (sempre a 00415AA4).


PARTE 4: A cuore aperto...

4.1) Riavviamo il tutto, ignoriamo i messaggi del driver e della DLL criptata, riscriviamo un numero a caso (possibilmente qualcosa di facilmente individuabile in memoria, tipo "123456"), premiamo OK e rieccoci dentro Olly, stavolta prima che il seriale venga bollato come farlocco (eheh sembra di poter tornare indietro nel tempo ed impedire le cose che devono ancora accadere... Wink ).

4.2) fino a 00415AD5 niente di che, mentre a 00415AD8 vediamo che la call porta il primo carattere del seriale come valore in EAX ed i restanti come stringa in EDX; la successiva call a 00415AF2 riporta il seriale in EDX e questo serve per testare il valore in EAX e prendere o meno il salto condizionale a 00415AFE:

Code:
00415AFE  |. /JE      SHORT 00415B16
00415B00  |. |PUSH    004E580C
00415B05  |. |MOV     ECX,[LOCAL.133]
00415B0B  |. |ADD     ECX,1C0
00415B11  |. |CALL    00488EF0
00415B16  |> \PUSH    004E5468                  ;  ASCII "GMFC V2.2"
00415B1B  |.  PUSH    004E545C                  ;  ASCII "GM SoftwarE"
00415B20  |.  CALL    DS:[4F3F4C]               ;  cnc1.AppIsRegistered
00415B26  |.  AND     EAX,0FF
00415B2B  |.  TEST    EAX,EAX
00415B2D  |.  JNZ     00415CC8


questo salto tuttavia non ci preoccupa molto, perché comunque finiamo alla chiamata di AppIsRegistered; come già detto prima, i programmatori non sono stati granché furbi, perché non solo le funzioni esportate hanno nomi palesemente autoesplicativi, ma oltretutto il loro uso è triviale: vengono chiamate solo per ricevere flag in base a quali si decide l'esito della registrazione; oltretutto, dato che la DLL durante l'esecuzione deve essere decriptata e che gli export sono "pubblici" e quindi comunque visibili dall'esterno, l'uso di un packer/crypter per esse è del tutto inutile! Twisted Evil

4.3) di importanza ben più rilevante è invece il successivo JNZ (quello a 00415B2D), perché avevamo visto che ci portava in fondo alla funzione saltando tutte le menate della data modificata e dello shareware, quindi quando ci arriviamo steppando con F8 ovviamente il salto non verrà eseguito, dato che AppIsRegistered ha settato a 0 il flag in EAX; per vedere subito l'effetto di questo salto cliccate due volte sullo ZFlag a destra nella finestra dei registri (la Z = 1 sotto la A e sopra la S) portandonde il valore a 0. premiamo F8, il salto verrà forzato e arriviamo a 00415CC8.

4.4) a questo punto la funzione prosegue liscia liscia fino al RETN ed almeno ad occhio sembra che il controllo principale era proprio quello; per sincerarsi delle nostre supposizioni, premiamo F9 e vediamo che succede... tratteniamo il respiro... il programma è partito! :finger:

4.5) clicchiamo con il destro nella finestra del disassemblato e scegliamo "Copy to executable" --> "All modifications" --> "Copy all" --> "Save file" e diamogli un nome diverso dall'originale; a voi il piacere di creare un patcher tramite confronto tra le due versioni. Angry


EPILOGO:

wow, abbiamo scavalcato una protezione basata su una DLL packata, ma... era davvero la soluzione migliore? prima di rotolarci in terra urlando e piangendo di gioia(!), riflettiamo su cosa abbiamo fatto e cosa era possibile fare:

(1) patchando l'eseguibile abbiamo ottenuto l'effetto desiderato, cioè farlo partire con qualsiasi, ma di sicuro non è la soluzione più elegante perché tutte le volte che riparte ve lo richiede, nonostante la finestra vada via anche semplicemente premendo OK.
Happy

(2) la soluzione migliore, come sempre, è fare un keygen che generi un seriale valido, ma per questo bisogna necessariamente entrare nei particolari della funzione che valida quello immesso, e non sempre questo processo è invertibile, cioè a volte si può fare soltanto tramite attacco a forza bruta; la parte da analizzare è quella che va da 00415B2D a 00415BEE, in cui bisogna entrare nelle varie call e seguirle passo passo. io mi sono limitato a evitare i controlli.

(3) quando possibile, da non disdegnare è anche il serial-phishing; sebbene non abbia avuto il tempo di controllare tutte le call, ho notato che in quel pezzo c'è un discreto traffico di stringhe e se l'esperienza non mi inganna mi sembrano parecchio dei pezzi di seriale... Rolling Eyes

(4) un approccio alternativo (e molto istruttivo) sarebbe quello di dumpare e fixare la DLL, dopodiché entrare nella AppIsRegistered e far sì che dia sempre esito positivo; questa cosa è più trasparente ai fini del programma, che di fatto si fida ciecamente di quello che gli dice cnc1.dll, anche se lavorare a valle di *tutti* i controlli effettuati dall'eseguibile principale ha il medesimo effetto.

per essere sicuro che non vi fossero altri controlli ho fatto girare un po' il programma (che tra le altre cose non ho capito assolutamente a cosa serva! Laughing) e mi pare che l'unico punto fosse quello che ti ho indicato; se comunque ti accorgi di altri check puoi provare a toglierli, tanto penso che tu abbia capito la filosofia, no? Wink

con questo concludo, spero di esserti stato d'aiuto, illo. Cool

buonanotte... Good & Evil

Angel Angel
-=[Zero_G]=-

(!back on track!)
_________________
"To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."


Last edited by Zero_G on Wed Aug 24, 2005 12:14 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
illo
Newbie
Newbie


Joined: 14 Aug 2005
Posts: 7

PostPosted: Wed Aug 24, 2005 11:09 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

innanzitutto grazie a pelledoca e Zero_G! avrete la mia eterna riconoscenza per l'aiuto datomi Smile
ho appena letto molto velocemente il post (il tempo è tiranno), appena posso mettermi tranquillo davanti al pc vi faccio sapere com'e' andata.
@Zero_G
il programma serve per controllare una macchina cnc che utilizza l'elettronica MM2001 di cui ci sono svariati schemi nella rete.
serve a tagliare il polistirolo, in particolare le ali & fusoliere degli aeromodelli.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    quequero.org Forum Index -> Reverse Engineering All times are GMT + 1 Hour

Page 1 of 1
Watch this topic for replies
 
Delete this topic Move this topic Lock this topic Split this topic 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You can edit your posts in this forum
You can delete your posts in this forum
You can vote in polls in this forum
You can moderate this forum


Powered by -=Quequero=-