|
112
|
Programación / Ingeniería Inversa / Re: Modificar programa Delphi
|
en: 20 Agosto 2010, 03:40 am
|
Abrilo con IDR que te va a dar mas informacion.
yo los habilite, pero no hacen nada al cliclear en ellos.
Busco con IDR los Menues afectados.
0046EAD4 |. 33D2 XOR EDX,EDX ==> EDX=1 HABILITA 0046EAD6 |. 8B83 8C030000 MOV EAX,DWORD PTR DS:[EBX+38C] ; Menu Match 0046EADC |. E8 BFEDFDFF CALL <Chip_1Wi.SetEnabled> ; SetEnabled
0046EABA |. 33D2 XOR EDX,EDX ==> EDX=1 HABILITA 0046EABC |. 8B83 9C030000 MOV EAX,DWORD PTR DS:[EBX+39C] ; Search
0046EAC7 |. 33D2 XOR EDX,EDX ==> EDX=1 HABILITA 0046EAC9 |. 8B83 48030000 MOV EAX,DWORD PTR DS:[EBX+348] ; write 0046EACF |. E8 CCEDFDFF CALL <Chip_1Wi.SetEnabled>
Solo cambia edx por 1 para habilitarlos.
suerte
|
|
|
115
|
Programación / Ingeniería Inversa / Re: Ayuda para crackear un programa
|
en: 30 Julio 2010, 00:31 am
|
Gracias tena, y si lo del loader es porque se me cierra la aplicacion. Lo que no se es como llegaste a esa dirección para parcharla y que no se cierre. Yo puse un bp ExitProcess y Olly se detiene antes de salir pero no logro llegar a ese lugar. Disculpen mi ignorancia pero ¿qué es el SetDataFile?
Saludos
Sinceramente, tuve el mismo problema que vos y no encontre el motivo del que se cerrara, pero despues dijo ahi Nomada que era por la Fecha de Modificacion ( me gustaria saber como lo averiguo ) y entonces con estas apis: GetFileTime FileTimeToLocalFileTime FileTimeToDosDateTime me fui acercando, la que mejor te deja es la ultima, ahi vas dando run y cuando te sale en los registros el nombre del ejecutable, das Alt+F9 para ir al codigo y llegas aca. 00E265B6 |. E8 29235EFF CALL <JMP.&kernel32.FileTimeToDosDateTime> ; \FileTimeToDosDateTime 00E265BB |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00E265BE |. E8 ADAD5EFF CALL SimplyGe.00411370 00E265C3 |. DD5D E8 FSTP QWORD PTR SS:[EBP-18] 00E265C6 |. 9B WAIT 00E265C7 |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; /Arg2 00E265CA |. FF75 E8 PUSH DWORD PTR SS:[EBP-18] ; |Arg1 00E265CD |. 8BD3 MOV EDX,EBX ; | 00E265CF |. B8 E865E200 MOV EAX,SimplyGe.00E265E8 ; |ASCII "yyddmm" 00E265D4 |. E8 5BD75EFF CALL SimplyGe.00413D34 ; \SimplyGe.00413D34
luego pasas el ret y llegas a la comparacion de las fechas. 0 0E29399 MOV EAX,DWORD PTR SS:[EBP-3BC] ; fecha modificado del parchado 00E2939F MOV EDX,DWORD PTR DS:[EEF494] ; SimplyGe.00EFF914 00E293A5 MOV EDX,DWORD PTR DS:[EDX] ; fecha modificad deloriginal 00E293A7 CALL SimplyGe.00405E70 00E293AC JE SimplyGe.00E29443 ; la salvacion y ahi parchamos por un jmp. slds
|
|
|
118
|
Programación / Ingeniería Inversa / Re: Ayuda para crackear un programa
|
en: 29 Julio 2010, 16:35 pm
|
Felicitaciones gaston, Lo del Loader es porque se cierra la aplicacion? Porque si es asi, como bien dijo Nomada se puede usar el SetDataFile para cambiar la fecha de modificacion y ya se soluciona el problema. ó parchando aqui.. 00E29399 . 8B85 44FCFFFF MOV EAX,DWORD PTR SS:[EBP-3BC] ; fecha parcheado 00E2939F . 8B15 94F4EE00 MOV EDX,DWORD PTR DS:[EEF494] ; SimplyGe.00EFF914 00E293A5 . 8B12 MOV EDX,DWORD PTR DS:[EDX] ; fecha original 00E293A7 . E8 C4CA5DFF CALL SimplyGe.00405E70 00E293AC . 0F84 91000000 JE SimplyGe.00E29443 cambiando el JE por un JMP ya no se cierra. slds
|
|
|
119
|
Programación / Ingeniería Inversa / Re: Ayuda ASProtect SKE 2.1x o 2.2
|
en: 28 Julio 2010, 23:58 pm
|
CITO PALABRAS DE AMERIKANO: <amerikano> fijate que el script que hice va de maravilla <amerikano> lo unico <amerikano> fue que al dumpear <amerikano> no andaba <amerikano> y la sorpresa fue que tenia vm Con respecto a la VM, Amerikano esta trabajando duro en ese tema desde hace un tiempo, asi que dentro de pronto esperamos ver su trabajo. Aqui dejo el script que hizo: var dirCall var dirCode var sizeCode var cont var dir var dirR var dirMagic var dirMagic2 var dirMagic3 var asprotect var api var iniIat var sizeIat var temp var modulo1 var modulo2 var nApi1 var nApi2
mov cont, 0 mov asprotect, 0 mov dirCode, 401000 mov sizeCode, 21000 mov iniIat, 422000 mov finIat, 4222e8 mov dirCall, 1230000 mov temp, 0
start:
eoe cont run
cont:
inc cont cmp cont, 2 //Compruebo si es la segunda excepcion
je oep
jmp start
oep: bphws 041e042, "x" //oep run eob busca busca: find dirCode, #e8??????00# cmp $RESULT, 0 je fin
compruebaCall: mov eax, $RESULT add eax, [eax+1] add eax, 5 cmp eax, dirCall
je contBusqueda //Si es igual seguimos mov dirCode, $RESULT inc dirCode jmp busca contBusqueda:
mov dir, $RESULT
cmp dirMagic, 0 jnz contBusqueda2 //Salta si no esta todavia el hbp en la zona de asprotect findmem #508b45f8508b4510#
cmp $RESULT,0 je fin
mov dirMagic, $RESULT bphws dirMagic, "x" //Direccion de asprotect donde veremos las apis
contBusqueda2:
cmp dirMagic2, 0 jnz contBusqueda3
findmem #576a008d4de0#
cmp $RESULT,0
je fin
mov dirMagic2, $RESULT
bphws dirMagic2, "x" //Direccion de asprotect donde veremos las apis
contBusqueda3:
cmp dirMagic3, 0 jnz continua
findmem #508b45f883c00450#
cmp $RESULT,0
je fin
mov dirMagic3, $RESULT
bphws dirMagic3, "x" //Direccion de asprotect donde veremos las apis
continua: mov eip, dir
eob obtieneApi run
obtieneApi: mov api, eax gn eax
cmp eip, dirMagic je api cmp eip, dirMagic2 je api cmp eip, dirMagic3 jnz error
api:
mov modulo1, $RESULT_1 mov nApi1, $RESULT_2 mov ecx, iniIat mov eax, iniIat jmp buscaSiEsta //Primero miramos si la api ya esta en la iat para no tener que insertarlo nuevamente
contObtieneValor:
cmp ecx, finIat je finIat
obtieneValor:
mov temp, [ecx]
cmp temp, 0 je incrementa
gn temp
cmp $RESULT_1, 0 //Comprueba si es un valor trucho ya que no tendria modulo asociado
je insertaApi //Si es trucho insertamos la api aqui add ecx, 4 jmp obtieneValor
incrementa: add ecx,4 jmp obtieneValor
insertaApi: mov [ecx], api mov dirR, ecx reparaCall: mov [dir], 15ff //reparamos el call mov [dir+2], dirR //Insertamos la posicion de la iat en el call add dir, 5 mov dirCode, dir
jmp busca buscaSiEsta:
cmp eax, finIat je contObtieneValor //Llegamos al fin de la IAT y no hubo coincidencias mov edx, [eax] gn edx cmp $RESULT_2, nApi1 mov dirR, eax je reparaCall add eax, 4 jmp buscaSiEsta error: msg "No se paro en ningun hbp" ret
finIat: msg "Se ha terminado la tarea" ret
fin: msg "Se ha terminado la tarea" ret ret <amerikano> solo deberias cambiarle la direccion a las que se dirigen las calls y ya. slds
|
|
|
|
|
|
|