View Single Post
Old 29-07-2002, 06:51   #46
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da magomerlinopaolo
[b]ahh bella questa cdimauro, mi hai fatto ricordare il buo vecchio assembly studiato qualche anno fa...
il programma debug consente di scrivere nei registri del processore, in questo caso usi due sole istruzioni, una è cli che francamente non ricordo + cosa fa l' altra è JUMP, che ti fa salvare all' indirizzo di momoria 101... questo comando dovrebbe provocare in windows un errore di memoria, e il poraccio non sapendo + cosa fare non si riprende e si blocca
No, questo programmino fa qualcosa di più subdolo...

La CLI serve a bloccare tutti gli interrupt del sistema (tranne gli NMI e il RESET, ovviamente) mentre la JMP non fa altro che saltare continuamente a sé stessa, in un ciclo infinito.

Poiché i Windows 9x/ME sono tutti basati sul DOS, non possono impedire, per questioni di compatibilità, che una qualunque applicazione disattivi gli interrupt (questo si fa per "bloccare" delle sezioni critiche, che non debbono poter subire delle interruzioni da parte di altri programmi).

Poiché tutto il s.o. è basato sulla gestione degli interrupt per gestire il multitasking (si usa principalmente l'IRQ 0 del Timer di sistema per cambiare il processo attivo. Ma anche qualche altro interrupt, che comunque è disattivato... ), Windows sarà costretto a far girare in eterno il programmino lanciato dal debug.

Almeno finché non si preme il pulsante di reset o non si spegne e riavvia la macchina...

Non funziona neppure il Ctrl-Alt-Del, proprio perché tutti gli interrupt sono disattivati, compreso quello che gestisce la tastiera...

Un altro programmino che fa bloccare i Windows 9x/ME è il seguente:

xor ax,ax
mov es,ax
mov di,ax
mov cx,8000
cld
rep stosw

questo dimostra ancora una volta quanto questi Windows siano ancora legati a doppio filo col DOS...

In pratica lanciandolo non facciamo altro che azzerare del tutto i primi 64Kb della memoria di sistema. Sembra niente, ma in quest'area sono conservati la tabella degli interrupt (che quindi verranno tutti re-indirizzati all'indirizzo 0:0, dove tutto è stato cancellato...), la tabella con i dati più importanti del BIOS ed infine la tabella con i dati più importanti del DOS e parte del DOS stesso...

In sostanza, distruggendo il suo DOS, Windows andrà completamente in tilt. Anche qui servirà un bel RESET per sbloccare la situazione... ehehehe

[b]
Quote:
a scanso di equivoci l' ho provato pure su winXP mi si blocca il debug
Come ogni buon sistema operativo sicuro, ehehe

[b]
Quote:
ahh come mi piace l' assembly! l' ho studiato giusto per un mesetto ma ha una potenza incredibile, peccato che ultimamente è l' ultimo linguaggio che si consiglierebbe di imparare, ormai va di moda il java...eppure è così importante x capire come funziona il processore!
Veramente io lo uso ancora abbondantemente in certe parti dei miei programmi che debbono girare al massimo della velocità, perché da loro dipende la velocità dell'intera applicazione.

Ad esempio, mi sono scritto (per uso interno) un front-end/rom manager universale per il MAME, MESS, RAINE, ecc. (sono emulatori di sistemi, per chi non lo sapesse), e grazie ad alcune parti in assembly e ad alcuni algoritmi azzeccati, mi fa il caricamento e il checking delle rom MOLTO velocemente...

Le parti in assembly sono pochissime e molto piccole, ma sono quelle si portano via più tempo in assoluto, e quindi è qui che si trae molto vantaggio dal loro utilizzo...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 
1