home *** CD-ROM | disk | FTP | other *** search
-
- ResAnalyzer v2.2
-
- © 1992 By Silvio Umberto Zanzi
- Via Agostino Gemelli 9
- 40026 Imola (BO) - Italy
-
- IDCMP BBS (300-14400 HST)
- Imola Direct Communication Message Port
- Tel. +39/542/25983
-
- FidoNet.........2:332/405
- AmigaNet.......39:102/300
- AmigaNet.......39:102/302
- NeST...........90:8002/0
- NeST...........90:8002/100
- NeST...........90:8002/101
-
-
-
- /\/\/\/\/\/\/\/\/\/\/\
- ...Note Di CopyRight )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer è un prodotto ShareWare, come tale potete usarlo, copiarlo e
- distribuirlo liberamente, il vostro unico obbligo e` l'invio di L. 20.000
- all'autore nel caso il programma vi risultasse utile.
- Sono estremamente graditi commenti, suggerimenti e indicazioni di eventuali
- bug nascosti.
-
- L'autore non si assume responsabilità per danni diretti o indiretti causati
- da usi più o meno impropri di ResAnalyzer 2.2.
-
- /\/\/\/\/\/\/\/\/\/\/\
- ........Introduzione )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer è un monitor per moduli residenti, come tale è in grado di
- visualizzare qualsiasi informazione relativa a questo subsistema di Amiga.
-
- Chiunque abbia tentato di sondare il mondo dei moduli residenti e` stato
- finora costretto ad utilizzare le relative (incomplete) opzioni di monitor
- generici come Xoper, Exector, ARTM, ecc.
- Con ResAnalyzer e` ora possibile avere un quadro globale dei moduli residenti
- e avere tutte le informazioni necessarie in modo chiaro, schematico e veloce.
-
- ResAnalyzer è di grandissimo aiuto per chiunque sviluppi moduli residenti, con
- esso è più facile verificare se i propri moduli sono stati installati
- correttamente e se corrispondono alle dirittive impartite.
- Utenti non interessati alla programmazione possono verificare se quello strano
- modulo è il nuovo virus ancora sconosciuto a tutti i virus killer o se qualche
- programma ha installato "di nascosto" moduli residenti.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .......Installazione )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer non richiede particolari procedure di installazione, è sufficiente
- cliccare l'icona associata da WorkBench oppure digitare il nome RESANALYZER da
- Shell.
-
- Utilizzando ResAnalyzer su un sistema con KickStart 1.2/1.3 si potra` notare
- una certa lentezza nella visualizzazione dei testi, questo problema e` dovuto
- alle routine di rendering dei testi della libreria graphics.
- Per sopperire a tale lentezza si puo` utilizzare un velocizzatore di testi
- come il BlitzFonts di Hayes C. Haugen oppure FF di Charlie Heath della
- Microsmiths.
- BlitzFonts lo si trova nel Fish Disk 60 o in qualsiasi BBS abbastanza fornita,
- FF è nel disco Workbench 1.3.
- Fortunatemente nel KickStart 2.04 le funzioni in rom relative alla gestione
- testi sono state ottimizzate, quindi le utility sopracitate diventano inutili.
-
- ResAnalyzer riconosce se utilizzate un sistema NTSC o PAL e si comporta di
- conseguenza, non occupa il processo shell da cui viene lanciato, non sottrae
- cicli al processore se lasciato in background e si adatta automaticamente a
- 80 colonne se viene lanciato da un ambiente a 60.
-
- ResAnalyzer funziona su ogni modello di Amiga uscito fino ad oggi (Marzo 1992)
- e su qualsiasi versione di sistema operativo uguale o superiore alla 1.2.
- Su sistema operativo 2.04 ResAnalyzer funzionerà correttamente e si adattera`
- automaticamente alle eseginze estetiche del nuovo ambiente operativo.
-
- Ho fatto vari sforzi per rendere il programma comodo, efficiente e standard,
- spero di essere ripagato vedendo ResAnalyzer ben diffuso per il mondo.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .......Cenni Teorici )
- \/\/\/\/\/\/\/\/\/\/\/
-
- Programmare moduli residenti non è semplice, la difficoltà maggiore è reperire
- tutte le informazioni necessarie ed acquisire una visione globale
- sull'argomento.
- Purtroppo non è facile trovare articoli specifici nelle varie riviste
- tecniche, ed anche i Rom Kernel Manual 1.3 sono di scarso aiuto, le
- informazioni infatti sono incomplete e sparse in vari punti nei due volumi.
- Il miglior metodo per assimilare conoscenza in questo campo è sicuramente
- l'osservazione diretta ed ore di sperimentazione.
-
- Vi sono principalmente due metodi per far eseguire automaticamente al sistema
- delle proprie routine subito dopo il reset:
-
- 1) Utilizzando le variabili Capture di ExecBase
- 2) Utilizzando una struttura Resident
-
- Nella tabella seguente vi è un elenco dei metodi usati da alcuni programmi.
-
- Nome Autore Metodo
- ------------------------------------------------------------------
- Guardian v1.1 © Leonardo Fei 2
- Pseudo-Ops Virus Protector © Pseudo-Ops 2
- Virus Slayer © The Band 1
- Protec III © Bowie Softworks 2
- Aspro © Dr Debug 1,2
- Rom Crack © SCA 1
- RAD v1.0 © Commodore-Amiga 2
- RRAM Disk © B. Dayley & Other Guys 2
- Privilege Handler © John Veldthuis 2
- SCA virus 1
- Byte Bandit virus 1
- EDV (BGS9) virus 2
- HCS II virus 1
- Pentagon Circle virus 1
- 16 Bit Crew virus 1
- BackFlash virus 1
- WarHawk virus 1
- NorthStar 1 (anti)virus 1
- NorthStar 2 (anti)virus 1
- Phantasmumble virus 1
- Graffiti virus 1
- UltraFox virus 1
-
- Questi due metodi sono spiegati nella prossima sezione, nelle voci relative
- alle opzioni di ResAnalyzer.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .............Opzioni )
- \/\/\/\/\/\/\/\/\/\/\/
-
- Le funzioni di ResAnalyzer sono attivabili tramite un click del mouse sopra
- i rispettivi gadget oppure dai tasti funzione da F1 a F6.
- Premendo in qualsiasi momento il tasto F10 si attiva l'iconifica.
- Per uscire oltre all'apposito gadget si può utilizzare il tasto ESC.
-
- Captures
- ========
- I captures sono tre variabili presenti nella struttura ExecBase, definite
- come:
-
- SysBase->ColdCapture
- SysBase->CoolCapture
- SysBase->WarmCapture
-
- Queste tre variabili vengono automaticamente scandite dal computer durante
- le operazioni di startup, l'ordine di scansione corrisponde all'elenco.
- Se una di queste variabili contiene un valore diverso da zero, verrano
- momentaneamente sospese le operazioni di startup e verra` eseguita la routine
- puntata dalla variabile stessa.
- Ultimata la routine utente, verrano proseguite le normali operazioni di
- startup.
- I puntatori presenti in CoolCapture e WarmCapture vengono preservati anche
- dopo vari reset, ColdCapture viene invece azzerato ogni volta.
-
- L'opzione CAPTURES di ResAnalyzer mostra eventuali puntatori e permette
- eventualmente di azzerarli.
-
-
- KickMemPtr
- ==========
- Questa variabile, definita come SysBase->KickMemPtr, contiene il puntatore
- alla struttura MemList del primo modulo residente presente in RAM.
- Nella struttura MemList è contenuta una struttura MemEntry, tramite
- quest'ultima è possibile avere informazioni utili sulle specifiche di memoria
- del blocco residente ed un puntatore ad una struttura Resident.
- La struttura MenList contiene anche una struttura Node dalla quale si può
- determinare se vi sono altre strutture MemList concatenate.
- Il sistema utilizza questa lista per capire quali blocchi di memoria deve
- proteggere, rendendo impossibile ad un generico programma di occupare la
- memoria che avete riservato al modulo residente.
- La lista viene mantenuta anche dopo il reset.
-
- L'opzione KICKMEMPTR di ResAnalyzer fornisce alcune utili informazioni quali
- locazione iniziale e finale del codice eseguibile del modulo e sua lunghezza
- in byte.
-
-
- KickTagPtr
- ==========
- Questa variabile, definita come SysBase->KickTagPtr, contiene una catena di
- array.
-
- Ogni volta che viene inserito un nuovo modulo residente nel sistema, viene
- aggiunto un nuovo puntatore in coda all'array puntato da KickTagPtr.
- Per ottenere il prossimo elemento della catena, si deve considerare il valore
- puntato dall'ultimo puntatore, determinare se e` settato il bit 31, e in tal
- caso resettarlo.
- Il valore risultante è il puntatore del prossimo elemento.
- Questa catena indica al sistema quali sono i moduli che l'utente ha installato
- in memoria, ed è probabilmente usato dal sistema per il lancio dei moduli
- stessi.
-
- Resanalyzer mostra tutti i moduli presenti nella catena ed indica la locazione
- di KickTagPtr.
-
-
- KickChkSum
- ==========
- Questa variabile, definita come SysBase->KickCheckSum, serve al sistema per
- verificare, al momento del reset, se tutti i codici relativi ai moduli
- residenti sono integri.
- Questo controllo viene eseguito effettuando il checksun delle strutture
- Resident e del codice associato confrontandolo con il valore indicato in
- SysBase->KickCheckSum.
- Se i valori non coincidono, il sistema ignora i moduli installati, questi
- infatti potrebbero essere stati danneggiati dal cattivo funzionamento di un
- qualche programma.
- E` fondamentale aggiornare questa variabile tramite SumKickData() ogni volta
- che si installa un nuovo modulo.
-
- ResAnalyzer permette di azzerare SysBase->KickCheckSum, in questo modo
- disattivate tutti i moduli, è curioso notare che alcuni moduli possono essere
- riattivati senza nessun danno anche dopo vari reset!
- ResAnalyzer controlla anche che la funzione SumKickData() non sia stata
- patchata da altri programmi, in tale evenienza l'utilizzo di questa funzione
- sarebbe inaffidabile (basti considerare i virus che modificano SumKickData()).
-
-
- ResModules
- ==========
- Questa opzione visualizza tutti gli elementi dell'array di moduli residenti
- presenti in SysBase->ResModules.
- Ogni elemento è un puntatore a una struttura Resident.
-
- struct Resident
- {
- UWORD rt_MatchWord;
- struct Resident *rt_MatchTag;
- APTR rt_EndSkip;
- UBYTE rt_Flags;
- UBYTE rt_Version;
- UBYTE rt_Type;
- BYTE rt_Pri;
- char *rt_Name;
- char *rt_IdString;
- APTR rt_Init;
- };
-
- ResAnalyzer mostra tutti i moduli presenti, sia quelli utente indicati come
- moduli RAM, ed evidenziati dal simbolo "»»", che quelli presenti in ROM,
- visualizzando tutti i parametri di maggiore significato delle relative
- struttura Resident.
- Normalmente nella versione 1.2 sono presenti 23 moduli, mentre nella 1.3 c'è
- un modulo in più, la libreria privata romboot.
- rt_InitCode è un puntatore all'inizio del codice del modulo, rt_Pri serve per
- ordinare l'array in ordine decrescente, infatti al momento del reset verranno
- eseguiti per primi i moduli a maggiore priorità, e via via quelli a minore.
- Il rt_Type descrive il tipo di modulo, i tipi sono molteplici: libreria,
- device, risorsa, task, unknown (modulo non classificabile), ecc.
- L'rt_IdString è un messaggio scritto dal programmatore all'interno del proprio
- modulo, solitamente la data di creazione e versione.
- Il rt_Flags descrive le modalità del ResModule, i tipi possono essere quattro:
-
- Flag Introdotti nel KickStart
- ------------------------------------------------
- RTF_AUTOINIT 1.2
- RTF_COLDSTART 1.2
- RTF_AFTERDOS 2.0
- RTF_SINGLETASK 2.0
-
- I flag introdotti nella versione 1.2 hanno un grande significato per quanto
- riguarda l'inizializzazione del modulo.
- Questo complicato processo, molto in breve, funziona in questo modo: quando
- exec incontra il flag RTF_COLDSTART, chiama la funzione InitCode(), tale
- funzione a sua volta chiama InitResident().
- Se non e` impostato il flag RTF_AUTOINIT, InitResident() chiama il codice
- puntato dal campo rt_Init, altrimenti chiama la funzione MakeLibrary().
- In questo caso nella locazione puntata da rt_Init non vi sara` del codice
- eseguibile, ma dati che MakeLibrary() utilizzera` per creare una libreria,
- un device o una risorsa.
- Il sistema scandisce il campo rt_Flags per sapere se deve chiamare
- AddLibrary(), AddDevice() o AddResource().
- Sul significato dei nuovi flag 2.0 non si conosce molto, a parte il fatto che
- i moduli con flag RTF_AFTERDOS hanno sempre priorità inferiore a -100, mentre
- il flag RTF_SINGLETASK sta a indicare moduli in cui SysBase->ThisTask=0.
- I moduli residenti aggiunti al sistema verrano inseriti nell'array di
- ResModules solo al successivo reset.
-
- Per passare da una pagina all'altra all'interno della funzione ResModules di
- ResAnalyzer si devono usare i tasti cursore.
- Premendo il tasto P, ResAnalyzer dirottera` su PRT: tutta la lista dei
- ResModules, i puntatori dei Capture, di kickTagPtr e di KickMemPtr.
-
- Information
- ===========
- Questa opzione mostra alcuni ringraziamenti personali più alcune interessanti
- informazioni sul sistema.
- Viene indicato la versione di KickStart, la configurazione del processore, la
- frequenza di vertical blank e di alimentazione rete (NTSC 60Hz, PAL 50Hz) e se
- è presente l'ECS.
-
- /\/\/\/\/\/\/\/\/\/\/\
- .......Compatibilità )
- \/\/\/\/\/\/\/\/\/\/\/
-
- ResAnalyzer è stato testato con successo su:
-
- - Amiga 500 normale
- - Amiga 500 1 Mega Chip
- - Amiga 1000 768K
- - Amiga 2000 normale
- - Amiga 2000 68030+68881
- - Amiga 3000 25-100
-
- - KickStart: 1.2 - 1.3 - 2.0ß - 2.04
- - Processori: 68000 - 68010 - 68030 - [68881 - 68882]
-
- /\/\/\/\/\/\/\/\/\/\/\
- ......Considerazioni )
- \/\/\/\/\/\/\/\/\/\/\/
-
- Tutte le informazioni esposte in questo manuale e codificate in ResAnalyzer
- sono frutto di svariate ore di lavoro in un campo dove praticamente non esiste
- documentazione.
- Se trovate che qualcosa scritto qui o codificato in ResAnalyzer è scorretto,
- per favore avvertimi attraverso ogni mezzo (l'ideale sarebbe l'indirizzo
- FidoNet 2:332/405 di cui sono SysOp), è mia intenzione migliorare e correggere
- ResAnalyzer.
-
- Per concludere vorrei ringraziare queste persone, i cui consigli, stimoli e
- suggerimenti hanno avuto una grande influenza nello sviluppo di ResAnalyzer:
-
- - Giorgio Terzi................per avermi insegnato il C su Amiga
- - Nic Wilson...................per la routine di rilevazione ECS
- - Marco Mariani................per i numerosi suggerimenti e aiuti
- - GianMario Sartini............per avermi prestato il suo A590+
- - Luigi Mongardi...............per avermi spiegato alcune cose sull'uso
- della stampante
- - Luigi Callegari..............per aver pubblicato ResAnalyzer su EnigmA Disk
- - Luca Spada...................per aver creato la rete telematica mondiale SAN,
- principale vettore di diffusione di ResAnalyzer
- - Michele Masiero..............per aver hatchato ResAnalyzer nella rete
- telematica mondiale ADS
- - Romano Tenca.................per alcune preziose informazioni tecniche
- - Giammarco Giovannelli........per aver detto che ResAnalyzer è bello!
- - Mario Mure'..................per il beta testing della routine di rilevazione
- ECS
- - Barbara, Ylenia & Daniela....per il semplice fatto di esistere.
- - L'area AMY_DEV.ITA di Fido...per la possibilita` di acquisire nuove
- informazioni e conoscere altri programmatori
-
- Ringrazio anche le seguenti persone, grazie alle quali ho potuto diventare
- SysOp di un nodo FidoNet.
-
- - Giuseppe Selvatici
- - Marco Baldini
- - Paolo Marchi
- - Marcello Ardini
- - Mario Battacchi
- - Andrea Mennini
- - Antonio Pasini
-
- Un ringraziamento particolare a Karl H. Riesen, la prima (e tutt'ora unica)
- persona che si è registrata a ResAnalyzer.
- Non ci sarebbe stata questa versione senza il suo appoggio morale, grazie
- Karl!
-