Programa que pide datos de internet.

Iniciado por APOKLIPTICO, 10 Diciembre 2008, 04:41 AM

0 Miembros y 2 Visitantes están viendo este tema.

APOKLIPTICO

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!!
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

Cita de: APOKLIPTICO en 10 Diciembre 2008, 04:41 AM
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...
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com

APOKLIPTICO

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?
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

Cita de: APOKLIPTICO en 10 Diciembre 2008, 17:51 PM
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...
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com

APOKLIPTICO

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?
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

Cita de: APOKLIPTICO en 11 Diciembre 2008, 00:22 AM
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..
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com

APOKLIPTICO

Voy a probarlo y te cuento como me va, gracias!...
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

#7
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".

Código (asm) [Seleccionar]
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?
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

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í..
"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com