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
|