Newsgroup: it.comp.programmare.win32
Titolo: OT . SoftICE

Scusate OT .
Sapete come fare con SoftICE a mettere dei preakpoints
su particolari istruzioni : del tipo  MUL  x, IMUL  x, MOV  x,x?
Non funzioni , ma istruzioni.
Se non si può fare , conoscete qualche altro debugger che ci riesce ?
Ciao
Grazie

Che io sappia, anche il debugger del VC++ ha la possibilita'
di settare break-points sulle singole istruzioni, basta aprire la
finestra di disassembly, ALT-F9 e selezionare l'indirizzo
in memoria dell'istruzione.
Ogni istruzione e' uguale per il debugger (a parte la famiglia
di istruzioni tipo "rep movbs" ), quindi non vedo perche'
non si possa mettere un break-point su una imul.
Come farlo con SoftICE, e' un altro problema, dato che non
ho ancora visto quel prodotto, pur conoscendo molti che ne
parlano bene. Penso comunque che sia assolutamente possibile.

Sent via Deja.com 
http://www.deja.com/
Before you buy.


Uso SoftICE da tempo, e penso che sia impossibile mettere un break point
su un istruzione ( non su segmento di codice ) e penso che non abbia neanche
molto senso.
Comunque se  qualcuno ci riesce mi faccia un fischio , giusto per curiosità.
8

 ( non su segmento di codice )
Che io sappia ci sono due metodi per mettere breakpoint su singole istruzioni.
Metodo "software": si mette un INT3 al posto dell'istruzione su cui fai il
break (e poi si ripristina l'istruzione quando continui l'esecuzione); metodo
hardware: settando un flag apposito del processore, quest'ultimo genera un INT1
(single step) per ogni istruzione eseguita. Entrambi i metodi comunque possono
essere "ostacolati" con tecniche apposite.
Probabilmente in modo protetto si possono sfruttare anche altre tecniche, ad
esempio marcando in modo opportuno una pagina puoi trappare le eccezioni in
esecuzione... immagino che SoftICE faccia cosi`.
--
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

non si possa mettere un break-point
A me risulta che nel momento in cui metti un breakpoint inserisci il
famigerato interupt software 3. Ovvero modifichi il software.
Poi c'e' il solito giro, l'hardware lancia l'eccezione, il s.o. la
intercetta, e se c'e' chiama il debugger, oppure termina il programma.
Inserire brutalmente l'istruzione vuol dire falsare tutti i jump,
anche se non so proprio cosa siano le informazioni di debug che i
debugger mettono nel codice. Di sicuro c'e' il percorso dei sorgenti.
-------------------------------------------------------
Tieni per te il Papero se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero

 debugger mettono nel codice. Di sicuro c'e' il percorso dei sorgenti.
No, un "int 3" sostituito al posto di una istruzione temporaneamente
non altera nessun salto. I manuali Intel dicono chiaramente
quali eccezioni definite a livello di architettura riprendono
l'esecuzione prima della istruzione che ha generato l'eccezione.
Pensa solo al page fault, che induce il Memory Manager a
troavare una pagina buona per quell'indirizzo, e poi prosegue
l'esecuzione rie-eseguendo l'istruzione che ha causato l'eccezione.
Per quanto riguarda le informazioni di debug, queste sono definite
in MSDN per quanto riguarda il formato DBG, mentre per il PDB
non c'e' speranza. Il formato DBG include il database
dei simboli esportati (moni di funzioni, variabili globali e statiche).
Contiene inoltre informazioni su come risalire dagli indirizzi ad una
linea di codice. Per le variabili locali non c'e' formato dei
simboli documentato. Per le informazioni sui tipi occorre "parsare"
il formato COFF *.obj , secondo quanto documentato in MSDN.


>[..] No, un [..]
Risposta chiara ed esauriente. 
Olte che interesante.


>Comunque se  qualcuno ci riesce mi faccia un fischio , giusto per curiosità.
Che intendi per "mettere un breakpoint su una istruzione"
il comando bpx di ICE serve proprio a bloccare l'esecuzione quando 
IP=l'offset dell'istruzione selezionata per il breakpoint
Forse intendi "breakpoint quando viene eseguita una istruzione TIPO MOV 
xxx ,xxx" ?
-- 
  . 
darX...@tin.it
      . 
darx...@wappi.com
 (GSM SMS)
   . Fido 2:335/241.5     . 
http://darxstar.cjb.net
  ICQ UIN# 11151997 -   
  trough Britannia: Gwydion the Mage <UO: EUROPA,now in Trisinc>
---
I don't want my freedom: there's no reason for living, with a broken heart
 -- The Queen

 wrote in message
news:MPG.12bb45331...@news.libero.it...
