home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
prog_c
/
spy.lzh
/
SPY
/
ISTRUZIONI
< prev
next >
Wrap
Text File
|
1991-08-15
|
10KB
|
283 lines
==========================================================================
********* ********* * *
* * * * *
* * * * *
********* ********* *********
* * *
* * *
********* * *
Version 1.0
by Federico Giannici
==========================================================================
SPY e` una spia delle principali funzioni AmigaDOS ed EXEC.
Il programma e` di Pubblico Dominio, puo` quindi essere copiato liberamente
e non si e` obbligati a pagarmi alcunche` per il suo utilizzo (eventuali
contributi saranno comunque ben accetti). Non e` pero` ammessa alcuna
modifica, vendita od inserimento in programmi commerciali, senza il mio
permesso scritto. Infine non mi assumo alcuna responsabilita` per eventuali
danni provocati, direttamente o indirettamente, da SPY.
COSA FA SPY
-------------
Si puo` scegliere quali funzioni (tra quelle implementate) mettere sotto
osservazione. Da quel momento ogni chiamata a quelle funzioni da parte di
qualsiasi programma verra` notificata all'utente.
Vengono visualizzati il nome della funzione, tutti i parametri ed il
risultato dell'operazione.
I nomi vengono evidenziati con un diverso colore.
Inoltre, spesso SPY mostra, tra parentesi, il nome della struttura il cui
indirizzo e` stato passato come parametro, per esempio: Devices, Library,
Resources, ecc.. Nel caso di un Lock, viene mostrato (sempre fra parentesi)
il nome del file o directory (terminante con un segno "/") completo di
tutto il path, corrispondente al lock.
Per quanto riguarda i FileHandle viene mostrato il nome del file passato
alla routine "Open()" al momento dell'apertura del file medesimo. Infatti,
non sono riuscito a trovare una tecnica ortodossa (documentata) per poter
risalire al nome del file corrispondente ad un FileHandle.
Come soluzione parziale al problema, SPY memorizza il nome corrispondente
ad un determinato FileHandle ad ogni chiamata ad "Open()" e lo cancella ad
ogni chiamata a "Close()". Quindi non viene mostrato ne` il nome dei file
aperti prima di caricare SPY, ne` di quelli aperti quando la funzione
"Open()" non era intercettata.
Per i FileHandle corrispondenti alle funzioni "Input()" e "Output()"
vengono mostrati rispettivamente con i nomi "<Input>" e "<Output>".
Evidentemente, se la funzione "Close()" non e` intercettata, il buffer per
la memorizzazione dei nomi aumenta in continuazione, e si puo` verificare
l'eventualita` che il nome del file non sia piu` quello corretto. Per
evitare tutto cio` e` possibile azzerare il buffer con il comando "Clear
FileHandle mem" del primo menu`.
E` chiaro che si tratta di una soluzione di ripiego. Saro` grato a chiunque
potra` suggerirmi una soluzione migliore.
Infine per le funzioni "Read()" e "Write()" viene anche mostrato il buffer
da leggere o scrivere come una stringa di caratteri ASCII.
CARICAMENTO
-------------
SPY puo` essere caricato sia da CLI che da Workbench.
Da CLI si ha la possibilita` di specificare, come parametro, il nome del
file di configurazione, altrimenti verra` cercato il file di default
"spy.config".
SPY cerca il file di configurazione prima nella directory corrente e poi,
nel caso non lo abbia trovato, nella directory "S:".
Nel caso non riuscisse a trovare il file di configurazione allora
utilizzera` quella di default: intercettazione attiva, stampante
disattivata, tutte le opzioni di Preferences attive e tutte le funzioni
selezionate tranne "FindName()".
I MENU`
---------
GENERAL
ACTIVATED
Se selezionato (simbolo di selezione sulla sinistra) SPY e` attivo.
PRINTER
Se selezionato, tutto cio` che viene mostrato nelle finestra principale di
SPY viene mandato anche alla stampante.
E` MOLTO IMPORTANTE che la stampante sia effettivamente ACCESA! In caso
contrario SPY si potrebbe bloccare, oppure, nel caso apparisse il messaggio
"Printer Troubles - Check Printer and Cables", si potrebbe avere il blocco
di tutto il sistema (nel caso SPY stia intercettando particolari funzioni).
FUNCTIONS
Tale comando puo` essere selezionato, piu` semplicemente, con un doppio
click nella finestra principale di SPY.
Permette di accedere alla finestra di selezione delle funzioni intercettate
da SPY. Le funzioni attive sono contrassegnate dal simbolo di selezione
sulla sinistra.
In basso si possono attivare cinque comandi:
OK: Accetta la lista di funzioni selezionate attualmente mostrata
sul video.
ALL: Seleziona tutte le funzioni. C'e` un'unica eccezione:
"FindName()", perche` solitamente genera un numero molto elevato
di chiamate (per esempio ogni volta che vengono usati i menu),
per cui occorre selezionarla esplicitamente clickandoci sopra.
NONE: Deseleziona tutte le funzioni.
RESTORE: Ripristina la lista di funzioni selezionate l'ultima
volta.
CANCEL: Chiude la finestra senza modificare la lista di funzioni
selezionate (viene utilizzata quella precedente).
SAVE CONFIGURATION
Viene chiesto il nome del file di configurazione da registrare.
La configurazione comprende tutte le opzioni di menu`, la lista delle
funzioni attive e la posizione e dimensione della finestra.
LOAD CONFIGURATION
Viene chiesto il nome del file di configurazione da utilizzare.
CLEAR FILEHANDLE MEM
Cancella il buffer di memoria dei nomi dei FileHandle (vedi "COSA FA SPY").
INFORMATIONS
Mostra un sotto-menu` di presentazione del programma (SPY) e del
programmatore (Io!).
QUIT
Si puo` attivare anche con il gadget di chiusura della finestra principale
di SPY.
Elimina SPY.
Prima di procedere attende che nessun altro programma stia eseguendo
qualcuna delle sue funzioni sostitutive.
PREFERENCES
Queste opzioni definiscono il comportamento di SPY nel momento in cui
intercetta una chiamata ad una delle funzioni attualmente selezionate.
DESCRIPTION
Se impostato su "Verbose" vengono visualizzati tutti i parametri ed il
valore di ritorno della funzione.
Se impostato su "Brief" vengono mostrati, su di un'unica linea, solo il
nome della funzione ed il parametro principale.
ACTIVATION
Se impostato su "Failed Only" vengono mostrate solo le chiamate che
falliscono.
Altrimenti vengono intercettate tutte le chiamate.
GO ON
Se impostato su "Wait for GO", una volta mostrata la chiamata alla
funzione, attende una conferma da parte dell'utente.
Comincia a lampeggiare il gadget in fondo alla finestra principale di SPY,
e si puo` dare l'ok clickando tale gadget oppure premendo un tasto
qualunque (in quest'ultimo caso la finestra di SPY deve essere attiva).
Se invece si e` impostato "Immediately", SPY non attendera` alcuna
conferma.
SCREENFLASH
Se impostato su "Activated", qualora il programma sia in attesa di una
risposta da parte dell'utente (vedi punto precedente), ogni 2 secondi
(circa) lampeggera` lo schermo, per informare l'utente dello stato di
attesa (infatti, nel frattempo, il programma chiamante e` bloccato).
MISCELLANEA
-------------
La funzione "AllocMem()" viene notificata solo quando si verifica un errore
(memoria insufficiente), in quanto e` chiamata molto spesso da tutto il
sistema.
Ci sono due casi in cui SPY non puo` fermarsi ad attendere l'OK da parte
dell'utente (pena il blocco del sistema):
I) Se il nome della MsgPort di una chiamata alla funzione
"AddPort()" e` "IDCMP" (si e` aperta una finestra).
II) Tutte la chiamate alla funzione "FindName()" fatte
dall'input.device.
Per evitare problemi di overflow dello stack, vengono visualizzate solo le
chiamate effettuate da Task con uno stack di almeno 1600 bytes.
Naturalmente cio` non elimina completamente i problemi di overflow, in
quanto SPY non sa quanto sia effettivamente pieno lo stack.
Nel caso si verifichi un crash del sistema, provate a disattivare qualche
funzione fintanto che non fili tutto liscio, individuando cosi` quale e` la
funzione incriminata (talvolta e` soltanto una che manda tutto in crash).
La scelta di 1600 bytes non e` casuale. Infatti, il CLI iniziale ha uno
stack di 1600 bytes (almeno fino al sistema operativo V1.3), anche se al
momento di eseguire un comando diventa (!?) di 4000 bytes. Qualcuno sa
dirmi perche`?
Altri curiosi comportamenti del CLI (scoperti con SPY):
Quando il CLI deve eseguire un comando apre la dos.library (probabilmente
per ottenere l'indirizzo DOSBase) senza pero` richiuderla con la
"CloseLibrary()". Il contatore di aperture della libreria viene comunque
successivamente decrementato, probabilmente dallo stesso CLI.
Le chiamate fatte dai comandi standard del CLI (Dir, CD, Delete, ecc.) non
vengono intercettate. Penso che cio` dipenda dal fatto che tali comandi
utilizzino una propria libreria interna (probabilmente in BCPL) che chiama
direttamente le routine di sistema senza passare dalle jump-table delle
librerie.
PER CONCLUDERE
----------------
Per qualsiasi consiglio, critica, bug, contributo, e soprattutto elogi,
potete contattarmi all'indirizzo che appare nel menu del programma (e che
per i piu` pigri riporto alla fine di queste note) oppure sulla BBS MC-Link
(06-4180440, il mio codice e` MC4080).
Buone investigazioni con SPY.
Federico Giannici
Viale Francia 4
90146 Palermo
Italy