Newsgroup: it.cultura.cybersocieta.lamer
Titolo: Per la gioia dei vostri occhi, il manuale di Kalidor, gustatelo con piacere, dal vostro cookbooker preferito ;P

Crack
I crack annullano le restrizioni al software protetto da copyright. Se
avete un applicativo shareware o free trial potete renderlo completo con
un crack e sarà come se l'aveste pagato.
Manuale di Cracking
Breve introduzione all'Assembler
Per crackare un programma, bisogna innanzi tutto disassemblarlo
(tradurre il programma exe o com in una lista d’istruzioni
comprensibili, per poi modificarlo in modo che creda di aver inserito la
password giusta, o che i 30 giorni non siano passati) tramite il
SoftIce, i programmi in Assembler (asm), bisogna sapere questo
linguaggio.
I registri
La CPU del computer è divisa in diversi registri che servono per
memorizzare dati:
 AX - Accumulatore
 BX - Base register
 CX - Contatore
 DX - Data register
Ognuno può essere suddiviso in una parte alta e una bassa.
Per esempio AX si suddivide in AL (Low) e AH (High). Nella CPU del
Pentium, che lavora a 32 bit, i registri si chiamano EAX, EBX e cosi'
via: AL = 8 Bit (parte bassa del registro AX)
 AH = 8 Bit (parte alta del registro AX)
 AX = 16 Bit (formato da AL e AH messi insieme)
 EAX = 32 Bit (formato da AX e altri 16 Bit non direttamente accessibili
dall'utente)
Poi ci sono i segment register:
CS - Vuol dire Code segment. E' l'area di memoria nella quale si trova
il
     programma che state modificando. L'indirizzo CS:IP e' l'istruzione
che
     state per eseguire.
DS - Il Data segment. La parte di memoria nella quale si trovano i dati.
La CPU di solito vi accede solo in lettura.
ES - Extra segment. In questa area di memoria la CPU vi accede in
scrittura.
IP - Instruction pointer. E' l'indirizzo dell'istruzione che state per
     eseguire.
SS - Stack segment.
SI - Source Index. E' un puntatore.
DI - Destination index. Un'altro puntatore.
BP - Base pointer. Questo viene usato insieme allo SS.
SP - Stack pointer. Serve a puntare una locazione all'interno dello
Stack. E'
     usato insieme a SS.
2.2 I flag
Servono ad indicare se un jump condizionale deve essere eseguito o meno.
Per esempio
CMP AL, BL ........... Confronta il registro al con bl
 JZ 3F1D ................... Salta se zero a 3F1D
La prima istruzione esegue un confronto tra AL e BL. Se sono uguali il
flag Z diventa 1 (attivo), nel caso contrario invece, 0 (disattivo). La
seconda istruzione salta all'indirizzo specificato se il flag Z e' 0. Se
per esempio in AL abbiamo il numero di giorni da quando stiamo usando il
programma, e in BL, il numero di giorni che il programma deve
funzionare, modificando il flag zero possiamo far credere al programma
che i giorni ancora non sono finiti, e quindi possiamo continuare ad
usare il programma. Capito?
Mettiamo il caso:
AL = 3 .................... Stiamo usando il prog. da 3 giorni
BL = 1E .................. (1E = 30 in Hex) Per quanti giorni possiamo
usare il prog.
Premesso questo, ora eseguiamo i comandi:
CMP AL, BL ........... Confronta il 3 con il 30d
JZ 3F1D .................. Se i due sono uguali (tutti e due 30, flag Z
= 1) salta a 3F1D e ci dice di registrare il programma
2.3 Le istruzioni
MOV Dest. Source - Sposta un valore da Source a Dest. Per esempio MOV
AL,
    BL - Sposta il contenuto di BL in AL.
CMP var1, var2 - Confronta i due valori di var1 e var2. Per esempio CMP
AL, BL - Confronta il contenuto di AL con quello in BL. Questa
istruzione funziona come una sottrazione: il valore in var2 viene
sottratto da var1: se ho 3 in AL, e 8 in BL, il risultato sarà 3 - 8 =
-5. Il flag Carry (C) si attiverà (questo flag si attiva ogni volta che
il numero è negativo). Questo comando confronta la password inserita e
quella giusta, oppure, come nell'esempio sopra, i giorni trascorsi,e
quelli trascorribili.
JMP label - Esegue un salto all'indirizzo specificato. Lo troverete, di
solito dopo un CMP. Ci sono diverse variazioni di questo comando, che
ora vi elenchero', e vanno tutte a controllare i flag Z, O, S, C e P.
Nella sua forma piu' semplice e' JMP label, cioe', salta a label
qualsiasi siano i valori dei flag.
Ponendo il comando CMP AX, BX, abbiamo:
JNZ - Jump if not zero, AX diverso da BX
JZ - Jump if zero, AX uguale a BX
JB - Jump if below, AX < BX, C = 1
JA - Jump if above, AX > BX, C = 0
JNGE - Jump if not greater or equal, AX<=BX, S diverso da 0
JGE - Jump if greater or equal, AX=>BX, S = 0
JLE - Jump if less or equal, AX<=BX, Z=1 o S=F
CALL label - Richiama una routine che si trova all'indirizzo specificato
con
             label. Per esempio CALL 1F3D, esegue la routine a CS:1F3D.
Poi,
             eseguendo la routine, quando trova un'istruzione RET torna
             all'istruzione dopo CALL. Facile no? Di solito, quelle
chiamate
             con CALL sono delle routine che controllano il testo da voi
             inserito, oppure criptano la password che avete inserito
ecc.
3.1 I comandi del SoftIce
Un breakpoint comanda alla cpu di fermare l'esecuzione del programma
dopo un accesso ad una certa locazione di memoria, oppure dopo certi
eventi del programma stesso e dà il controllo al debugger. Quando setti
un bp del SoftIce e poi torni al programma che stai usando, SoftIce
compare automaticamente quando la condizione per la qual è settata il bp
è verificata.
3.1.2 BreakPoint
Bc # : Clear Breakpoint--elimina un breakpoint messo in precedenza nel
       Soft-Ice; devi sapere il numero del bp...
Bd # : Disable Breakpoint--disabilita il bp ma non lo cancella; devi
sapere
       il numero del bp...
Be # : Enable Breakpoint--abilita il bp che hai disabilitato in
precedenza;
       devi sapere il numero del bp...
Bl : List Breakpoints--mostra una lista di tutti i bp settati nel
softice,
     il loro stato (abilitato, disabilitato), e il loro numero.
Bmsg : Break on Windows Message. Sintassi: BMSG window handle L
begin-message
       end-message
Bpint : Break on Interrupt. Funziona solo con le interruzioni trattate
da IDT
        (95/NT). Sintassi: BPINT int-number
Bpio: Si ferma quando c'e' un accesso in lettura o scrittura ad una
porta I/O
      con un certo indirizzio. Sintassi: BPIO port [R|W|RW]
[EQ|NE|GT|LT|M
      value] [c=count]
Bpm: Si ferma quando c'e' un accesso alla memoria in lettura (read),
scrittura
     (write), o esecuzione (execution). Sintassi: BPM[B|W|DW] address
     [R|W|RW|X]
Bpx : Break on execution. Sintassi: BPX address/symbol [c=count]
      [EQ|NE|GT|LT|M value] [c=count]
Bpr : Break on memory range. Sintassi: BPR start-address end-address
      [R|W|RW|T|TW] [expression]
Bprw : Break on program/code segment. Sintassi: BPRW
module-name|selector
       [R|W|RW|T|TW] [expression]
3.1.2 Steppare attraverso il programma
Debuggare in se' vuol dire eseguite una istruzione alla volta di un
programma
in modo da poter vedere come cambiano la memoria, i registri, i flags e
le
variabili. I principali comandi per farlo sono:
P : Esegue una istruzzione e vede le CALL come una istruzzone sola.
Shortcut:
    il tasto F10.
P RET : Esegue il programma finche non trova un'istruzione RET.
Shortcut: il
        tasto F12.
T : Esegue una istruzzione. Shortcut: il tasto F8.
3.1.3 Visualizzare informazioni sul sistema
Addr : Visualizza o cambia ad un contesto di indirizzi.
Class : Visualizza informazioni sui Windows Classes.
CPU : Visualizza i registri della CPU.
Exp : Carica/Visualizza i simboli esportati da un DLL.
GDT : Visualizza la Global Descriptor Table.
Heap : Visualizza i Global Heap di Windows.
Heap32 : Visualizza/attraversa i Global Heap di Windows.
HWND : Visualizza informazioni sui Windows Handles.
IDT : Visualizza la Interrupt Descriptor Table.
LDT : Visualizza la Local Descriptor Table.
LHeap : Visualizza i Windows Local Heap.
Map32 : Visualizza una mappa di memoria di tutti i moduli a 32bit
caricati
        in memoria.
MapV86 : Visualizza la mappa di memoria DOS memory della macchina
virtuale
         corrente.
Mod : Mostra la Windows Module List.
Page : Mostra le Page Table information.
Proc : Visualizza informazioni su un processo.
Stack : Visualizza una call stack.
Sym : Imposta o visualizza un Symbol.
Task : Mostra Windows Task List.
VCall : Mostra i nome e indirizzi di una routine VxD chiamabile con
CALL.
VM : Visualizza informazioni sulle macchine virtuali.
VXD : Visualizza la mappa Windows VXD.
.VMM : Chiama il VMM Debug Informational Services menu.
.VPICD : Chiama il VPICD Debug Information Menu.
.VXDLDR : Mostra informazioni VXD.
WMSG : Visualizza i nomi e numeri dei messaggi Windows.
Guida per principianti al cracking delle password dei programmi
COSA SERVE
Il DEBUGGER, il migliore è il Numega Soft-Ice 3.2.
Il debugger permette di eseguire un programma passo-passo, cosa
fondamentale per capire come funzionano le procedure di protezione, e
quindi come modificare il programma per eluderle.
Un Hex editor.
Permette di cercare all'interno di un file una sequenza di byte. 
Una buona conoscenza del linguaggio assembler.
La gestione della memoria ed i registri.
La memoria di un PC è organizzata in segmenti. Ogni singolo byte di
memoria è caratterizzato da un indirizzo che e' dato nella forma
SSSS:OOOO, dove SSSS è il segmento, mentre OOOO è l' offset.
La divisione della memoria in segmenti è molto comoda, nel senso che
tutti i byte appartenenti allo stesso segmento hanno la stessa origine e
funzione.
Nei Pentium a 32 bit l'offset e' composto da 8 cifre anziche' 4.
Le variabili dell'assembler sono dette registri. A differenza dei
linguaggi di programmazione più avanzati, nell'assembler i registri sono
ben definiti e NON MODIFICABILI, se non nel valore dal programma: non è
possibile definire nuovi registri o rinominare quelli esistenti.
I registri più importanti sono:
AX , BX , CX , DX : Questi sono registri di varia utilità.
Ognuno di essi è formato da due byte. AH, AL, BH, BL, CH, CL, DH, DL
sono i byte che formano questi registri, ad esempio se AX=2EF1, allora
AH=2E e AL=F1. La stessa cosa per BX,CX
e DX. Dopo un'istruzione MOV AL,00 (che azzera il valore di AL) si
avrebbe
AX=2E00.
Nei Pentium a 32 bit, i registri AX, BX, CX e DX sono la parte inferiore
dei registri EAX,EBX,ECX,EDX composti da 4 byte.
CS , IP : Questi due registri contengono il segmento ed l'offset del
codice. Per
cui l'indirizzo di memoria CS:IP e' l'indirizzo del comando assembler
che sta per
essere eseguito.
SS , SP : Contengono il segmento e l' offset dello stack. Nello stack ci
vanno
tutte le variabili momentanee.
DS , SI : Contengono il segmento e l'offset dei dati. Nelle protezioni
meno
sofisticate, spesso nel segmento di dati si puo' trovare la password
corretta,
oltre all'eco dell'input che viene dato alla procedura di controllo. Ma
di questo
parleremo piu' avanti.
ES , DI : Segmento e offset di varia utilita'. 
Flag : Questo registro contiene delle variabili booleane (cioe' che
possono
assumere solo due valori: vero o falso) che vengono aggiornate dopo ogni
operazione, a seconda del risultato. Ad esempio l'operazione OR AX, AX
(mette in
AX il valore AX OR AX) che sembrerebbe inutile, in realta' modifica il
flag ZERO,
ponendolo vero se AX e' zero, falso in caso contrario.
Il comando CMP (compare) viene usato per modificare i flag.
Vi sono altri registri, ma per crackare un programma e' piu' che
sufficiente
conoscere quelli che ho elencato.
Ora veniamo ai comandi principali (e piu' utili per il cracker)
dell'assembler.
Il comando MOV permette di assegnare un valore ad un registro o ad un
indirizzo
di memoria; facciamo alcuni esempi:
 MOV AX,BX                     Mette in AX il valore di BX
 MOV AL,[BP]                   Mette in AL il byte contenuto
nell'indirizzo di
                               memoria DS:BP (NB Quando non e'
specificato alcun
                               segmento viene usato DS)
 MOV CX,0012                   Pone CX uguale a 0012
 MOV BX,ES:[0128+CX]           Mette in BX il valore all'indirizzo
ES:[0128+CX]
 MOV [0A31],AX                 Scrive nell'indirizzo di memoria DS:0A31
il valore
                               di AX
Il comando JMP serve per "saltare" lungo il codice, cioe' un comando JMP
021A
mandera' il computer ad eseguire l'istruzione contenuta nell'indirizzo
di memoria
CS:021A e le successive.
Il comando CMP, come abbiamo gia' visto serve ad aggiornare i flag, e la
sintassi
e' molto simile a quella del comando MOV, nel senso che richiede due
valori.
Spesso viene seguito da un JMP condizionato, ad esempio:
 CMP AX,BX    <- Compara AX con BX e aggiorna i flag
 JLE 021A     <- Jump if Less or Equal, cioe' se uno dei flag LESS o
EQUAL sono
                 veri, salta all'istruzione 21A
In questo caso se AX e' minore o uguale a BX, il salto avviene,
altrimenti il
Jump viene ignorato.
Alcuni dei JMP condizionati sono:
JL   Salta se minore
JLE  Salta se minore o uguale
JE   Salta se uguale
JGE  Salta se maggiore o uguale
JG   Salta se maggiore
JZ   Salta se zero
JNZ  Salta se non zero
JCXZ Salta se CX e' zero
In realta' ce ne sono molti altri, ma questi sono i piu' usati, ed
inoltre per
crackare programmi non serve conoscere a memoria tutti i tipi di jump,
per cui
non mi soffermero' oltre su questo argomento.
Il comando INT serve a chiamare un interrupt (gli interrupt sono le
procedure
standard e basilari presenti nel computer).
Ad esempio:
    +-> MOV AH,0B     <- Funzione 0B, controlla lo stato della tastiera
    |   INT 21        <- Esegue l'interrupt 21, funzione 0B
    |   CMP AL,FF     <- Se AL vale FF in uscita dall'interrupt, vuol
dire che
    |                     e' stato premuto un tasto
    |   JE  A035      <- Vai a leggere il tasto
    +---JMP 9E0F      <- Ricomincia il ciclo
Il comando CALL funziona un po' come il comando JMP, con queste
differenze:
1) Non esistono CALL condizionate
2) Si puo' saltare ad un segmento di codice differente, mentre un JMP
non
   permette di accedere ad un altro segmento
3) Viene memorizzato l'indirizzo da cui e' partita la CALL, e
l'istruzione RET
   permette di ritornarci
Il cracking vero e proprio!
Con cosa cominciare? Ho allegato a questa guida un programma che chiede
una password (crackme.exe) e che spieghero' come crackare.
La protezione di questo programma è veramente semplice, cominciare con
questo è l'ideale per imparare.
Prima di passare al cracking delle password è consigliabile anche
provare a fare
qualche cheat su dei vecchi giochi (per cheat intendo modificare il
codice in
modo da avere delle facilitazioni nel gioco, ad esempio, che so, vite
infinite).
Il vantaggio delle cheat e' che le aree di codice che andate a studiare
e
modificare in genere sono prive di alcuna protezione, quindi questo tipo
di "cracking" e' abbastanza semplice.
I passi fondamentali per crackare una password sono questi:
1) Trovare dove il programma memorizza l'input alla richiesta della
password
2) Mettere dei breakpoint sull'area di memoria in cui si trova la mia
digitazione
3) Trovare la procedura che confronta cio' che ho scritto con la
password
   corretta
4) Scoprire e modificare il JUMP CRITICO della procedura
Il jump critico e' spesso preceduto da un compare che ha la funzione di
verificare se la password inserita e' corretta. Il risultato del compare
viene
memorizzato nei flag, e il jump successivo si comporta di conseguenza,
ad esempio
una classica procedura di controllo potrebbe essere questa:
CMP carattere_password_corretta, carattere_input_utente
JNZ Ha!_questo_carattere_non_corrisponde!cacciamo_fuori_questo_bastardo!
In questo caso questi due comandi controllano UN CARATTERE della
password, e nel
programma devono essere ripetuti per tutta la lunghezza della password.
Vi sono
molti modi per crackare una routine come questa, ad esempio:
- Sostituire al JNZ:
JMP Istruzione_successiva
In questo caso anche se il compare da' un risultato sbagliato, il
programma
prosegue come se niente fosse!
- Sostituire al CMP:
CMP carattere_password_corretta, carattere_password_corretta
Qui gli facciamo confrontare la password corretta con se stessa! E'
ovvio che
risultera' uguale!
+ORC
guida per cracker
MINI CORSO CRACKING-ORIENTED DI ASSEMBLER
[AX].... registro accumulatore, utilizzato per le operazioni matematiche
e di I/O. Tutto passa da questo registro, le funzioni di COMPARE (CMP)
di solito avvengono confrontando un valore inserito da voi (es. un
numero del serial
number, una lettera della password, il numero riferito ad una icona da
scegliere) con quello contenuto in AH, AL o in tutto il registro. Questo
valore è qui precedentemente mosso dalla routine che vi trasferisce uno
ad uno i valori (naturalmente, in HEX o in DEC) della password o del
serial number.
[BX].... Utilizzato come base o puntatore ad una locazione.
[CX].... Il contatore. Usato per i loops (cicli) è decrementato o
incrementato secondo le esigenze. Di solito contiene un numero (ad es.
il numero delle volte che potete provare ad inserire la password prima
che il tutto si blocchi) che viene poi decrementato (con l'istruzione
DEC CX oppure SUB CX, AX) ogni volta che sbagliate. Utile in questo caso
eliminare queste istruzioni per poter lavorare con più tranquillità.
[DX].... Funzioni simili a BX.
Ognuno di questi registri pu• essere suddiviso ulteriormente in 2 parti,
ossia parte alta (AH) e parte bassa (AL). Dunque ogni "parte" del
registro pu• contenere un valore da 00 a FF (mentre il registro "intero"
contiene valori da 0000 a FFFF). Esempio: se muoviamo un valore in AX
(MOV AX, 01AFh), il registro AL conterrà il valore AFh ed il registro AH
conterrà invece 01h.
I segment-registers:
[CS].... Il code-segment, l'area di memoria nella quale si trova il
codice del programma che state sodomizzando. L'indirizzo CS:IP serve ad
identificare proprio l'istruzione che state per eseguire.
[DS].... Data-segment, l'area di memoria alla quale la CPU accede in
lettura.
i dati.
[ES].... Extra-segment, altra area di memoria alla quale la CPU accede,
ma
questa volta in scrittura. In pratica, la CPU legge da DS:SI e v… a
scrivere
il byte (o la word) letta in ES:SI.
[IP]..... Istruction Pointer. Cos'Š? Semplice, l'indirizzo
dell'istruzione
che state per eseguire nel code segment attuale. Io di solito, durante
il
crakkaggio nel debugger, modifico questo registro invece del jump, in
maniera
da non danneggiare per il momento il programma. Ma Š solo una mia
abitudine...
[SS].... Stack-segment, area di memoria di "parcheggio" nella quale la
CPU
tiene nota di tutti i return-address dalle subroutines. Usando
l'istruzione
PUSH o POP, lo stack viene riempito o svuotato.
Altri registri sono:
[SI]..... Source-index, usato insieme all'istruzione MOV. E' un
puntatore all'interno di un segment (di solito DS) che viene letto dalla
CPU.
[DI]..... Destination-index, anche questo usato insieme a MOV. E' un
puntatore all'interno di un segment (di solito ES) dove la CPU và a
scrivere. Andando a vedere all'indirizzo ES:DI, se vedete che ci viene
mosso qualcosa, potreste
anche capitare in locazioni interessanti.
[BP]..... Base-pointer, usato insieme allo Stack-segment.
[SP]..... Stack-pointer, altro pointer usato insieme allo Stack-segment
Una particolare nota merita il seguente registro:
[FLAG].. Nel vostro debugger, vedrete in cima un'insieme di lettere
maiuscole e minuscole (oppure illuminate o no, oppure con sotto dei
numeri 0 e 1). Questi sono i flag, che servono ad indicare se un
particolare jump deve avvenire o no. Logicamente, flag=0=spento
flag=1=acceso.
Agevoliamo un esempio
	CMP AL,2A......... confronta il valore di AL con 2A.
			   Il risultato Š un cambiamento dello stato del flag
			   Z. CioŠ, se Š vero il flag viene attivato (1) senn•
			   viene disattivato (0).
	JZ 8EDF........... salta -SE- il flag Z=1 (quindi se AL=2A)
[MOV]..... E' un'istruzione le cui funzioni sono fondamentali nel
cracking.
Difatti, molte volte vi ritroverete a dover magari muovere un valore
giusto
in una locazione semplicemente cambiando un CMP in un MOV (poi vi
spiego....
non temete). La sua sintassi Š: MOV [destination],[source]
  es 1. MOV AX,BX     ----------> muove il valore di BX in AX
  es 2. MOV CX,[0400] ----------> muove i due bytes contenuti
all'indirizzo
				  specificato (DS:0400) in CX. In questo caso
				  se dumpate a DS:0400 trovate lo stesso
				  valore di CX, solo rovesciato (es. se in CX
				  c'Š 002Ah, troverete 2A00h); non s• perchŠ,
				  (stasera non ho fame), ma Š cos ....
  es 3. MOV AL,DL     ----------> muove la parte bassa di DX nella parte
bassa
				  di AX
  es 4. MOV [ES:300],AX ---------> muove il valore di AX nella locazione
				   specificata. Notare che se ES non Š
				   menzionato, si usa DS. Se prima di una
				   istruzione del genere si muove un valore
				   in BX (es. 03) questo viene usato come base
				   da aggiungere all'indirizzo specificato.
				   Quindi, in questo caso, il valore di AX
				   verrebbe mosso in ES:300+BX = ES:303.
[CMP]..... Semplicemente, confronta due valori in memoria, siano essi
registri
oppure bytes, cambiando di conseguenza il flag relativo. La sintassi,
secondo
i casi, pu• essere:
 
  es 1. CMP AX,01       -----> confronta AX con 01
  es 2. CMP AX,BX       -----> confronta AX con BX
  es 3. CMP AX,[0550]   -----> confronta AX con i 2 bytes a DS:0550
  (eccetera eccetera...)
Questa funzione funziona (bello!) come una sottrazione
source-destination,
cioŠ:
ponendo AX=20 e BX=21, il risultato del CMP AX,BX sar… 20-21=-1. Il
risultato
di questa sottrazione attiver… il flag CARRY (C), attivato quando si
sottrae
un valore pi— grande da uno pi— piccolo; se invece la sottrazione non d…
risultato negativo, il flag rimane 0 (disattivato).
Dal punto di vista crakkistico, le istruzioni CMP sono usate *SEMPRE*
per
verificare il vostro input, oppure per far sapere al programma se Š
registrato
o meno. Quindi, truffando il CMP si pu• benissimo far credere al tapino
una
cosa per un'altra!
[JMP].... Lo troverete *SEMPRE* dopo il CMP, nelle varie forme.
La pi— semplice, e ovvia, Š la forma JMP <indirizzo>, che naturalmente
provoca
un salto all'indirizzo desiderato, quali che siano i valori dei flags
dati
dal CMP. Per quanto riguarda l'indirizzo, questo pu• essere nello stesso
CS (JMP 0AF4) oppure in un'altro (JMP 2000:18A0 oppure JMP DWORD PTR
ES:[DI],
che vi spedir… alla locazione contenuta in ES:DI. Ma sono solo alcuni
esempi).
Questa comunque Š l'istruzione che userete pi— spesso (anzi, mi
sbilancio:
nel 99% dei casi) nei vostri scopi pirateschi. Difatti, se la vostra
protezione, ad esempio, controlla una locazione e poi f… un JNZ che
riporta
il programma all'inserimento della password/serialnumber, basta che
sostituiate il jump condizionale con un JMP, e..... et voil…! Comunque,
se
ne riparla dopo! 
Ora, vi agevolo la lista dei vari jump condizionali, spudoratamente
copiata
dal Cracking Manual di The Cyborg (quindi, grazie tante, leggetelo che Š
bellino, ma il mio Š meglio perchŠ Š pi— aggiornato!).
Dunque, supponendo un CMP AX,BX, si possono avere i seguenti casi:
	(Z,O,S,C,P sono i flags che i jump vanno a controllare)
	Istruzione  Definizione, condizione, flag
	JNZ 030A    (Jump if not zero, AX diverso da BX, Z=0)
	JNE 030A    (Jump if not equal, identico a JNZ)
	JZ 030A     (Jump if zero, AX=BX, Z=1)
	JE 030A     (Jump if equal, identico a JNZ)
	JB 030A     (Jump if below, AX<BX, C=1)
	JA 030A     (Jump if above, AX>BX, C=0)
	JL 030A     (Jump if less, AX<BX, S diverso da O)
	JNGE 030A   (Jump if not greater or equal, AX<=BX, S diverso da O)
	JGE 030A    (Jump if greater or equal, AX>=BX, S=O)
	JNL 030A    (Jump if not less, in pratica uguale a JGE)
	JLE 030A    (Jump if less or equal, AX<=BX Z=1 oppure S=F)
	JNG 030A    (Jump if not greater, come JLE)
	JG 030A     (Jump if greater, AX>BX Z=0 oppure S=O)
	JNLE 030A   (Jump if not less or equal, AX>=BX Z=0 oppure S=O)
	JS 030A     (Jump if sign, /, S=1)
	JNS 030A    (Jump if not sign, /, S=0)
	JC 030A     (Jump if carry, /, C=1)
	JNC 030A    (Jump if not carry, /, C=0)
	JO 030A     (Jump if overflow, /, O=1)
	JNO 030A    (Jump if not overflow, /, O=0)
	JP 030A     (Jump if parity, /, P=1)
	JPE 030A    (Jump if parity even, come JP)
	JNP 030A    (Jump if no parity, /, P=0)
	JPO 030A    (Jump if no parity odd, come JNP)
	(ce ne sarebbero altri, ma nella lista da cui li ho copiati non
	 venivano menzionati.)
[LOOP]..... Indica un ciclo, che si ripete per CX volte (naturalmente,
CX
decrementa ogni volta che trova questa istruzione). Per quanto riguarda
il
formato, Š LOOP <indirizzo>, che indica appunto l'inizio del LOOP dove
questo
ogni volta ritorna finchŠ CX non diventa 0. Istruzione piuttosto pallosa
da
debuggare, utile in questo caso la funzione "Breakpoint Here" dei
debugger,
che permette di settare un breakpoint all'istruzione successiva e
ripartire
direttamente da l  senza sorbirsi tutto il ciclo (sempre che funzioni,
senn•
ve lo dovete puppare tutto).
[REP]..... Indica il ripetersi di istruzioni MOVS, LODS,
STOS (quindi si trover… nel formato REP MOVS, REP LODS, REP STOS). Le
istruzioni suddette vengono ripetute CX volte.
[MOVSB]..... Muove un byte dall'indirizzo DS:SI all'indirizzo ES:SI.
[MOVSW]..... Stesso discorso, ma per una word (4 bytes)
[LODSB/LODSW]..... Con queste istruzioni, viene letto un byte o una word
residenti in memoria all'indirizzo DS:SI. Il byte o la word in questione
viene messo in AL (o in tutto AX, naturalmente, se Š una word)
[STOSB/STOSW]..... Se le istruzioni prima leggevano, questa cosa f…?
mah..... forse scrive! Difatti, scrive il byte (o la word) in AL (o AX
se
word) all'indirizzo ES:SI.
[CALL]...... Richiama una subroutine, e dopo l'esecuzione di questa
torna
all'indirizzo successivo alla CALL stessa (tramite un RET/RETF).
Esempio:
	       CALL 68AB ----> esegue la subroutine a CS:68AB
	       subroutine:
	       CS:68AB ......
		  68AE ......
		  68B0 ......
		  68B3 RET  ----> torna all'istruzione successiva a CALL 68AB
Una call può essere nel formato CALL FAR (come anche il JMP), cioè viene
eseguita una subroutine ad un'indirizzo in un altro CS.
Nei vostri primi approcci crakkistici, se avete la fortuna di trovare la
CALL che salta *DIRETTAMENTE E SOLO* alla protezione, potete benissimo
togliere quella. Più in là sarà meglio che impariate a districarvi con i
jump e i
compare, identificando e modificando quelli relativi al solo controllo
della protezione. Difatti, se per caso quella CALL chiamasse una
subroutine che contiene la protezione ma anche istruzioni necessarie al
buon funzionamento
del programma, eliminandola siete fottuti.
[INT]...... Chiama un interrupt (tipo una CALL ma non relativa al
programma)
, con una specifica funzione assegnata da un valore, di solito mosso in
AX.
E' utile ad esempio monitorare l'interrupt 13 con il debugger (nel caso
si
voglia sproteggere un programma che accede al floppy), oppure
l'interrupt 16
con funzione 10 (AX=10) nel caso il programma attenda la pressione di un
tasto.... Utile ma non indispensabile, si crakka anche senza usare
questa
funzione del debugger.....
1.2...... USO DEI VARI DEBUGGERS
Programmi usati:
	1) GameTools 3.2 (G3X).... MITICO e INEGUAGLIABILE debugger DOS
	   (purtroppo solo in modo reale) che potete usare anche per
	   fare dei trainers. Lo allego io, non s• se lo trovate su internet.
	2) SoftICE 2.0 for Windows95 .....il GameTools per Windows.
Indispensabile perché è l'unico che permette di
	   debuggare i programmi con DOS4GW. Se volete potete anche usare il
SoftICE x DOS al posto
	   del G3X.
	3) Watcom Debugger..... Odiosissimo debugger indispensabile per
	   il cracking in DOS4GW. Fortunatamente, lo dovete usare solo
	   per questo..... il resto si f… con gli altri due! Dato che
	   questa parte l'ho aggiunta dopo, i comandi li trovate direttamente
	   nel paragrafo sul DOS4GW. 
i comandi del debugger che userete più spesso sono:
[STEP] ....... Esegue le istruzioni una alla volta, eseguendo
direttamente le CALL e i LOOP.
[TRACE] ...... Come sopra, ma permette di eseguire le istruzioni
all'interno delle CALL e dei LOOP una alla volta. Utile se dovete
spulciare all'interno di una serie di CALL nidificate fino a trovare
quella che chiama *SOLO* la
routine di protezione
[BREAKPOINT]..... Esegue un INT 3 al posto dell'istruzione presente all'
indirizzo da voi specificato, causando un ritorno al debugger quando
questa
viene eseguita. (se per• c'Š la famosa trappola per il debugger......
son
cazzi! dovete individuare le istruzioni che vi impiantano il debugger e
levarle.). I breakpoint sono di vari tipi, ognuno con una funzione
specifica.
Ad esempio, un breakpoint molto usato Š quello che torna al debugger
ogni
qualvolta si accede in lettura e/o scrittura alla locazione indicata
(utilissimo per trovare proprio le istruzioni che esaminano il vostro
input).
Un altro ancora Š quello che torna al debugger quando viene eseguita
l'istruzione all'indirizzo indicato (ad esempio, per stoppare il
programma
in un certo punto che sappiamo essere proprio prima del controllo
dell'input).
Questi sono solo 2 esempi di breakpoint.... nel G3X vi appare la lista
di quelli che potete usare, nel SoftICE dovete settarveli a mano.
La sintassi per il SoftICE non st• a scriverla,in quanto Š spiegata
nell'
help stesso del programma. Direte voi, dove lo trovo l'help ?
Semplice: se digitate ? <invio>, vi appare una lista di tutti i comandi
disponibili; ora, andate a vedere quelli relativi ai breakpoint,
scegliete
quello che vi interessa e inserite ? <nome breakpoint (BPR,BPX,ecc.). Vi
apparir… quindi la sintassi del comando. Questo procedimento Š valido
anche
per tutto il resto dei comandi del SoftICE (cos  lo spiego una volta
sola!)
[HERE] Permette di settare un breakpoint BPX (break on execution) in un
punto particolare (es. subito dopo un loop) causando il ritorno al
debugger quando il programma arriva a quel punto.
Fate prima così che usare i breakpoint: col G3X, ad esempio, scorrete il
listato assembler, e all'indirizzo
dove volete che il programma si fermi premete "H", in modo da mandarlo
in
esecuzione fino a quando non raggiunge quel punto. Per il SoftICE stesso
discorso, ma prima dovete entrare nella CodeWindow (la finestra sopra a
quella
dove inserite i comandi, quella dove vedete il disassemblato del codice)
digitando "ec". Quindi, scorrete con alt+frecce e premete F7 dove volete
il
breakpoint. L'unica differenza Š che questo tipo di BP vale una volta
sola,
ossia tutte le volte lo dovete risettare. Capito mi avete ?
[INTERRUPT MONITOR]..... E’ un breakpoint (nel SoftICE comando BPINT) ad
uno specificato interrupt, che
causa il ritorno al debugger ogni qualvolta questo interrupt è chiamato.
Utile nel caso di protezioni che accedono al floppy, o alla porta
parallela serve a sveltire la procedura. Usate questa funzione nei casi
in cui conoscete il numero dell'interrupt e la funzione richiesta (es.
per la pressione di un tasto, INT16 con funzione 10 in AX).
Dal G3X, accedendo al menu interrupt monitor, potete settare questi
breakpoint in maniera molto semplice, nel SoftICE dovete fare a mano.
Panoramica sui tasti da usare nel SoftICE per accedere a queste
funzioni.
	F10..... P  (step)
	F6...... EC (enter/exit code window)
	F7...... H  (here)  [dovete prima andare nella code window con F6 (ec)]
	F8...... T  (trace)
 
Questi tasti possono essere cambiati modificando il file WINICE.DAT
nella directory del SoftICE.
Principi Base del Cracking
Avete in mano il CD-ROM e volete installarlo senza poi utilizzarlo.
Eseguite la normale procedura di installazione, facendo in modo che
venga copiato sull’hard disk la maggior parte di gioco possibile.
Se il programma è stato installato quasi completamente, ma richiede che
il CD resti inserito, ci sono due possibilità:
A - Il gioco carica dal CD la musica e animazioni
B - Il gioco usa il lettore come protezione
Controllare se sulla root del CD c’è qualche file come 
disk.id
,
cdrom.inf, che il programma cerca quando viene lanciato. Copiando questo
file nella directory del gioco a volte si può illudere il programma che
sta girando sul CD-ROM.
Se questo sistema non funziona bisogna ricorrere alla creazione di una
unità illusoria.
Per questo si scrive SUBST E: C:\TEMP. Il drive E verra' identificato
con la directory TEMP. da questo momento tutti i programmi lanciati da
quella directory penseranno di girare su un altro drive.
Se il gioco non ne vuole sapere, copiate tutto il CD-ROM in una
directory e utilizzate l'utility FAKECD.EXE. Questo eseguibile è la
versione potenziata di SUBST. queste utility assegnano solo un unità
logica a dei settori del nostro Hard
Disk.
Come far saltare un Cd-check per un gioco oppure registrare uno
shareware
Occorrente:   Win 32/16 Dasm e Hiew reperibili in rete
Il Cd-check o il programma shareware esegue un cos  detto Jump durante
il controllo del cd, nel caso del gioco, della veridicit… dell'user e
pass, nel caso dello shareware.
Un Jump è un salto prodotto da una scelta del programma, un
condizionale.
Per modificarlo a nostro favore, nel qual caso decidessimo di registrare
uno shareware, premiamo il solito pulsante per registrare e mi appare
una schermatina che mi dice "inserisci l' user e la pass"
io digito rispettivamente come user e pass "Che" "Culo!!", ma il
programma mi
spara una cosa del tipo "hai inserito una pass sbagliata!!".
In questo punto il prog ha eseguito un jump : ha confrontato la pass e
l'user con un algoritmo o con delle pass precedentemente inserite in
memoria e si Š detto:
se la pass Š giusta registra il programma, se la pass non Š giusta fai
apparire il messaggio
Il nostro scopo è invertire i jump in modo da avere: se la pass non è
giusta registra il programma, se Š giusta fai apparire il messaggio.
Disassembling
A questo punto dato che la fortuna non Š dalla mia parte e la pass "che
culo!!!"
non ha funzionato decido di passare ai metodi duri....
Chiudo il programma e disassemblo il file .exe di partenza dello
shareware
con il Dasm subito clicko il pulsante Refs e poi String Data References.
Vi apparir… una finestra con una serie di stringhe.....fate doppio click
su
quella con la frase con cui vi aveva risposto il programma (Brutto
bastardo
hai inserito........), adesso spostandovi un p• in sopra evideziate la
linea
in cui compare il jump condizionale Es.  je 1034732 adesso segnatevi
l'offset
che non Š niente altro che quel numero che compare in basso sulla
finestra
del programma preceduto da @Offset Es. @Offset 0004B9E
adesso potete chiudere il Dasm.
Facciamo saltare il Jump!!!
Adesso fate partire Hiew e seguite queste istruzioni.Premete:
F1 per cambiare il drive e selezionare il file (ovviamente il .exe che
avete deassemblato prima)
F4 per selezionare il modo Decode
F5 ed inserite l'Offset che vi siete segnati in precedenza Es. 0004B9E
Adesso viene il bello....
Vi accorgerete di essere capitati su di una stringa in cui nella terza
colonna c'Š lo stesso tipo di jump che avevate trovato prima e di cui vi
eravate segnati l'Offset, attenzione per• non Š dello stesso tipo.....Š
proprio quello!!!
Ora dovete invertire il jump e lo farete spingendo F3 ed inserendo nella
seconda colonna ai primi 2 numeri
al posto di 74 (je), 75(jne) oppure il contrario ovviamente....
Nel caso doveste trovare un jump diverso vi inserisco una intera lista
di tutti i jump che potrete trovare nel mezzo del cammin della vostra
Crack....
77cb      	JA X8     	Jump short if above (CF=0 and ZF=0)
73cb      	JAE X8    	Jump short if above or equal (CF=0)
72cb            JB X8           Jump short if below (CF=1)
76cb      	JBE X8    	Jump short if below or equal (CF=1 or ZF=1)
72cb            JC X8           Jump short if carry (CF=1)
E3cb      	JCXZ X8   	Jump short if CX register is 0
E3cb      	JECXZ X8  	Jump short if ECX register is 0
74cb            JE X8           Jump short if equal (ZF=1)
7Fcb            JG X8           Jump short if greater (ZF=0 and SF=OF)
7Dcb      	JGE X8    	Jump short if greater or equal (SF=OF)
7Ccb            JL X8           Jump short if less (SF<>OF)
7Ecb      	JLE X8    	Jump short if less or equal (ZF=1 or SF<>OF)
76cb      	JNA X8    	Jump short if not above (CF=1 or ZF=1)
72cb      	JNAE X8   	Jump short if not above or equal (CF=1)
73cb      	JNB X8    	Jump short if not below (CF=0)
77cb      	JNBE X8   	Jump short if not below or equal (CF=0 and ZF=0)
73cb      	JNC X8    	Jump short if not carry (CF=0)
75cb      	JNE X8    	Jump short if not equal (ZF=0)
7Ecb      	JNG X8    	Jump short if not greater (ZF=1 or SF<>OF)
7Ccb      	JNGE X8   	Jump short if not greater or equal (SF<>OF)
7Dcb      	JNL X8    	Jump short if not less (SF=OF)
7Fcb      	JNLE X8   	Jump short if not less or equal (ZF=0 and SF=OF)
71cb      	JNO X8    	Jump short if not overflow (OF=0)
7Bcb      	JNP X8    	Jump short if not parity (PF=0)
79cb      	JNS X8    	Jump short if not sign (SF=0)
75cb      	JNZ X8    	Jump short if not zero (ZF=0)
70cb            JO X8           Jump short if overflow (OF=1)
7Acb            JP X8           Jump short if parity (PF=1)
7Acb      	JPE X8    	Jump short if parity even (PF=1)
7Bcb      	JPO X8    	Jump short if parity odd (PF=0)
78cb            JS X8           Jump short if sign (SF=1)
74cb            JZ X8           Jump short if zero (ZF = 1)
Spingete F9 per salvare il file ed ancora F9 per uscire da Hiew. 
AVETE CRACKATO LO SHAREWARE!
Adesso viene il momento decisivo, sarete stati cos  bravi o fortunati da
azzekare il giusto jump? Per scoprirlo aprite lo shareware che avete
appena crackato, su register inserite la vostra pass scaramantica: nel
caso di richiesta di un altro codice e sperate con tutti voi stessi di
esserci riusciti....
A questo punto se avrete modificato il jump giusto apparir… una roba del
genere: "Registered"
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Crack
[poto]
Bravo, sei un grande. Adesso perň
da buon wannabe devi dimostrarci di aver imparato.
noi saremo la tua "commissione d'esame". craccaci
un programma a tua scelta.
--
Mrc777
mrc_...@yahoo.itNOSPAM
togliere nospam per rispondermi --

 togliere nospam per rispondermi --


 Eppoi, io sono anglofobo e contrario ai crack(er).
Passami il nome del tuo spacciatore, quella roba che fumi deve
essere eccezionale.


 un programma a tua scelta.
io mi sono letto tutto il manuale e ho provato a craccare autlook 
espress ma non ci sono riuscito... qualcuno mi da una mano??
met

espress ma non ci sono riuscito... qualcuno mi da una mano??
ROTFL!!!
-- 
                                                                                      Fabiao
Ipse Scripsit

 ROTFL!!!
Uffa, Fabiao, e poi dici a cosa mi riferisco.
Se questo qui, anche se per ora è un lamer, e ricordati che può anche
non esserlo per sempre, se lo guidi lungo la via dell'hacker,
ben presto potrebbe essere anche migliore di te, poiché ha voglia di
imparare.
E tu non di aiutarlo.
E questo è un peccato che non deve esistere nel mondo degli hacker.


non esserlo per sempre, se lo guidi lungo la via dell'hacker,
Napo ca**o ma come ti pare possibile crackare l'Outlook Express???
Ma le capisci le battute o devo sempre stare li' a spiegartele???
Cazzarola...
-- 
                                                                                      Fabiao
Ipse Scripsit

 Cazzarola...
No scusate
Ma perché è impossibile? Perché è un programma Microsoft?
Ciao - met

 Ciao - met
Esattamente e in qualita' di software commerciale e' protetto dalle
leggi che tutelano il diritto di autore. Copialo e ti trovi gli
avvocati fuori di casa.
La prima volta che ti colleghi a Internet ti individuano.
giannaemme

 La prima volta che ti colleghi a Internet ti individuano.
Non credo proprio che ce la facciano a beccarmi, ho installato Norton 
AntiVirus che mi ha passato un mio amico hacher e quindi sono protetto 
dalle intrusioni!!!
met

 Coi fiori di neve che avevan perduti...
bella... è una tua poesia? e che significa?
ciao - met

dalle intrusioni!!!
DEVI AZZOLUTAMENTE AIUTARMI NELLA STESURA DELL'ENCICLOPEDIA
-- 
                                                                                      Fabiao
Ipse Scripsit

 DEVI AZZOLUTAMENTE AIUTARMI NELLA STESURA DELL'ENCICLOPEDIA
Forse hai sbagliato persona, io non sono uno hacher tanto esperto...
met

Fabiao, non vedi che se continua cosě diventerŕ un lamer?
Poverino, continua a parlare di hacher...
Rabbrividisco alla sola idea di nominare questo nome.
Ehi, possimamo dire che sono gli hacher e non gli hacker che sono
criminali informatici, non trovate?
Cosě non utilizziamo piů il termine di cracker, poverini, mi fanno
pena...
IO, se vuoi, ti posso dare l'Introduzione all'Hacking, e ricorda, si
scrive hacker, non hacher.
E Massi Cadenti aveva ragione a consigliarti di formattare il computer
per iniziare.
Ma ricorda, perderai tutti i dati che sono contenuti sul tuo hard
disk...
Fa una copia di BackUp e poi ne parliamo.
E bisogna formattare con il disco di ripristino...


Forse hai sbagliato persona, io non sono uno hacher tanto esperto...
IL MIO ISTINTO LAMER MI INDICA IN TE IL NOSTRO CONDOTTIERO
-- 
                                                                                      Fabiao
Ipse Scripsit

 bella... č una tua poesia? e che significa?
Che era daltonico :-P


accensione
Aiutoooooooooooooooooooooooooooooooo:-)))
Ragazzi vi giuro che non ci resisto...non possso continuare a
sghignazzare solo io nel cuore della notte
ROTFLo sempre di +!!!
-- 
                                                                                      Fabiao
Ipse Scripsit

diduz'
GRATTATONA DI PALLE...comunque piu' o meno mi e' mancata la mascella
per buoni 5 minuti:-D
-- 
                                                                                      Fabiao
Ipse Scripsit


 ma sei scemo?
--
Giovvo

 accensione
Io sono a quota 1 e allora?
Formattare č solo un aggirare il problema!
I vigliacchi formattano!
--
Giovvo

  ma sei scemo?
io vi ho parlato di un mio dubbio e tu mi insulti
spiegami tu dove ho sbagliato, se non sei un cazzabubbolo
met

 ha scritto nel messaggio
news:MPG.174c4d5aa...@news.inet.it...

Occhei:
allora devi sapere che su Linux non possono girare i programmi che di solito
installeresti su Windows per il semplice fatto che sono due sistemi
operativi diversi, e di conseguenza incompatibili, semplice no?
--
Giovvo
ps: la sensazione di essere stato preso per il culo sta pervadendo il mio
essere!

 essere!
e a me pervade quella di non essere preso sul serio. sono troppo 
igniorante per voi? :-((
ciao
met

Io sono lamer,ma il Wed, 15 May 2002 13:35:11 +0200 "Giovvo"
<gio...@TOGLIEREQUESTOPERRISPONDEREtiscali.it> cosi' postando su
it.cultura.cybersocieta.lamer mi fece capire che avevo ancora molto da
imparare:
FONNIGLI L'HARD DISK!!!

-- 
                                                                                      Fabiao
Fprzb puv yrttr

igniorante per voi? :-((


 :-(
Le cose sono due (in teorie sono molte di piů, ma mi fido della tua
intelligenza)
Esistono applicazioni tipo quelle che girano su Windows anche per Linux,
magari in versione compatibile, ma cmq non sono le stesse e i nomi a volte
sono simili, ne consegue che avrai letto sbagliato.
La seconda ipotesi č che tu mi stia pigliando per il culo, e con la risposta
avrň la conferma.
--
Giovvo

 FONNIGLI L'HARD DISK!!!
Li mortacci, non puoi farmi scoppiare a ridere così nel bel mezzo
dell'ufficio pieno di persone! :-)

 avrň la conferma.
onestamente mi sembra di darti fastidio
mi spiace
a me sembrava di aver letto cosě (ci doveva essere un programma chiamato 
WIN che pensavo servisse a questo)
comunque scusa
met

 WIN che pensavo servisse a questo)
Hai letto male di sicuro
--
Giovvo

Io sono lamer,ma il Thu, 16 May 2002 10:24:36 +0900 "Mutley"
<marco...@LEVAMIhotmail.com> cosi' postando su
it.cultura.cybersocieta.lamer mi fece capire che avevo ancora molto da
imparare:
ROTFL:-)

-- 
                                                                                      Fabiao
Fprzb puv yrttr

 avrò la conferma.
Ok.
Lo ammetto.
:-)
Spero nessuno se ne abbia a male.
E se qualcuno se ne ha a male, faccia un giretto su 
http://www.bonomelli.it/italiano/camomille.htm
 :-)
Abbiamo giocato. Nel mio ufficio ci siamo detti: "C'è un NG di gente 
DAVVERO scoppiata. Vuoi vedere che ora mi presento, sparo due cazzate da 
perfetto lamer (tipo sproteggere programmi freeware, snocciolare qualche 
luogo comune su linux etc. etc.), questi ci cascano e cominciano a darmi 
spago?"
Io ero un po' scettico all'inizio, ma evidentemente avevo torto :-)
Devo dire che ci avete divertito, grazie mille. Continuate così.
E anche tu, Napoleone: continua così, rimani almeno tu a pigliare x il 
culo 'sta masnada di espertoni (generalizzo x il 75%)... seguirò le tue 
gesta da lontano... e non cambiare di una virgola, così il buon Fabiao 
può andare avanti a "rotflascare e lollare", fare le sue enciclopedie 
(ah, fabbia'... mizzichina, fa veramente schifo la roba che hai messo 
online... se un giorno hai bisogno di una mano con l'html o anche solo 
con l'ars dattilografica, fammi un fischio... ;-) )
Vabbe', sono stato qua fin troppo... Ciao, gente... Alla prossima...
Ciao a tutti
	"met" (ahah... se sapeste da dove nasce 'sto fake-nick...)
PS: Dovete ammettere che il tocco finale dell' "unsubscribe" non era 
male, neh? :-))
PPS: Scusa, Giovvo... avrei dovuto ammettere subito che pigliavo x il 
culo... onore all'intuito eheh... cmq volevo che tu arrivassi a capire 
che parlavo di wine, il pirillo che ti permette di eseguire in modo 
simil-nativo applicazioni win16 e win32 sotto linux... avevo già pronte 
2 o 3 perle da aggiungere... avevo anche pronte delle minchiate di 
scorta nel caso avessi "intuito" che parlavo di vmware... ma non ci sei 
arrivato (o forse non ci sei voluto arrivare, boh) quindi questa parte 
dello show ce la siamo persa tutti
PPPS: Secondo me anche Napoleone, nella "vita vera", fa qualcosa tipo 
programmatore/installatore/amministratore di rete/sistemista etc... a 
voi cosa ha fatto credere? :-))
PPPPS: OVVIAMENTE continuerò a lurkare. Lo dico x incoraggiare eventuali 
insultatori o simili a scriverli pure sul NG :-)

 :-(
azz di distro hai?


voi cosa ha fatto credere? :-))
A questo rispondera' Cristiano,credo.


 culo,all'inizio!!!
All'inizio lo prendevo per il culo, poi dato che non so cos'è wine, ci sono
cascato, perdindirindina!
Vi colga la peste
--
Giovvo

  incompatibili, semplice no?
beh, potresti informarti meglio: 
www.winehq.com
 (credo, vado a memoria).
al limite un motore di ricerca puo` aiutare inserendo: wine linux.
[nota personale: se installi linux usa  linux c'e` tutto il software che
ti serve  e anche  di piu`.  io non riavvio  win da  mesi, anche  se son
tentato di vedere le tracce ROM del cd dei PGR ogni volta che accendo il
picci]
ora  un  [ot]: mi  sembrava  di  ricordare  ci fossero  appassionati  di
emulazioner. beh, io  ho appena iniziato, ho installato mame.  ma le ROM
da 
mame.dk
 come le tiro giu`?
cordialita`.
ps. se giustifico (o dovrei dire  formatto, per essere piu` in topic) il
testo con il doppio margine nelle mail e nei post sono lamer?
-- 
Non sono strutturato per poter reggere per molto tempo ancora.

 da 
mame.dk
 come le tiro giu`?
non le tiri più giù :-(
i tizi hanno avuto (stranamente :-P) grane legali e sono stati costretti 
a sospendere il servizio. trovi la "notizia" nella home page di 
mame.dk
, 
nel trafiletto "the end" sulla sinistra...
ciao