Posso smontare un progetto PG5 per modificarla?
FAQ #100676
Questa FAQ spiega le possibilità nel caso in cui un progetto PG5 non è disponibile ma ancora un'applicazione esistente deve essere modificata.
Smontaggio in generale
PG5 include uno strumento per smontaggio codice in esecuzione su un PCD. Questo strumento (il "smontatore") permette la conversione di codice caricato (o appena compilato) che è in forma "binaria" nella relativa rappresentazione in lista di istruzioni (IL).
Il codice risultante è identico al codice eseguito dal PCD ma non è uguale per i file di origine da cui è stato costruito il progetto. Le differenze principali sono
- I nomi di simbolo mancante; Tutti i simboli vengono affrontati staticamente nel codice dissecato (mentre symols in gestione simbolo può avere indirizzi "dinamici", distribuiti in fase di compilazione)
- Tutti i commenti mancano nel codice disassemblato (perché essi non sono scaricati il PCD)
- Codice può essere smontata solo per IL. Non è possibile smontare il codice torna a Fupla o a un file HMI!
- Etichette di salto sono mancanti (i salti sono direttamente indirizzati) nel codice dissecato
- Direttive dell'assembler (come $IF ecc.) non sono presenti nel codice dissecato (sono stati valutati in fase di compilazione)
È possibile decodificare un progetto disassemled?
A seconda gli strumenti utilizzati per la creazione del programma e della complessità del programma questo compito rapidamente diventa praticamente impossibile. Smontaggio e reverse engineering per esempio un programma Fupla è quasi impossibile (Beh, se si spende centinaia di ore e capisce molto bene l'attività dell'applicazione, si forse poteva gestire retromarcia-con un progetto Fupla).
Il problema è che un FBox può creare codice completamente diverso che è costruito in dipendenza del sistema di destinazione, le opzioni impostate nella finestra di regolazione ecc. Ulteriormente in là può essere differenze tra ogni versione di uno stesso FBox (perché vengono implementate nuove funzionalità e correzioni di bug sono applicati).
Nel 99% dei casi è molto più efficace di re-ingegnerizzazione di un progetto esistente nel caso in cui i file di origine non sono disponibili.
Posso modificare un progetto esistente (ad esempio un setpoint)?
Modificare ad esempio un setpoint significa anche individuare e decodifica la parte pertinente del codice. Se solo un valore nominale deve essere modificata, è possibile cercare tutte le parti di codice che questo valore ad un registro di carico. Una volta che tutte queste parti si trovano che la parte pertinente del codice deve essere identificato e modificato. Anche se questa modifica è successo ancora è presente in "puro" IL solo l'intero progetto e ulteriori modifiche richiederà almeno tanto lavoro (se sarà possibile a tutti). Modifiche in questo modo sono consigliate solo per esperti avanzati.
Nel caso in cui non solo il valore nominale, ma il comportamento di una parte di un programma deve essere modificata la complessità molto probabilmente è già troppo elevata (almeno se il programma è stato scritto in Fupla o simili).
Categories
Local FAQ Deutschland / Fupla
PG5 2.0 / Fupla
Last update: 28.04.2015 07:22
First release: 01.02.2007 09:15
Views: 4610