| 
	
		|  Autor | Tema: Programa que pide datos de internet.  (Leído 4,307 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 VcoreASUS 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 VcoreASUS 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 VcoreASUS 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 VcoreASUS 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 EBP004EF981     8BEC           MOV EBP,ESP004EF983     83EC 0C        SUB ESP,0C004EF986   . 68 36CC4000    PUSH <JMP.&MSVBVM60.__vbaExceptHandler>  ;  SE handler installation004EF98B   . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]004EF991   . 50             PUSH EAX004EF992   . 64:8925 000000>MOV DWORD PTR FS:[0],ESP004EF999   . 83EC 58        SUB ESP,58004EF99C   . 53             PUSH EBX004EF99D   . 56             PUSH ESI004EF99E   . 57             PUSH EDI004EF99F   . 8965 F4        MOV DWORD PTR SS:[EBP-C],ESP004EF9A2   . 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,ESI004EF9AE   . 83E0 01        AND EAX,1004EF9B1   . 8945 FC        MOV DWORD PTR SS:[EBP-4],EAX004EF9B4   . 83E6 FE        AND ESI,FFFFFFFE004EF9B7   . 56             PUSH ESI004EF9B8   . 8975 08        MOV DWORD PTR SS:[EBP+8],ESI004EF9BB   . 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,EDI004EF9C4   . 56             PUSH ESI004EF9C5   . 897D E8        MOV DWORD PTR SS:[EBP-18],EDI004EF9C8   . 897D E4        MOV DWORD PTR SS:[EBP-1C],EDI004EF9CB   . 897D D4        MOV DWORD PTR SS:[EBP-2C],EDI004EF9CE   . 897D C4        MOV DWORD PTR SS:[EBP-3C],EDI004EF9D1   . 897D B4        MOV DWORD PTR SS:[EBP-4C],EDI004EF9D4   . 897D A4        MOV DWORD PTR SS:[EBP-5C],EDI004EF9D7   . 897D A0        MOV DWORD PTR SS:[EBP-60],EDI004EF9DA   . FF92 38070000  CALL DWORD PTR DS:[EDX+738]004EF9E0   . 3BC7           CMP EAX,EDI004EF9E2   . 7D 12          JGE SHORT Estacion.004EF9F6004EF9E4   . 68 38070000    PUSH 738004EF9E9   . 68 34654300    PUSH Estacion.00436534004EF9EE   . 56             PUSH ESI004EF9EF   . 50             PUSH EAX004EF9F0   . FF15 B8104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj004EF9F6   > 8B06           MOV EAX,DWORD PTR DS:[ESI]004EF9F8   . 56             PUSH ESI004EF9F9   . FF90 2C070000  CALL DWORD PTR DS:[EAX+72C]004EF9FF   . 3BC7           CMP EAX,EDI004EFA01   . 7D 12          JGE SHORT Estacion.004EFA15004EFA03   . 68 2C070000    PUSH 72C004EFA08   . 68 34654300    PUSH Estacion.00436534004EFA0D   . 56             PUSH ESI004EFA0E   . 50             PUSH EAX004EFA0F   . FF15 B8104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj004EFA15   > 8B0E           MOV ECX,DWORD PTR DS:[ESI]004EFA17   . 8D55 A0        LEA EDX,DWORD PTR SS:[EBP-60]004EFA1A   . 52             PUSH EDX004EFA1B   . 56             PUSH ESI004EFA1C   . FF91 3C070000  CALL DWORD PTR DS:[ECX+73C]004EFA22   . 66:397D A0     CMP WORD PTR SS:[EBP-60],DI004EFA26   . 0F84 9D000000  JE Estacion.004EFAC9004EFA2C   . 8B06           MOV EAX,DWORD PTR DS:[ESI]004EFA2E   . 56             PUSH ESI004EFA2F   . FF90 0C070000  CALL DWORD PTR DS:[EAX+70C]004EFA35   . 8B0E           MOV ECX,DWORD PTR DS:[ESI]004EFA37   . 56             PUSH ESI004EFA38   . FF91 04030000  CALL DWORD PTR DS:[ECX+304]004EFA3E   . 8B3D 44114000  MOV EDI,DWORD PTR DS:[<&MSVBVM60.#520>]  ;  MSVBVM60.rtcTrimVar004EFA44   . 8945 DC        MOV DWORD PTR SS:[EBP-24],EAX004EFA47   . 8D55 D4        LEA EDX,DWORD PTR SS:[EBP-2C]004EFA4A   . 8D45 C4        LEA EAX,DWORD PTR SS:[EBP-3C]004EFA4D   . BB 09000000    MOV EBX,9004EFA52   . 52             PUSH EDX004EFA53   . 50             PUSH EAX004EFA54   . 895D D4        MOV DWORD PTR SS:[EBP-2C],EBX004EFA57   . FFD7           CALL EDI                                 ;  <&MSVBVM60.#520>004EFA59   . 8B0E           MOV ECX,DWORD PTR DS:[ESI]004EFA5B   . 56             PUSH ESI004EFA5C   . FF91 08030000  CALL DWORD PTR DS:[ECX+308]004EFA62   . 8945 BC        MOV DWORD PTR SS:[EBP-44],EAX004EFA65   . 8D55 B4        LEA EDX,DWORD PTR SS:[EBP-4C]004EFA68   . 8D45 A4        LEA EAX,DWORD PTR SS:[EBP-5C]004EFA6B   . 52             PUSH EDX004EFA6C   . 50             PUSH EAX004EFA6D   . 895D B4        MOV DWORD PTR SS:[EBP-4C],EBX004EFA70   . FFD7           CALL EDI004EFA72   . 8B3D D0124000  MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrVarVal004EFA78   . 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 ECX004EFA81   . 52             PUSH EDX004EFA82   . FFD7           CALL EDI                                 ;  <&MSVBVM60.__vbaStrVarVal>004EFA84   . 50             PUSH EAX004EFA85   . 8D45 C4        LEA EAX,DWORD PTR SS:[EBP-3C]004EFA88   . 68 24044300    PUSH Estacion.00430424004EFA8D   . 8D4D E8        LEA ECX,DWORD PTR SS:[EBP-18]004EFA90   . 50             PUSH EAX004EFA91   . 51             PUSH ECX004EFA92   . FFD7           CALL EDI004EFA94   . 50             PUSH EAX004EFA95   . 56             PUSH ESI004EFA96   . 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 EDX004EFAA3   . 50             PUSH EAX004EFAA4   . 6A 02          PUSH 2004EFAA6   . FF15 50134000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStrList004EFAAC   . 8D4D A4        LEA ECX,DWORD PTR SS:[EBP-5C]004EFAAF   . 8D55 C4        LEA EDX,DWORD PTR SS:[EBP-3C]004EFAB2   . 51             PUSH ECX004EFAB3   . 8D45 B4        LEA EAX,DWORD PTR SS:[EBP-4C]004EFAB6   . 52             PUSH EDX004EFAB7   . 8D4D D4        LEA ECX,DWORD PTR SS:[EBP-2C]004EFABA   . 50             PUSH EAX004EFABB   . 51             PUSH ECX004EFABC   . 6A 04          PUSH 4004EFABE   . FF15 48104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVarList004EFAC4   . 83C4 20        ADD ESP,20004EFAC7   . 33FF           XOR EDI,EDI004EFAC9   > 897D FC        MOV DWORD PTR SS:[EBP-4],EDI004EFACC   . 68 00FB4E00    PUSH Estacion.004EFB00004EFAD1   . EB 2C          JMP SHORT Estacion.004EFAFF004EFAD3   . 8D55 E4        LEA EDX,DWORD PTR SS:[EBP-1C]004EFAD6   . 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]004EFAD9   . 52             PUSH EDX004EFADA   . 50             PUSH EAX004EFADB   . 6A 02          PUSH 2004EFADD   . FF15 50134000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStrList004EFAE3   . 8D4D A4        LEA ECX,DWORD PTR SS:[EBP-5C]004EFAE6   . 8D55 B4        LEA EDX,DWORD PTR SS:[EBP-4C]004EFAE9   . 51             PUSH ECX004EFAEA   . 8D45 C4        LEA EAX,DWORD PTR SS:[EBP-3C]004EFAED   . 52             PUSH EDX004EFAEE   . 8D4D D4        LEA ECX,DWORD PTR SS:[EBP-2C]004EFAF1   . 50             PUSH EAX004EFAF2   . 51             PUSH ECX004EFAF3   . 6A 04          PUSH 4004EFAF5   . FF15 48104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVarList004EFAFB   . 83C4 20        ADD ESP,20004EFAFE   . 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 VcoreASUS 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 | 
 
 |  |  |  |  |  
 
	
 
   |