elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 [131] 132 133 134 135 136 137 138 139 140 141
1301  Programación / Ingeniería Inversa / Re: 3 Crackmes by Bocvk en: 16 Agosto 2008, 21:40 pm
jej igual para la 3ra igual falta complementar
no he hecho ningun keygen de ninguno asi que si alguien quiere hacerlo
pues no esta mal :)
1302  Programación / Ingeniería Inversa / Re: ayudenme alguien que sepa como crakear en: 16 Agosto 2008, 21:39 pm
usa el w32dasm para abrirlo
hay otros depuradores para 16 bytes

el que te sugiero es que comienzes a echarle mano al IDA porque creo que se asemeja un poco mas a la realidad

suerte en tu comienzo
saludos Apuromafo
pd:ollydb es para los de 32 bytes por eso no te sirvio :)
tambien puede ser usado en 64bytes (con los famosos rax y todo eso)

jeje saludos espero te sirva el dato
1303  Programación / Ingeniería Inversa / Re: programa en: 16 Agosto 2008, 21:37 pm

makinavaja3500

pues ollydbg y un poco de conocimiento de ingenieria inversa
para lo que es desempacar
animate a leer el topic de si eres nuevo, para que vayas aprendiendo a usarlo y guardar de paso el cambio

liurap..
realmente cambiaste algun salto quizas antes de la api por eso no la usa

aveces lo mas comun es enterarse porque no deberia de saltar

con eso despues se entiende los algoritmos

pero bueno, creo que liurap te ha dado una gran pista o llave para vencerlo

saludos y me alegra ver que entre todos se ayuden  :)

saludos Apuromafo
1304  Programación / Ingeniería Inversa / Re: Como poner API IsDebbuggerPresent() en C++! en: 16 Agosto 2008, 21:34 pm
es que isdebug present como bien decia, pues solo verifica que sea asi
falta solo que salte y listo

pero el gran detalle es cuando escribes que haga lo de la api
fs

bueno no explico porque con el tiempo lo aprenden

espero a la proxima coloques de titulo+crackme
porque me puse a leer y veo que pusiste un reto que ni sabia que estaba, o hace tiempo ya hubiera caido

jeje bueno saludos espero te guste el escrito explicatorio de como encontre el serial

:) saludos Apuromafo
1305  Programación / Ingeniería Inversa / Re: Como poner API IsDebbuggerPresent() en C++! en: 16 Agosto 2008, 02:09 am
Aiba! :O! Es verdad XDD!! Hay q ver lo q puede cambiar un solo signo.  . jajaja, muxas asias tena no me habia dao cuenta ;) ahora el code funciona a la perfeccion :D

Ahi les dejo el crackme; a ver si me dicen cual es la pass correcta :D

http://rapidshare.com/files/137601522/Crackme_Liu.exe.html

Un saludo

el password es  "H4ck3r" sin las comillas

ahora bien vamos lento

la api pues descubre un lugar si esta escrito,
y si esta detectado o no, depende si es un diferente de 0 ,
valor de  1->detectado
valor de 0->no detectado

ahora bien como puede pasarse sin tener que nopearlo el call a exit?

Citar
004014C4  |.  85C0          test    eax, eax                         ; |

no es necesario nopear--

cambienlo a
Citar
004014C4      33C0          xor     eax, eax
(colocando espacio o assembler)


bueno haciendo el tutorial para resolverlo
bien dije ya el pass
sale lo siguiente al colocarla

Password: H4ck3r

Access Granted :D! Pass:: cooomemel4


Password: cooomemel4

Access Denied :(

porciacaso jeje

Solucion Crackme de liurap

no sabia que habias puesto un crackme
pero demos la solucion, aprovechando que tengo tiempo

pues tenemos la estructura de un c++

Citar
00401220 > $  55            push    ebp
00401221   .  89E5          mov     ebp, esp
00401223   .  83EC 08       sub     esp, 8
00401226   .  C70424 010000>mov     dword ptr [esp], 1
0040122D   .  FF15 0C514000 call    dword ptr [<&msvcrt.__set_app_ty>;  msvcrt.__set_app_type
00401233   .  E8 C8FEFFFF   call    00401100

entramos en el call

entramos en un procedimiento que comienza con push ebp
y mas o menos al terminar se ve esto
Citar
004011E2  |.  E8 A9000000   call    00401290
004011E7  |.  89C3          mov     ebx, eax                         ; |
004011E9  |.  E8 020A0000   call    <jmp.&msvcrt._cexit>             ; |[msvcrt._cexit
004011EE  |.  891C24        mov     dword ptr [esp], ebx             ; |
004011F1  |.  E8 3A0B0000   call    <jmp.&KERNEL32.ExitProcess>      ; \ExitProcess
004011F6  |>  894424 04     mov     dword ptr [esp+4], eax           ; |
004011FA  |.  8B15 14514000 mov     edx, dword ptr [<&msvcrt._iob>]  ; |msvcrt._iob
00401200  |.  8B42 10       mov     eax, dword ptr [edx+10]          ; |
00401203  |.  890424        mov     dword ptr [esp], eax             ; |

entrando en ese call , estamos en el procedimiento del crackme
claramente para quien no sabia que pasa ahi, pues comenta que hay otra manera
Citar
00401465  |.  C685 DEFEFFFF>mov     byte ptr [ebp-122], 72           ; ||
0040146C  |.  C685 DFFEFFFF>mov     byte ptr [ebp-121], 64           ; ||
00401473  |.  C685 E0FEFFFF>mov     byte ptr [ebp-120], 3A           ; ||
0040147A  |.  C685 E1FEFFFF>mov     byte ptr [ebp-11F], 20           ; ||
00401481  |.  8D8D 58FEFFFF lea     ecx, dword ptr [ebp-1A8]         ; ||
00401487  |.  BA 04304000   mov     edx, 00403004                    ; ||ASCII "Que buscas, cadenas de textos ?? haya otra manera ;) || CRACKME MEDIUM COMPILED BY LIURAP! www.fotolog.com/liurap"
0040148C  |.  B8 73000000   mov     eax, 73                          ; ||
00401491  |.  894424 08     mov     dword ptr [esp+8], eax           ; ||

bueno les explique ayer creo el crackme que habian unos codigos ascii

ahora bien el crackme de ahora requiere que sepan que pasa


sigamos
Citar
0040149C  |.  E8 AF070000   call    <jmp.&msvcrt.memcpy>             ; |\memcpy
004014A1  |.  C785 44FEFFFF>mov     dword ptr [ebp-1BC], 17          ; |
004014AB  |.  C785 40FEFFFF>mov     dword ptr [ebp-1C0], 2B          ; |
004014B5  |.  C785 3CFEFFFF>mov     dword ptr [ebp-1C4], 1C          ; |
004014BF  |.  E8 7C080000   call    <jmp.&KERNEL32.IsDebuggerPresent>; |[IsDebuggerPresent
004014C4      85C0          test    eax, eax
004014C6  |.  74 33         je      short 004014FB                   ; |
004014C8  |.  C74424 0C 000>mov     dword ptr [esp+C], 0             ; |
004014D0  |.  C74424 08 773>mov     dword ptr [esp+8], 00403077      ; |ASCII "Liurap dice: "
004014D8  |.  C74424 04 883>mov     dword ptr [esp+4], 00403088      ; |ASCII "Eyy!! compadreee!! buen intento!; anda, nopeame pa k te deje continuar ;)"
004014E0  |.  C70424 000000>mov     dword ptr [esp], 0               ; |
004014E7  |.  E8 24080000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA


pues ahi se muestra que hay un mensaje cuando somos detectados, y pues la forma que podemos evitarla es pues evitando que nos detecte

asi que no le haremos caso y no nopearemos
pues cambiaremos a xor eax,eax obligando al salto a saltar

despues buscamos el mensaje malo

normalmente uno supone algunas cosas
pero en este caso todo se ve aqui

00401692  |.  894424 04     |mov     dword ptr [esp+4], eax          ; |
00401696  |.  C70424 D23040>|mov     dword ptr [esp], 004030D2       ; |ASCII "%c"
0040169D  |.  E8 FE050000   |call    <jmp.&msvcrt.printf>            ; \printf
004016A2  |.  8D85 50FEFFFF |lea     eax, dword ptr [ebp-1B0]
004016A8  |.  FF00          |inc     dword ptr [eax]
004016AA  |.^ EB CC         \jmp     short 00401678
004016AC  |>  C70424 D53040>mov     dword ptr [esp], 004030D5        ; |
004016B3  |.  E8 E8050000   call    <jmp.&msvcrt.printf>             ; \printf
004016B8  |.  C785 4CFEFFFF>mov     dword ptr [ebp-1B4], 0
004016C2  |>  83BD 4CFEFFFF>/cmp     dword ptr [ebp-1B4], 0F         ; |

uno debe ser el chico bueno y otro el malo

claramente el malo tendra mas de 1 salto normalmente

y pues
004016AC  |> \C70424 D53040>mov     dword ptr [esp], 004030D5        ; |


este tiene varios saltos


colocamos un bp en cada cmp     edx, eax     que esta sobre el salto
Citar
00401581  |.  2B85 44FEFFFF sub     eax, dword ptr [ebp-1BC]         ; |5f- 17-> valor
00401587  |.  39C2          cmp     edx, eax                         ; |comparacion entre el 48 y el de nosotros :)
00401589  |.  0F85 1D010000 jnz     004016AC                         ; |



y claramente vemos que 48 es el valor correcto

ahora bien ese 48 representa a la letra H


siguiendo se encontraran con las otras letras

pero primero
eax=00000048
edx=00000061
 esta algo asi
cambiamos el valor de edx a 48 para pasar tranquilo
eax=00000048
edx=00000048

seguimos

004015AE  |.  2B85 3CFEFFFF sub     eax, dword ptr [ebp-1C4]         ; |0cf-1c
004015B4  |.  83C0 64       add     eax, 64                          ; |add 64
004015B7  |.  39C1          cmp     ecx, eax                         ; |cmp 34 v/s mio
004015B9  |.  0F85 ED000000 jnz     004016AC                         ; |

ahi sacamos el segundo que es 34

y bueno seguimos hacia abajo hasta completar todo



ahora bien todos esos numeros y valores vienen de una tabla
http://www.ascii.cl/es/codigos-html.htm

bueno saludos y espero le sirva como se hacia :)

bendiciones esta resuelto :-)
1306  Programación / Ingeniería Inversa / Re: programa en: 16 Agosto 2008, 01:32 am
yo en mi tiempo antes pensaba que crackear era mover el archivo registrado por el normal, pero con el tiempo aprendi que eran esos mismos programas que estaban editados, en algo

y ese algo lo aprendi y pues realmente me ayudo con el tema de sacar troyanos en mi pc , pues en esos tiempos los antivirus no tenian como detectarlos

saludos y que bueno que te sirva la informacion, nos leemos

se cuida bendiciones
Apuromafo
1307  Programación / Ingeniería Inversa / Re: Amigos mi primer reto , Espero una luz xDD...!!! en: 15 Agosto 2008, 04:25 am
simplemente es ir en orden y no perderse

cuando te pierdes no va porque no sepas usarlo, sino porque no sabes que estas haciendo , no estas acostumbrado a eso
proyectate paso a paso
mira que hacen compara busca lo que encontraron los otros , pero cuando ya sepas que lo que te dicen es el resumen de largas horas de busqueda creeme que ahi entenderas que la ayuda que te han dicho es algo nuevo

saludo
1308  Programación / Ingeniería Inversa / Re: 3 Crackmes by Bocvk en: 15 Agosto 2008, 01:50 am
Solucion al crackme 1 y 2 y mi solucion para mi nombre 3

solucion 1
 "dwfdlrjt"
solucion 2
"qd|~sddwd"
solucion 3
nombre
serial

apuromafo
]ny|oa]xo


CRACKME 1
pues colocamos un valor cualquiera para ver si rompe en el dialogo, pero no aparece nada
revisamos y hay unalinea llamada cmp eax, 8
Citar
0040108F  |.  E8 0A010000   call    <jmp.&user32.GetDlgItemTextA>    ; \GetDlgItemTextA
00401094  |.  83F8 08       cmp     eax, 8

Citar
00401097  |.  0F85 A4000000 jnz     00401141


ahi dice que compara con 8 valores sean letras o numeros

Citar
004010B6  |.  68 9C314000   push    0040319C                         ; /String2 =
004010BB  |.  68 4C314000   push    0040314C                         ; |String1 =
004010C0  |.  E8 C7000000   call    <jmp.&kernel32.lstrcmpiA>        ; \lstrcmpiA

coloco como pass 11111111 y aparece la comparacion entre

Citar
004010B6  |.  68 9C314000   push    0040319C                         ; /String2 = "fudfnphv"
004010BB  |.  68 4C314000   push    0040314C                         ; |String1 = "33333333"

por lo tanto lo sube en 3 numeros o letras

ahora bien donde ocurrio todo esto
Citar
0040109F  |.  68 74314000   push    00403174                         ; |Buffer = Crackme_.00403174
004010A4  |.  68 EE030000   push    3EE                              ; |ControlID = 3EE (1006.)
004010A9  |.  FF75 08       push    dword ptr [ebp+8]                ; |hWnd
004010AC  |.  E8 ED000000   call    <jmp.&user32.GetDlgItemTextA>    ; \GetDlgItemTextA
004010B1  |.  E8 94000000   call    0040114A

pues hay un call

Citar
00403174=00403174 (ASCII "crackmes")
el push dice crackmes


bueno pero lo importante es que sigue el codigo

Citar
0040114A  /$  33D2          xor     edx, edx
0040114C  |.  33C9          xor     ecx, ecx
0040114E  |>  8B91 24314000 /mov     edx, dword ptr [ecx+403124]
00401154  |.  83F2 02       |xor     edx, 2
00401157  |.  8991 4C314000 |mov     dword ptr [ecx+40314C], edx
0040115D  |.  41            |inc     ecx
0040115E  |.  3BC8          |cmp     ecx, eax
00401160  |.  74 02         |je      short 00401164
00401162  |.^ EB EA         \jmp     short 0040114E

ese es el primer loop

y en el segundo encuentro el causante de crear el 111 en 333

asi que lo aprovecharemos para encontrar el serial
Citar
0040116E      83C2 03       add     edx, 3

lo cambio a
Citar
0040116E      83EA 03       sub     edx, 3

y ejecutamos
Citar

00401164  |>  33D2          xor     edx, edx
00401166  |.  33C9          xor     ecx, ecx
00401168  |>  8B91 74314000 /mov     edx, dword ptr [ecx+403174]
0040116E      83EA 03       sub     edx, 3
00401171  |.  8991 9C314000 |mov     dword ptr [ecx+40319C], edx
00401177  |.  41            |inc     ecx
00401178  |.  3BC8          |cmp     ecx, eax
0040117A  |.  74 02         |je      short 0040117E
0040117C  |.^ EB EA         \jmp     short 00401168
0040117E  \>  C3            retn
y como sabemos que  el correcto era
0040319C=0040319C (ASCII "fudfnphv")
pues colocamos en practica si quieren primero 33333333 y aparecera 11111111 asi que lo usamos ahora para saber el correcto

y aparece lo siguiente
Citar
0040314C=0040314C (ASCII "dwfdlrjt")

copio el valor y restauro el algoritmo a como estaba, o mejor dicho cierro el olly e ingreso el valor "dwfdlrjt"


---------------------------
Bien
---------------------------
Lo lograste, espero que este crackme haya sido de tu agrado
---------------------------
Aceptar   
---------------------------

sep fue de mi agrado
---------------------------
Información
---------------------------
   <> Crackme #1 by Bocvk <>

           Encuentra el serial

          bocvk@hotmail.com

    Dedicado a CracksLatinos

               Perú - 2008
---------------------------
Aceptar   
---------------------------


CRACKME 2

ahora el 2do

pues comenzamos con lo mismo
Citar
00401094  |.  83F8 09       cmp     eax, 9
00401097  |.  0F85 A4000000 jnz     00401141
0040109D  |.  6A 0A         push    0A                               ; /Count = A (10.)
0040109F  |.  68 80314000   push    00403180                         ; |Buffer = Crackme_.00403180
004010A4  |.  68 EE030000   push    3EE                              ; |ControlID = 3EE (1006.)
004010A9  |.  FF75 08       push    dword ptr [ebp+8]                ; |hWnd
004010AC  |.  E8 13010000   call    <jmp.&user32.GetDlgItemTextA>    ; \GetDlgItemTextA
004010B1  |.  E8 94000000   call    0040114A
004010B6      68 A8314000   push    004031A8
004010BB  |.  68 58314000   push    00403158
004010C0  |.  E8 BB000000   call    00401180
004010C5  |.  0BC0          or      eax, eax
004010C7  |.  74 16         je      short 004010DF
004010C9  |.  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004010CB  |.  68 FE304000   push    004030FE                         ; |Title = "Bien"
004010D0  |.  68 00304000   push    00403000                         ; |Text = "Lo lograste, espero que este crackme haya sido de tu agrado"
004010D5  |.  FF75 08       push    dword ptr [ebp+8]                ; |hOwner
004010D8  |.  E8 F3000000   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA


tenemos ahora 9 letras a comparar
y como tengo experiencia en el tema , cuando son numeros pequeños como la solucion de arriba se puede, pero aca ya lo considero un poco mas grande, asi que bueno vamos a el


analizemos de otra forma
si antes la palabra crackmes lo convertia a un valor y ese valor era comparado con el xor y proximamente con el add  pues debemos entender algo

todo xor puede ser reversible
por lo tanto tenemos que a xor b= c
c xor b = a
y a xor c= b

pues en ese sentido mas o menos seria lo de ahora


ahora bien son 3 algoritmos a entender o 3 trozos de codigo a entender
1)
Citar
0040114E  |> /8B91 30314000 /mov     edx, dword ptr [ecx+403130]
00401154  |. |83F2 08       |xor     edx, 8
00401157  |. |8991 58314000 |mov     dword ptr [ecx+403158], edx
0040115D  |. |41            |inc     ecx
0040115E  |. |3BC8          |cmp     ecx, eax
00401160  |. |74 02         |je      short 00401164
00401162  |.^\EB EA         \jmp     short 0040114E

2)
Citar
00401168  |> /8B91 80314000 /mov     edx, dword ptr [ecx+403180]
0040116E     |83C2 07       add     edx, 7
00401171  |. |8991 A8314000 |mov     dword ptr [ecx+4031A8], edx
00401177  |. |41            |inc     ecx
00401178  |. |3BC8          |cmp     ecx, eax
0040117A  |. |74 02         |je      short 0040117E
0040117C  |.^\EB EA         \jmp     short 00401168

3)
Citar
00401180  /$  55            push    ebp
00401181  |.  8BEC          mov     ebp, esp
00401183  |.  56            push    esi
00401184  |.  8B4D 08       mov     ecx, dword ptr [ebp+8]
00401187  |.  8B55 0C       mov     edx, dword ptr [ebp+C]
0040118A  |.  33F6          xor     esi, esi
0040118C  |>  8A040E        /mov     al, byte ptr [esi+ecx]
0040118F  |.  3A0416        |cmp     al, byte ptr [esi+edx]
00401192  |.  75 10         |jnz     short 004011A4
00401194  |.  83C6 01       |add     esi, 1
00401197  |.  84C0          |test    al, al
00401199  |.^ 75 F1         \jnz     short 0040118C
ahora bien un sitio estrategico para entender el final de todo esto es en  40118f
 pues ahi comparara valor por valor

ahora bien comenzemos con un valor que no corresponde

ejemplo 1111111111

son 9 unos

cuando lleguemos en una ejecucion con un bp en
004010B1  |.  E8 94000000   call    0040114A

pues se vera un valor
Citar
00403180=00403180 (ASCII "remoteexe")

a partir de este valor sera convertido  y verificado nuestro serial, pero obviamente no sera tan facil, o sera medianamente facil si se tiene paciencia

vamos
 a convertirlo en otro ejemplo 1111
el resultado proximo seria un 888888888

pero eso es para referencia
osea solo ese valor se formaria
pero para las letras pues recomiendo este segundo metodo para resolverlo y veran que se entetendran


detenidos en el
Citar
0040118F  |.  3A0416        |cmp     al, byte ptr [esi+edx]

ds:[004031A8]=79 ('y')
al=39 ('9')
aparece la famosa comparacion
aparece una y y yo tengo un 9, ese 9 proviene del 1er uno

asi que a modo de juego si cambio la y por el 1 que teniamos tendremos el valor real

es facil verlo, pero explicarlo no lo es tanto, pues solo lo comento para que salga mas facil resolverlo

sigamos
ahora cambio mi clave 111111111 a y11111111

y veo en mi lugar estrategico
Citar
ds:[004031A8]=79 ('y')
al=71 ('q')

una q, bien, si ahora a esa q , la coloco en el lugar, puede que de y, pues seria el xor inverso

y xor desconocido= valor de ahora

y entre el mismo xor, pues es divertido ver esto

sigamos, no quiero que se enreden, vean que aparece una q
ahora cambiamos la palabra a
q11111111

y nuestro lugar ahora dice
Citar
ds:[004031A8]=79 ('y')
al=79 ('y')
impresionante o no es una forma de resolver los famosos estilos de xor tuvimos el valor valido :)


ahora sigamos


si juntara todo pues seria algo asi
Citar
004031A8  79 6C 74 76 7B 6C 6C 7F 6C                       yltv{lll
esos signos son raros, asi que debo ir lento

solo debo hacer es mirar el nuevo valor, copiarlo
y ver el valor nuevo que debo ingresar

pues me aprovecho que ya se donde esta el valor bueno y pego todos esos valores y me muestra lo siguiente
Citar
ds:[004031A8]=79 ('y')
al=71 ('q')

ahora el truco esta en anotar el valor de al y falsear el nuevo valor

anoto el q y edito ese q para que sea 79
(modify register)

dejandolo asi

Citar
ds:[004031A8]=79 ('y')
al=79 ('y')

ahora bien como ya tenemos un notepad amigo, pues pegamos los valores y los dejamos a mano

primera letra

Citar
ds:[004031A8]=79 ('y')
al=71 ('q')


para el segundo
Citar
ds:[004031A9]=6C ('l')
al=64 ('d')

para la tercera letra
Citar
ds:[004031AA]=74 ('t')
al=7C ('|')

para la cuarta
Citar
ds:[004031AB]=76 ('v')
al=7E ('~')

para la quinta
Citar
ds:[004031AC]=7B ('{')
al=73 ('s')

para la sexta
Citar
ds:[004031AD]=6C ('l')
al=64 ('d')

para la septima
Citar
ds:[004031AE]=6C ('l')
al=64 ('d')
para la octava
Citar
ds:[004031AF]=7F
al=77 ('w')

para la novena
Citar
ds:[004031B0]=6C ('l')
al=64 ('d')
y despues saldra esto
Citar
ds:[004031B1]=00
al=00
ahora bien juntamos todo

para cuando llegue a
Citar
004010C5  |.  0BC0          or      eax, eax
eax valdra eax=00000009

y seria solucionado


ahora bien miramos el resultado
Citar
00403158=00403158 (ASCII "qd|~sddwd")

interesante :)

---------------------------
Bien
---------------------------
Lo lograste, espero que este crackme haya sido de tu agrado
---------------------------
Aceptar   
---------------------------


ahora bien demosle a pegar ese serial "qd|~sddwd"

y esta resuelto :) y sin tener que modificar a un comando que puede que desconozcan

saludos

---------------------------
Información
---------------------------
   <> Crackme #2 by Bocvk <>



           Encuentra el serial

          bocvk@hotmail.com

    Dedicado a CracksLatinos

               Perú - 2008
---------------------------
Aceptar   
---------------------------


TERCER CRACKME


pues plantea nuestro amigo un reto novedoso

hacer que 2 loops sean iguales desde matematicas diferentes
encontre 1 entre un mini analisis
suma
xoreo
resta


y la segunda

suma
 xoreo
resta

ahora bien los valores son diferentes


el truco es el siguiente
encontrar la logica de 1 letra es suficiente para encontrar las posibles letras




para nombre  con la letra j (sobre 6 veces la misma)
jjjjjj
pues el serial es la letra d
dddddd


y la comparacion sera asi
Citar
004010BA  |.  68 2C324000   push    0040322C                         ; /String2 = "iiiiii"
004010BF  |.  68 F0314000   push    004031F0                         ; |String1 = "iiiiii"
004010C4  |.  E8 FF000000   call    <jmp.&kernel32.lstrcmpiA>        ; \lstrcmpiA

la letra i de comparacion igual

ahora bien existe una igual para cada letra, siempre y cuando se este dispuesto a encontrar para su letra, minimo requiere un buen tiempo que no tengo

pero si se puede hacer algo impresionante
es juntar un codigo ascii de 255 y lograr recopilar cada letra, por el tiempo solo busque para mi nombre



pero colocare para mi nombre apuromafo
Citar
a->]
p->n
u->y
r-| (alt 124)
o->o
m->a
a->] (alt+93)
f->x
o->o


apuromafo->"dspqvhdmv"
//
a->]
p->n
u->y
r-| (alt 124)
o->o
m->a
a->]
f->x
o->o





Código:
apuromafo
]ny|oa]xo

con esto dice
---------------------------
Bien
---------------------------
Lo lograste, espero que este crackme haya sido de tu agrado
---------------------------
Aceptar   
---------------------------


ahora bien



letra nombre->letra serial



Citar
j->d
k->c
l->b
m->a

p->n
q->m

Citar
0(48)->.(46) 
1(49)->-(45) 
2 50 ->< 60)   
3 51 ->;(59)
4(52)->0 (48)  ???
5(53)->/ (47)   ??

a ->]
` ->^
^ ->`
?->?
>->@


como bien tengo poco tiempo

Citar
00401097  |.  83F8 06       cmp     eax, 6
comparacion con 6 de nombre

comparacion con 6 de serial
Citar
004010B0  |.  83F8 06       cmp     eax, 6
004010B3  |.  72 47         jb      short 004010FC
004010B5  |.  E8 C1000000   call    0040117B
004010BA  |.  68 2C324000   push    0040322C                         ; /String2 = ""
004010BF  |.  68 F0314000   push    004031F0                         ; |String1 = ""
004010C4  |.  E8 FF000000   call    <jmp.&kernel32.lstrcmpiA>        ; \lstrcmpiA


las rutinas
Citar
0040117B  /$  33C9          xor     ecx, ecx
0040117D  |.  33D2          xor     edx, edx
0040117F  |>  8B91 78314000 /mov     edx, dword ptr [ecx+403178]
00401185  |.  83C2 02       |add     edx, 2                          ;  1
00401188  |.  83F2 06       |xor     edx, 6
0040118B  |.  83EA 01       |sub     edx, 1
0040118E  |.  8991 F0314000 |mov     dword ptr [ecx+4031F0], edx
00401194  |.  41            |inc     ecx
00401195  |.  3BC8          |cmp     ecx, eax
00401197  |.  74 02         |je      short 0040119B
00401199  |.^ EB E4         \jmp     short 0040117F
0040119B  |>  33C9          xor     ecx, ecx
0040119D  |.  33DB          xor     ebx, ebx
0040119F  |>  8B99 B4314000 /mov     ebx, dword ptr [ecx+4031B4]
004011A5  |.  83C3 03       |add     ebx, 3
004011A8  |.  83F3 09       |xor     ebx, 9
004011AB  |.  83EB 05       |sub     ebx, 5
004011AE  |.  8999 2C324000 |mov     dword ptr [ecx+40322C], ebx
004011B4  |.  41            |inc     ecx
004011B5  |.  3BC8          |cmp     ecx, eax
004011B7  |.  74 02         |je      short 004011BB
004011B9  |.^ EB E4         \jmp     short 0040119F
004011BB  \>  C3            retn


donde se ve que  el primero valor
Citar
0040117F  |> /8B91 78314000 /mov     edx, dword ptr [ecx+403178]
00401185  |. |83C2 02       |add     edx, 2                          ;  xxx
00401188  |. |83F2 06       |xor     edx, 6
0040118B  |. |83EA 01       |sub     edx, 1
0040118E  |. |8991 F0314000 |mov     dword ptr [ecx+4031F0], edx
00401194  |. |41            |inc     ecx
00401195  |. |3BC8          |cmp     ecx, eax
00401197  |. |74 02         |je      short 0040119B
00401199  |.^\EB E4         \jmp     short 0040117F
y el segundo valor
Citar
0040119F  |> /8B99 B4314000 /mov     ebx, dword ptr [ecx+4031B4]
004011A5  |. |83C3 03       |add     ebx, 3
004011A8  |. |83F3 09       |xor     ebx, 9
004011AB  |. |83EB 05       |sub     ebx, 5
004011AE  |. |8999 2C324000 |mov     dword ptr [ecx+40322C], ebx
004011B4  |. |41            |inc     ecx
004011B5  |. |3BC8          |cmp     ecx, eax
004011B7  |. |74 02         |je      short 004011BB
004011B9  |.^\EB E4         \jmp     short 0040119F



pasa que e add, xor y sub debe ser igual entre las 2 de modo que
las dos sean identicas
como conozco mas o menos el alfabeto, dar una colicion con los centros es la primera opcion y vemos que sale de lujo


Citar
h->f
i->e
j->d
k->c
l->b
m->a

ahora bien

apuromafo tiene varias letras y consonantes, y justo sobre 6 , asi que le hago el empeño y comparo en


pero como no necesariamente sigue la logicapues
Citar
004010BA  |.  68 2C324000   push    0040322C                         ; /String2 = "^^^^^^12"
004010BF  |.  68 F0314000   push    004031F0                         ; |String1 = "12_______"
004010C4  |.  E8 FF000000   call    <jmp.&kernel32.lstrcmpiA>        ; \lstrcmpiA

cada vez que coloco un valor  similar , pues copio el valor y la dejo en la tabla

esto es conocido como colision, porque por chocar un valor con otro, pues en un momento dado es encontrado

no siempre se vera el valor tan claramente, por algo deben probar para su nombre


la web con codigo ascii que sugiero es la siguiente
Código:
http://www.ascii.cl/es/codigos-html.htm

por lo demas, espero les vaya bien en el 3ro
y ojala me de el tiempo de hacer algun keygen mas presentable :)

saludos

se cuidan y si alguien resuelve mucho mejor o necesita alguna explicacion mayor, pues cuando tenga tiempo la complemento :) o aprendo de lo que comenten

por mi parte creo que estaria medianamente resuelto :)
1309  Programación / Ingeniería Inversa / Re: programa en: 14 Agosto 2008, 23:04 pm
te sugiero te leas muy bien este link

http://foro.elhacker.net/ingenieria_inversa/iquesteres_nuevo_en_el_foro_lee_esto-t93855.0.html
1310  Programación / Ingeniería Inversa / Re: Amigos mi primer reto , Espero una luz xDD...!!! en: 14 Agosto 2008, 23:03 pm
pues leyendolo parece que te falto algo, porque todo eso esta en la introduccion

karmany puso un post si eras nuevo

eso simplemente es colocar bp, ejecutar y esperar las comparaciones

si el tema es hacerlo simple busca algo llamado vbstcmp del team resurecction que son 2 dll que se colocan en los vb y se veran las comparaciones

no puedo ayudar en programas comerciales, lo sabes bien, pero si se puede decir a modo global que te falta solo practicar y mucho

leer asi como asi los titulos sin entender no sirve mucho, estan los links y el foro esta muy bien lleno de escritos

saludos , te animo por mi experiencia

bendiciones se cuida
pd:bp all references, run f7 run f8 mirar los registros, y en un momento dado, pff

cmp serial bueno, malo
test , 0

je chico bueno

saludos Apuromafo

te sugiero leas este link y los subs links

http://foro.elhacker.net/ingenieria_inversa/iquesteres_nuevo_en_el_foro_lee_esto-t93855.0.html

en especial
http://foro.elhacker.net/ingenieria_inversa/leer_todos_los_que_comienzan_primer_paso_responde_si_lo_leiste-t223174.0.html
Páginas: 1 ... 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 [131] 132 133 134 135 136 137 138 139 140 141
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines