Autor
|
Tema: Programa que pide datos de internet. (Leído 3,948 veces)
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
Hola! Me topé con un programa que hicieron en la empresa donde trabaja mi viejo, entonces decidí empezar a analizarlo. El programa lo que hace es mostrar una pantalla de Login, entonces un pone su usuario y contraseña, estos se envían y se comprueban en una base de datos en el servidor, el cual lo autentifica.
Empecé a analizar el tráfico del servidor (tengo una cuenta válida) y me di cuenta que el servidor manda los datos sin problemas, osea que la pantalla de login, si pudiera ser pasada, el programa directamente empezaría a recibir datos sin problemas.
Entonces traté de saltearla, aca se me quemaron los papeles (no sabia que hacer), xq me metí con el olly, y traté poniendo un jmp en el codigo del boton "aceptar" para que saltara a la función que carga el programa, pero no pude, cuando lo ensamble y lo guardé, al probarlo crasheo al tratar de apretar el boton aceptar.
No puedo editar los recursos (no se por que), no andan los programas mas comunes con este archivo, está creado en VB 6.
Lo que quiero hacer es encontrar el lugar donde recibe la respuesta del servidor (si es valido o no el login) y hacer que sea siempre verdadera. El tema es que no se que api buscar, alguien tiene una idea??? Un abrazo APOKLIPTICO
Update: Lo peor de todo! el programa recibe los errores de internet, asi que no los puedo buscar en "referenced text strings" ahh!! it's a nightmare!!
|
|
« Última modificación: 10 Diciembre 2008, 04:51 am por APOKLIPTICO »
|
En línea
|
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore ASUS M4A89GTD-PRO/USB3 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) Seagate 500 Gb XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
Hola! Me topé con un programa que hicieron en la empresa donde trabaja mi viejo, entonces decidí empezar a analizarlo. El programa lo que hace es mostrar una pantalla de Login, entonces un pone su usuario y contraseña, estos se envían y se comprueban en una base de datos en el servidor, el cual lo autentifica.
Empecé a analizar el tráfico del servidor (tengo una cuenta válida) y me di cuenta que el servidor manda los datos sin problemas, osea que la pantalla de login, si pudiera ser pasada, el programa directamente empezaría a recibir datos sin problemas.
Entonces traté de saltearla, aca se me quemaron los papeles (no sabia que hacer), xq me metí con el olly, y traté poniendo un jmp en el codigo del boton "aceptar" para que saltara a la función que carga el programa, pero no pude, cuando lo ensamble y lo guardé, al probarlo crasheo al tratar de apretar el boton aceptar.
No puedo editar los recursos (no se por que), no andan los programas mas comunes con este archivo, está creado en VB 6.
Lo que quiero hacer es encontrar el lugar donde recibe la respuesta del servidor (si es valido o no el login) y hacer que sea siempre verdadera. El tema es que no se que api buscar, alguien tiene una idea??? Un abrazo APOKLIPTICO
Update: Lo peor de todo! el programa recibe los errores de internet, asi que no los puedo buscar en "referenced text strings" ahh!! it's a nightmare!!
Y bueno hay muchos métodos, igual no para por referencias pero si cuando coge el texto, si está en VB 6 hay un plugin que se llama "puntos mágicos" o algo así, que pone un breakpoint en VB5 o VB6 (o el punto H), para cada vez que se produzca un evento que pare, así cuando le des al botón de aceptar pues eso. Salu2...
|
|
|
En línea
|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
Si bueno, pero en realidad no necesito mucho eso, xq con vbdecompiler mire las direcciones de cada uno de los controles, y puse un bp en el "push ebp"... Ahi tengo que ir apretando F8 forever hasta que aparezca una comparacion o algo asi?
|
|
|
En línea
|
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore ASUS M4A89GTD-PRO/USB3 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) Seagate 500 Gb XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
Si bueno, pero en realidad no necesito mucho eso, xq con vbdecompiler mire las direcciones de cada uno de los controles, y puse un bp en el "push ebp"... Ahi tengo que ir apretando F8 forever hasta que aparezca una comparacion o algo asi?
y no porque probablemente lo que hará será enviar unos datos y comprobarlo en una bse de datos de MySQL o algo así, por lo tnato no verás ninguna compración. Salu2...
|
|
|
En línea
|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
A lo que me refiero, es el jump condicional, que continua con la función de cargar, en definitiva, quiero saltearme la pantalla de login, o bien que cujando ponga acpetar, directamente sea o no correcto el nombre de usuario, que salte a la pantalla principal... Como hago para saltearmela?
|
|
|
En línea
|
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore ASUS M4A89GTD-PRO/USB3 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) Seagate 500 Gb XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
A lo que me refiero, es el jump condicional, que continua con la función de cargar, en definitiva, quiero saltearme la pantalla de login, o bien que cujando ponga acpetar, directamente sea o no correcto el nombre de usuario, que salte a la pantalla principal... Como hago para saltearmela?
Bueno pues cuando se hace la función Load, miras la direccion del evento y en vez de cargar el form de login cargas el principal y listo..
|
|
|
En línea
|
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
Voy a probarlo y te cuento como me va, gracias!...
|
|
|
En línea
|
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore ASUS M4A89GTD-PRO/USB3 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) Seagate 500 Gb XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
|
|
|
APOKLIPTICO
Desconectado
Mensajes: 3.871
Toys in the attic.
|
Okay, el problema es que no encuentro el evento Form_Load ni en la pantalla de login, ni en la principal (que es un form MDI), pero encuentro una funcion que se llama "cargar", entonces reemplazo el "push ebp" de la funcion cargar del form de login, y le hago un "jmp 005AB520" que es la funcion "cargar" del form MDI, pero me tira access violation... Todo esto usando el ollydbg shadow y el vbdecompiler para conocer las direcciones de las funciones, eventos, etc... Alguna otra idea? PD: esta es el native code del evento click del boton "aceptar". 004EF980 55 PUSH EBP 004EF981 8BEC MOV EBP,ESP 004EF983 83EC 0C SUB ESP,0C 004EF986 . 68 36CC4000 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE handler installation 004EF98B . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0] 004EF991 . 50 PUSH EAX 004EF992 . 64:8925 000000>MOV DWORD PTR FS:[0],ESP 004EF999 . 83EC 58 SUB ESP,58 004EF99C . 53 PUSH EBX 004EF99D . 56 PUSH ESI 004EF99E . 57 PUSH EDI 004EF99F . 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP 004EF9A2 . C745 F8 F03940>MOV DWORD PTR SS:[EBP-8],Estacion.004039> 004EF9A9 . 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8] 004EF9AC . 8BC6 MOV EAX,ESI 004EF9AE . 83E0 01 AND EAX,1 004EF9B1 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 004EF9B4 . 83E6 FE AND ESI,FFFFFFFE 004EF9B7 . 56 PUSH ESI 004EF9B8 . 8975 08 MOV DWORD PTR SS:[EBP+8],ESI 004EF9BB . 8B0E MOV ECX,DWORD PTR DS:[ESI] 004EF9BD . FF51 04 CALL DWORD PTR DS:[ECX+4] 004EF9C0 . 8B16 MOV EDX,DWORD PTR DS:[ESI] 004EF9C2 . 33FF XOR EDI,EDI 004EF9C4 . 56 PUSH ESI 004EF9C5 . 897D E8 MOV DWORD PTR SS:[EBP-18],EDI 004EF9C8 . 897D E4 MOV DWORD PTR SS:[EBP-1C],EDI 004EF9CB . 897D D4 MOV DWORD PTR SS:[EBP-2C],EDI 004EF9CE . 897D C4 MOV DWORD PTR SS:[EBP-3C],EDI 004EF9D1 . 897D B4 MOV DWORD PTR SS:[EBP-4C],EDI 004EF9D4 . 897D A4 MOV DWORD PTR SS:[EBP-5C],EDI 004EF9D7 . 897D A0 MOV DWORD PTR SS:[EBP-60],EDI 004EF9DA . FF92 38070000 CALL DWORD PTR DS:[EDX+738] 004EF9E0 . 3BC7 CMP EAX,EDI 004EF9E2 . 7D 12 JGE SHORT Estacion.004EF9F6 004EF9E4 . 68 38070000 PUSH 738 004EF9E9 . 68 34654300 PUSH Estacion.00436534 004EF9EE . 56 PUSH ESI 004EF9EF . 50 PUSH EAX 004EF9F0 . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj 004EF9F6 > 8B06 MOV EAX,DWORD PTR DS:[ESI] 004EF9F8 . 56 PUSH ESI 004EF9F9 . FF90 2C070000 CALL DWORD PTR DS:[EAX+72C] 004EF9FF . 3BC7 CMP EAX,EDI 004EFA01 . 7D 12 JGE SHORT Estacion.004EFA15 004EFA03 . 68 2C070000 PUSH 72C 004EFA08 . 68 34654300 PUSH Estacion.00436534 004EFA0D . 56 PUSH ESI 004EFA0E . 50 PUSH EAX 004EFA0F . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj 004EFA15 > 8B0E MOV ECX,DWORD PTR DS:[ESI] 004EFA17 . 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60] 004EFA1A . 52 PUSH EDX 004EFA1B . 56 PUSH ESI 004EFA1C . FF91 3C070000 CALL DWORD PTR DS:[ECX+73C] 004EFA22 . 66:397D A0 CMP WORD PTR SS:[EBP-60],DI 004EFA26 . 0F84 9D000000 JE Estacion.004EFAC9 004EFA2C . 8B06 MOV EAX,DWORD PTR DS:[ESI] 004EFA2E . 56 PUSH ESI 004EFA2F . FF90 0C070000 CALL DWORD PTR DS:[EAX+70C] 004EFA35 . 8B0E MOV ECX,DWORD PTR DS:[ESI] 004EFA37 . 56 PUSH ESI 004EFA38 . FF91 04030000 CALL DWORD PTR DS:[ECX+304] 004EFA3E . 8B3D 44114000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar 004EFA44 . 8945 DC MOV DWORD PTR SS:[EBP-24],EAX 004EFA47 . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C] 004EFA4A . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C] 004EFA4D . BB 09000000 MOV EBX,9 004EFA52 . 52 PUSH EDX 004EFA53 . 50 PUSH EAX 004EFA54 . 895D D4 MOV DWORD PTR SS:[EBP-2C],EBX 004EFA57 . FFD7 CALL EDI ; <&MSVBVM60.#520> 004EFA59 . 8B0E MOV ECX,DWORD PTR DS:[ESI] 004EFA5B . 56 PUSH ESI 004EFA5C . FF91 08030000 CALL DWORD PTR DS:[ECX+308] 004EFA62 . 8945 BC MOV DWORD PTR SS:[EBP-44],EAX 004EFA65 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C] 004EFA68 . 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C] 004EFA6B . 52 PUSH EDX 004EFA6C . 50 PUSH EAX 004EFA6D . 895D B4 MOV DWORD PTR SS:[EBP-4C],EBX 004EFA70 . FFD7 CALL EDI 004EFA72 . 8B3D D0124000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrVarVal 004EFA78 . 8B1E MOV EBX,DWORD PTR DS:[ESI] 004EFA7A . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C] 004EFA7D . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 004EFA80 . 51 PUSH ECX 004EFA81 . 52 PUSH EDX 004EFA82 . FFD7 CALL EDI ; <&MSVBVM60.__vbaStrVarVal> 004EFA84 . 50 PUSH EAX 004EFA85 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C] 004EFA88 . 68 24044300 PUSH Estacion.00430424 004EFA8D . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18] 004EFA90 . 50 PUSH EAX 004EFA91 . 51 PUSH ECX 004EFA92 . FFD7 CALL EDI 004EFA94 . 50 PUSH EAX 004EFA95 . 56 PUSH ESI 004EFA96 . FF93 18070000 CALL DWORD PTR DS:[EBX+718] 004EFA9C . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 004EFA9F . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 004EFAA2 . 52 PUSH EDX 004EFAA3 . 50 PUSH EAX 004EFAA4 . 6A 02 PUSH 2 004EFAA6 . FF15 50134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStrList 004EFAAC . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C] 004EFAAF . 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C] 004EFAB2 . 51 PUSH ECX 004EFAB3 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C] 004EFAB6 . 52 PUSH EDX 004EFAB7 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C] 004EFABA . 50 PUSH EAX 004EFABB . 51 PUSH ECX 004EFABC . 6A 04 PUSH 4 004EFABE . FF15 48104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList 004EFAC4 . 83C4 20 ADD ESP,20 004EFAC7 . 33FF XOR EDI,EDI 004EFAC9 > 897D FC MOV DWORD PTR SS:[EBP-4],EDI 004EFACC . 68 00FB4E00 PUSH Estacion.004EFB00 004EFAD1 . EB 2C JMP SHORT Estacion.004EFAFF 004EFAD3 . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C] 004EFAD6 . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 004EFAD9 . 52 PUSH EDX 004EFADA . 50 PUSH EAX 004EFADB . 6A 02 PUSH 2 004EFADD . FF15 50134000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>; MSVBVM60.__vbaFreeStrList 004EFAE3 . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C] 004EFAE6 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C] 004EFAE9 . 51 PUSH ECX 004EFAEA . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C] 004EFAED . 52 PUSH EDX 004EFAEE . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C] 004EFAF1 . 50 PUSH EAX 004EFAF2 . 51 PUSH ECX 004EFAF3 . 6A 04 PUSH 4 004EFAF5 . FF15 48104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList 004EFAFB . 83C4 20 ADD ESP,20 004EFAFE . C3 RETN
Alguna de los saltos condicionales puede ser el que evita que cargue el formulario principal?
|
|
« Última modificación: 11 Diciembre 2008, 19:55 pm por APOKLIPTICO »
|
En línea
|
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore ASUS M4A89GTD-PRO/USB3 2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T) Seagate 500 Gb XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
mmm... cuando paras en el punto que te digo, vas a una tabla de "eventos", estoy seguro que cuando pasas el login va a uno de esos eventos... pues evitar el que va al login e ir directamente ahí..
|
|
|
En línea
|
|
|
|
|
|