blah blah blah. q3 cd check
aburrido? ja, me hace reir (lo hace, en serio)
wdasm quake3.exe . . buscar en import \ getdrivetypea . .
saluda al CD Check
:004400C0
81EC84000000
sub esp, 00000084 :004400C6
56
push esi
* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
:004400C7
8B3590104B00
mov esi, dword ptr [004B1090] :004400CD
C64424053A
mov [esp+05], 3A ; ':'
:004400D2
C64424065C
mov [esp+06], 5C ; '\'
:004400D7
C644240700
mov [esp+07], 00 ;)
:004400DC
C644240463
mov [esp+04], 63 ; en este
punto, [esp+4] == 'c:\',0
* Referenced by a (U)nconditional or (C)onditional Jump at
Address: :00440141(C)
:004400E1
8D442404
lea eax, dword ptr [esp+04] :004400E5
50
push
eax
; push 'c:\',0 :004400E6
FFD6
call
esi
; llama a getdrivetypea :004400E8
83F805
cmp eax, 00000005 ; Es un
CD ROm? :004400EB
7548
jne
00440135
; No, mira las demas else....
* Possible StringData Ref from Data Obj ->"quake3"
:004400ED
68A81A4C00
push
004C1AA8
; push 'quake3',0 :004400F2
8D4C2408
lea ecx, dword ptr [esp+08] :004400F6
51
push
ecx
; push 'c:\',0
; o la letra que sea tu cd-rom * Possible StringData Ref
from Data Obj ->"%s%s" ;se usa en el
formato de cadenas. string/string
:004400F7
68088B4B00
push 004B8B08 :004400FC
68F0895C00
push 005C89F0 :00440101
E899EE0500
call
0049EF9F
; despues de esto, tenemos 'c:\quake3',0 ?
* Possible StringData Ref from Data Obj ->"quake3.exe"
:00440106
689C1A4C00
push
004C1A9C
; push 'quake3.exe',0 :0044010B
68F0895C00
push 005C89F0 :00440110
8D542420
lea edx, dword ptr [esp+20] ; es nuestra cadena
formateada ?
* Possible StringData Ref from Data Obj
->"%s\%s" ; string '\' string
:00440114
68941A4C00
push 004C1A94 :00440119
52
push edx :0044011A
E880EE0500
call 0049EF9F ; despues de esto,
'c:\quake3\quake3.exe',0 ? :0044011F
8D442428
lea eax, dword ptr [esp+28]
* Possible StringData Ref from Data Obj
->"r" ; read \ readonly
.. ..
:00440123
68901A4C00
push 004C1A90 :00440128
50
push eax :00440129
E877F90500
call
0049FAA5
; leer\cargar\hacer sth con el archivo :0044012E
83C428
add esp, 00000028 ; fija la pila con todas las
cademas formateadas :00440131
85C0
test eax,
eax
; eax!=0 == buen chico :00440133
7518
jne 0044014D
quake3 es un poco puta . . y tiene 2 de estas
verificaciones . . la siguiente verificacion es ejecutada
primero, pero es 100% igual a la otra . . si forzamos a
que piense que quake3.exe esta cargado. obtendremos un
crash en 49FA00 o algo asi. asi que . vamos a abrir quake3.exe
primero apagamos . . donde esta puesta la letra de la
unidad 'c:\',0. y mira si es un cdrom, y coje el directorio
actual. y si es un Cd-Rom para el checkeo ..
'.\',0,0 . . :d
edita la primera parte del codigo para que se parezca a
esta .. (y el otro codigo de cd check , @00440170)
:004400C7
8B3590104B00
mov esi, dword ptr [004B1090] :004400CD
C64424055C
mov [esp+05], 5C ; '\'
:004400D2
C644240600
mov [esp+06], 00 :004400D7
C644240700
mov [esp+07], 00 :004400DC
C64424042E
mov [esp+04], 2E ; en este
punto, [esp+4] == '.\',0,0
* Referenced by a (U)nconditional or (C)onditional Jump at
Address: :00440141(C)
:004400E1
8D442404
lea eax, dword ptr [esp+04] :004400E5
50
push eax
; push '.\',0,0 :004400E6
FFD6
call esi
; llama a getdrivetypea :004400E8
83F805
cmp eax, 00000005 ;no es un cd rom. pero no hay problema
:004400EB
7500
jne 004401ED ; mata el salto,
efectivamente nopealo (NOP)
ahora hemos de joder el codigo de formato. no queremos el
directorio '.\quake3' a que no?
solo mata la jodida llamada.
:004400ED
68A81A4C00
push 004C1AA8 ; push 'quake3',0
:004400F2
8D4C2408
lea ecx, dword ptr [esp+08] :004400F6
51
push ecx
; push '.\',0,0
* Possible StringData Ref from Data Obj
->"%s%s" ; used in string formatting .
string/string
:004400F7
68088B4B00
push 004B8B08 :004400FC
68F0895C00
push 005C89F0 :00440101
B899EE0500
mov eax, 0005EE99 ; camino cruel para matar la llamadal . es
B8 ..
; pero por lo menos no tenemos '.\quake3',0 ahora
ok, 90% fixed. Ahora la siguiente parte del formato de
cadenas . . el formato es '%s\%s' y si se ejecuta nosotros
tenemos que acabarla con '.\\quake3.exe',0 . . y una '\'
extra que es malo . . buscamos como texto '%s\%s',0 en
quake3.exe . . hazlo 2 veces. pero una de estas esta muy cerca
de 'quake3' & 'quake3.exe'. Tenemos que adivinar cual
es el correcto. .. 'zen cracking'
%s\%s...quake3.exe..quake3.. yaddayaddayadda .
cambialo a '%s%s',0 . . i.e. quita la '\' .
excelente . ahora .. tenemos que joder este codigo ( y su
espejo..)
* Possible StringData Ref from Data Obj ->"quake3.exe"
:00440106
689C1A4C00
push
004C1A9C
; push 'quake3.exe',0 :0044010B
68F0895C00
push 005C89F0 :00440110
8D542420
lea edx, dword ptr [esp+20] ; nuestra cadena
formateada anteriormente?
; '.\',0 hehehe
* Possible StringData Ref from Data Obj
->"%s%s" ; stringstring
:00440114
68941A4C00
push 004C1A94 :00440119
52
push edx :0044011A
E880EE0500
call 0049EF9F ; despues esto,
'.\quake3.exe',0
boom! haha . estupido tutorial . pero quake3 funciona ahora
sin el cd! (si has parcheado los 2 check . .. )
entonces que hemos aprendido? q3 checkea si esta el
propio exe en el cd rom .. . 'x:\quake3\quake3.exe',0
si matamos el cd check, peta. pero, le hechamos una mirada
al disco duro buscando este 'importante' fichero . . por
lo que, tendremos que parchearlo para k busque
'.\quake3.exe',0 que se puede encontrar muy facilmente,
por que si no esta instalado, en el directorio actual,
como quieres jugar!?
r!sc .. http://csir.cjb.net
eVC/dVN rtl 2k !
Traducido por
DS
DeeSe - ©TeaM HeaT 16, 2000 para mas informacion: deese2k@yahoo.es
|