• Miércoles 24 de Abril de 2024, 02:02

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Zirrosis

Páginas: [1] 2 3 4
1
MySQL / Re:Prepared Statements anidados [PHP + MySQL]
« en: Jueves 15 de Diciembre de 2011, 22:11 »
Muchas gracias por tu respuesta, lo revisé y si me faltaban unos cuantos índices. Pero es problema persiste, es algo raro, ya que en las tablas que busco no tengo más de 50 filas (en la que más, en las otras unas 13, 20 y 5). Todos estos accesos se producen al leer la primera tabla.

Para ahorrar conexiones, lo que hace es en una consulta devolver los resultados "ya resueltos", es decir, en una tabla tengo el idUsuario y en la de usuarios, el idUsuario, nombreUsuario, etc. Al consultar la primera tabla ya resuelvo en nombre de usuario, me ahorro una consulta... de todos modos, no creo que sea culpa de esto que se sobrecargue. Es que si con 50 filas me tarda esto, no quiero ni pensar que hará con 160.000, por ejemplo  :think:

Muchas gracias  :smartass:

2
MySQL / Prepared Statements anidados [PHP + MySQL]
« en: Miércoles 14 de Diciembre de 2011, 18:08 »
Buenas a todos!

Miren, quería preguntarles algo que me esta pasando con mi proyecto. Para que tengan una idea de lo que quiero hacer, imaginen el muro de facebook o tuenti, con sus publicaciones y sus comentarios en cada publicación. Lo que estoy haciendo es lees la parte de publicaciones y en la parte de fetch, tengo una función que me busca los comentarios de dicha publicación. Algo así:

Código: PHP
  1. while($stmnt->fetch())
  2. {
  3.       echo busca_comentarios($id);
  4. }

donde la función busca_comentarios vuelve a abrir una conexión a la bd con un prepared statement, hace el select en la tabla adecuada, cierra la conexión y devuelve resultados.

Lo que me está pasando es que para leer unas pocas publicaciones (menos de 20) con sus comentarios, me tarda poco más de 1 segundo, tiempo que creo que es extremadamente alto, dado que de momento hay poco texto en la BD. Alguien tiene alguna solución de como agilizar esto??

PD: En cada subfunción abro una conexión nueva, hago lo que tenga que hacer y luego la cierro. Al hacerlo con un único usuarios está claro que no voy a saturar el servidor MySQL, pero creo que con unos cuantos usuarios (¿mil?) se podría llegar a saturar, no?? Y no es plan de configurar MySQL para que acepte tropecientas conexiones (de echo, por defecto acepta 151 con un máximo de 10000).

Un saludo y muchas gracias  :smartass:

3
JavaScript / Problema JS generado con AJAX
« en: Martes 22 de Marzo de 2011, 11:05 »
Buenas!!

Me está pasando algo realmente curioso. Tengo una pagina en la que seleccionas un tipo de "publicación" y, mediante una petición AJAX, se genera el formulario para dicho tipo de petición (con unas determinadas cajitas de texto, etc.) Lo que me ocurre es que desde dicho formulario generado, no puedo llamar a funciones JavaScript que previamente incluí en la pagina "inicial" (llamada publish.php).

Es decir, en publish.php tengo esto:

Código: Text
  1. <script type="text/javascript" src="Script.js"></script>
  2.  

El problema es que no puedo ejecutar nada que este aqui dentro. lo he intentado todo. Incluso dentro del formulario que transfiero desde AJAX, le coloqué esa misma linea y el comentario del FireBug era que no se podía cargar el código fuente de Script.js  :(

Alguien sabe que puedo hacer???

Básicamente necesito ejecutar JS para poder previsualizar una imagen de un input file antes de mandar el formulario ;).

Saludetes y gracias!!

4
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 22:43 »
Y se puede saber donde trabajas??? (Por MP si quieres).

Hay gente de Microsoft que trabaja desde España...

Lo dicho, muchas gracias  ^_^  :beer:

5
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 19:24 »
Muchas gracias, eres una biblioteca andante!!!

Porque no trabajas para MS??? seguro que sabes más que algunos de los que trabajan hay....

Saludos y gracias Eternal!!!  :beer:  :beer:  :beer:

6
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 13:09 »
De acuerdo, y como se obtendria la dirección de ZwOpenFile desde disco???

Actualmente estoy usando este metodo: http://www.rootkit.com/newsread.php?newsid=176

El cual me da las direcciones de Nt*

O se podria modificar el previous mode de otra manera??

7
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 12:30 »
Al sacar la dirección de ZwOpenFile desde el disco y al listar la SSDT con el IceSword, las direcciones son las mismas, así que en teoría si lo tendría que llamar.

El problema esta en que el código no funciona si las direcciones son enviadas desde modo usuario, si no hay conexión entre modo usuario y kernel si funciona  :wacko:

Saludos  :beer:

8
C/C++ / Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 11:51 »
Hola, que tal estan??

Miren, tengo una duda. Es algo curioso, estoy intentando programar un manejador de procesos tipo ProcessExplorer, con una parte a modo usuario y otra en modo kernel. Me encontré con un inconveniente al ver que los antivirus y demás programas de seguridad, hookean la SSDT para implantar todo tipo de filtros, por lo que decidí sacar la dirección real de las API's que quiero utilizar desde el disco. Todo esto me funciona, lo que me pasa es que, al crear la función MyOpenFile con la dirección real de ZwOpenFile, al realizar la llamada no me funciona, pero es curioso, no me funciona si le paso los parámetros desde modo usuario a modo kernel, si en el modulo de kernel "harcodeo" la dirección y realizo lo siguiente:

MyOpenFile = (typeZwOpenFile)0x8....;

Si me funciona. El codigo de la función para finalizar el proceso:

Código: C
  1. void KillProc(int Pid)
  2. {
  3.     NTSTATUS status;
  4.     HANDLE hProcess = 0;
  5.    
  6.     CLIENT_ID cid1 ={(HANDLE)Pid, 0};
  7.     OBJECT_ATTRIBUTES attr ={(ULONG)sizeof(OBJECT_ATTRIBUTES),0, NULL, 0, NULL,NULL};
  8.    
  9.     status = MyOpenProcess(&hProcess, PROCESS_TERMINATE, &attr, &cid1);
  10.     DbgPrint("Handle: 0x%p",hProcess);
  11.     if (status == STATUS_SUCCESS)
  12.     {
  13.         status = MyTerminateProcess(hProcess, 0);
  14.         ZwClose(hProcess);
  15.     }
  16. }
  17.  

Y aquí el código de control de IOCTL's:

Código: C
  1. Stack=IoGetCurrentIrpStackLocation(Irp);
  2.  
  3.     switch(Stack->Parameters.DeviceIoControl.IoControlCode)
  4.     {
  5.         case Kill:
  6.             iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
  7.             if(oBuffer && oBuffer)
  8.             {
  9.                if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
  10.                {
  11.                     i = atoi(iBuffer);
  12.                     KillProc(i);
  13.                     s = STATUS_SUCCESS;
  14.                }
  15.             }
  16.             break;
  17.            
  18.         case Terminate:
  19.             iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
  20.             if(oBuffer && oBuffer)
  21.             {
  22.                if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
  23.                {
  24.                     i = atoi(iBuffer);
  25.                     MyTerminateProcess = (typeZwTerminateProcess)i;
  26.                     s = STATUS_SUCCESS;
  27.                }
  28.             }
  29.             break;
  30.         case Open:
  31.             iBuffer = oBuffer = Irp->AssociatedIrp.SystemBuffer;
  32.             if(oBuffer && oBuffer)
  33.             {
  34.                if(Stack->Parameters.DeviceIoControl.InputBufferLength !=0)
  35.                {
  36.                     i = atoi(iBuffer);
  37.                     MyOpenProcess = (typeZwOpenProcess)i;
  38.                     s = STATUS_SUCCESS;
  39.                }
  40.             }
  41.             break;
  42.     }
  43.    
  44.     Irp->IoStatus.Status = STATUS_SUCCESS;
  45.     IoCompleteRequest(Irp, IO_NO_INCREMENT);
  46.     return s;
  47.  

Alguien sabe a que se debe este error??

Saludos  ^_^   :beer:

9
C/C++ / Re: Heap problem (Dll en C y programa en C#)
« en: Viernes 31 de Octubre de 2008, 12:45 »
Aquí te dejo el código que uso:

Código: Text
  1.  
  2.  
  3. //Variable global
  4. char* Returner;
  5.  
  6. //(...) Resto del codigo
  7.  
  8. extern "C" __declspec(dllexport) char* Global(int pid)
  9. {
  10.     NowPid = pid;
  11.     Returner = (char*)calloc(2,sizeof(char));
  12.     strcpy(Returner,"|");
  13.     ReadIAT(pid);
  14.  
  15.     return Returner;
  16. }
  17.  
  18. extern "C" __declspec(dllexport) void LiberaMem()
  19. {
  20.     free(Returner);
  21. }
  22.  
  23.  

La primera función es la que recibe el pid del proceso, redimensiona el Returner, le da formato para el filtro en C# y llama a otra función, esta lo que hace es redimensionar y añadir datos dentro de un while. Al terminar, retorna el Returner con todos los datos.

Como ves, la otra llamara es para liberar ese espacio que se guardo con calloc y realloc.

El codigo en C# que hay dentor de cada evento de click del boton de la aplicación es:

Código: Text
  1.  
  2. string resultado = HookDetect(pid);
  3. LiberaMem();
  4. string[] b = resultado.Split('|');
  5.  

Al transferir una cadena corta no da errores, pero al transferir una cadena de unos 38 caracteres ya da error.

10
C/C++ / Re: Heap problem (Dll en C y programa en C#)
« en: Viernes 31 de Octubre de 2008, 12:06 »
Al llamar a la función de liberar memoria no da error, pero no creo que limpie nada. Lo que me ocurre ahora es que me da error al volver a consultar la primera función.

Para liberar memoria uso free().

Tendre que pensar en otro metodo para transferir datos, alomejor con pipes...

11
C/C++ / Re: Heap problem (Dll en C y programa en C#)
« en: Viernes 31 de Octubre de 2008, 12:03 »
Cita de: "Eternal Idol"
¿Estas reservando la memoria en la DLL y liberandola en otro lado?


No, cree una función dentro de la misma Dll para poder liberar la memoria, y la utilizaba asi en C#:

Código: Text
  1.  
  2. string resultado;
  3.  
  4. resultado = Funcion1(parametro);
  5. if(resultado)
  6. {
  7.         LiberarMemoria();
  8. }
  9.  
  10.  

Pero al llamar a liberarmemoria me daba error (no en la Dll, sino dentro del C#).

Ya te digo, nunca me habia pasado esto, alomejor es por usar una función que retorna una string en la Dll (la declaro como char * Funcion1).

12
C/C++ / Heap problem (Dll en C y programa en C#)
« en: Viernes 31 de Octubre de 2008, 11:34 »
Estoy teniendo un problema algo raro con C#, creo que nunca me había pasado. El tema es el siguiente:

En C programé una Dll para poder trabajar cómodamente con la API's y hacer trabajos de más bajo nivel. Esta Dll relocalta información y la guarda en una string. Esta string, al terminar el proceso es transferida a mi programa en C# para interpretarla en un Form.

El problema esta que al cerrar el Formulario para cerrar así el programa, me muestra un error sobre _CrtIsValidHeapPointer. La Dll estaba en modo Debug, así que pensé en generarla a modo Release, pero al llamar a la función en C# ya me da error, ni siquiera puedo llamar a la función (en modo Debug todo iba bien hasta que cerraba el programa o volvía a llamar a la función).

La string en la Dll es un puntero a carácter, que lo voy redimendionando con realloc según la información que se tenga que guardar.

Pensé en crear otra función en la Dll para limpiar la memoria, pero me da error al llamarla  :blink:

Espero que alguien me pueda ayudar.

13
C# / Web Service + C# + Autenticación
« en: Miércoles 22 de Octubre de 2008, 10:00 »
Este es el barullo que tengo montado. Desde mi PC estoy tratando de consumir un web service de otra aplicación externa, implementarlo sobre el C# me va bien (con lo de importar recurso web y eso).

Lo que no consigo hacer de ninguna de las maneras es autenticarme en C#. Es un IIS 6.0 y al intentarlo con NetworkCretentials y con CredentialCache.DefaultCredentials me da error.

Alguien ha echo algo parecido??? Por cierto, otra pregunta, en Internet hay muchos manuales que dicen que para consumir un Web Service es necesario compilar una dll para que haga de proxye, y pregunto yo, el entorno no te genera ya automáticamente una clase para ello???

Un Saludo

14
C/C++ / Re: Problemas "extraños" Con Ioctls
« en: Jueves 7 de Febrero de 2008, 00:23 »
es decir, que si es necesario el \\??\\.

Mañana lo pruebo, por hoy me voy a la cama.

Gracias de nuevo Eternal  ;)

15
C/C++ / Re: Problemas "extraños" Con Ioctls
« en: Miércoles 6 de Febrero de 2008, 23:35 »
Aprovecho este post para solucionar un segundo problema....el caso es que desde la aplicación en Ring3 paso la ruta de un archivo al cual quiero impedir el acceso, si tengo la ruta "harcodeada" en el Driver me funciona perfectamente, el problema lo tengo a la hora de comparar el archivo que se paso desde Ring3. Antes tenia lo siguiente (con la dirección harcodeada:

Código: Text
  1. #define archivo L&#34;&#092;&#092;??&#092;&#092;C:&#092;archivo.txt&#34;
  2.  
  3. ...
  4. ..
  5. ..
  6.  
  7.  
  8. RtlInitUnicodeString(&uIni,archivo);
  9. if (RtlCompareUnicodeString(&uIni,ObjectAttributes-&#62;ObjectName,TRUE)==0)
  10. {
  11.   if (DesiredAccess & DELETE)
  12. {
  13.  

Con este codigo me funcionaba perfectamente, como ven, e harcodeado la ruta del archivo arriba del todo, el problema viene cuando lo paso desde Ring3, le paso lo siguiente:

c:\archivo.txt

Y luego hago esto:

Código: Text
  1. RtlInitUnicodeString(&uIni,archivo);
  2. RtlAnsiStringToUnicodeString(&uIni,archivo,TRUE);
  3. if (RtlCompareUnicodeString(&uIni,ObjectAttributes-&#62;ObjectName,TRUE)==0)
  4. {
  5.   if (DesiredAccess & DELETE)
  6. {
  7.  

Evidentemente no me funciona, mi pregunta es, tengo que agregar el \\??\\ delante al pasarlo desde la Ring3???

Ahora mismo tengo declarado el archivo como PVOID, me imagino que no influye esto.

Un Saludo.

16
C/C++ / Re: Problemas "extraños" Con Ioctls
« en: Martes 5 de Febrero de 2008, 12:13 »
Muy cierto, ahora si me funciona  :lol:

Como siempre, gracias Eternal  :)

17
C/C++ / Re: Problemas "extraños" Con Ioctls
« en: Martes 5 de Febrero de 2008, 00:05 »
Nop, llegue a la misma conclusion que tu, asi que puse esto:

strlen(s) -1 y el resultado fue el siguiente, en lugar de

Hola a todos (+ caracteres)

Era:

Hola a todo (+ caracteres)

Asi que supongo que eso es correcto, tambien probe de declarar

char s[13] = "Hola a todos";

Asi:

char s[13] = "Hola a todos\0";

Y tampoco dio resultado... :unsure:

La verdad es que es muy raro  :wacko:

Un Saludo y gracias otra vez Eternal  :)

18
C/C++ / Problemas "extraños" Con Ioctls
« en: Lunes 4 de Febrero de 2008, 15:58 »
Tengo ciertos problemas "curiosos" al pasar datos desde Ring3 a Ring0, e conseguido pasar datos desde una aplicación en Ring3 a Ring0, pero al terminar los datos se me "adieren" ciertos caracteres indeseados. Antes se me añadian caracteres del tipo ]º'... ahora veo que solamente se me añade una n, en fin, esto es lo que me da el DebugView:

Citar
00000000   0.00000000   Cargado   
00000001   3.99884796   Llamada a CreateFile o CloseHandle   
00000002   3.99886322   Buffer: Hola a todosn   
00000003   3.99886751   Longitud: 12   
00000004   3.99887896   Llamada a CreateFile o CloseHandle   
00000005   8.11681557   Saliendo

Y aqui el codigo de la aplicación en Ring3:

Código: Text
  1. #include &#60;windows.h&#62;
  2. #include &#60;stdio.h&#62;
  3. #include &#60;string.h&#62;
  4.  
  5.  
  6. int main(int argc, char* argv[])
  7. {
  8.   DWORD r;
  9.   HANDLE h;
  10.   char s[13] = &#34;Hola a todos&#34;;
  11.  
  12.   printf(&#34;Comunicación con driver by Hendrix&#092;n&#092;n&#34;);
  13.  
  14.   h=CreateFile(&#34;&#092;&#092;&#092;&#092;.&#092;&#092;driver2&#34;, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  15.   DeviceIoControl(h, 0x11111111, s,strlen(s), NULL, 0,&r, NULL);
  16.   CloseHandle(h);
  17.  
  18.   return 0;
  19. }
  20.  

Y aqui la funcion que recibe los datos en Ring0:

Código: Text
  1. NTSTATUS Recibir(PDEVICE_OBJECT DeviceObject,PIRP Irp)
  2. {
  3.     NTSTATUS            s=STATUS_SUCCESS;
  4.     PIO_STACK_LOCATION  Stack;
  5.   PVOID              inputBuffer;
  6.   ULONG              inputBufferLength;
  7.   ULONG              ioControlCode;
  8.   ANSI_STRING        strf;
  9.  
  10.  
  11.     Stack=IoGetCurrentIrpStackLocation(Irp);
  12.   __try
  13.     {
  14.     inputBuffer = Irp-&#62;AssociatedIrp.SystemBuffer;
  15.     inputBufferLength = Stack-&#62;Parameters.DeviceIoControl.InputBufferLength;
  16.     ioControlCode = Stack-&#62;Parameters.DeviceIoControl.IoControlCode;
  17.  
  18.     DbgPrint(&#34;Buffer: %s&#34;, inputBuffer);
  19.     DbgPrint(&#34;Longitud: %d&#34;, inputBufferLength);
  20.   }
  21.  
  22.   __except(EXCEPTION_EXECUTE_HANDLER)
  23.    {
  24.     DbgPrint(&#34;Exception&#34;);
  25.   }
  26.     Irp-&#62;IoStatus.Status = STATUS_SUCCESS;
  27.     Irp-&#62;IoStatus.Information = 0;
  28.     IoCompleteRequest(Irp, IO_NO_INCREMENT);
  29.     return s;    
  30. }
  31.  

Alguien sabe poque se me adieren caracteres????

19
C/C++ / Re: Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 18:58 »
Ahora si....muchas gracias Eternal ;)

20
C/C++ / Re: Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 18:45 »
Entonces donde voy????

PD: Ya te dije que no me adapto muy bien al Windbg todavia :S

21
C/C++ / Re: Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 18:28 »
Me da lo siguiente :S


lkd> u Kernel32!DeleteFileA
Couldn't resolve error at 'Kernel32!DeleteFileA'

22
C/C++ / Re: Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 16:41 »
Cita de: "Eternal Idol"
Como trabajo principalmente en modo Kernel el Ollydbg no me serviria asi que uso el WinDbg siempre (ademas es mucho mas potente)  B)
Cierto, aunque para Ring3 el olly sirve, es que tengo mucha mas experiencia en el Olly que en el Windbg, y se que es mas potente, pero me cuesta adaptarme xDDD

Por cierto, para desensamblar es: u <api> en el Windbg, no???

23
C/C++ / Re: Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 16:29 »
Vaya, creia que DeleteFile llamaba directamente a ZwDeleteFile  :blink:

Tu como desensamblas las APIS a Ring3??? Olly o con el Windbg???

Muchas gracias Eternal ;)

24
C/C++ / Problema Hookeando Zwdeletefile
« en: Miércoles 23 de Enero de 2008, 15:40 »
Tengo un problema hookeando la ZwDeleteFile, e escrito un modulo de kernel basandome en ejemplos que encontre por la red y el codigo me hookea bien, ya que verificandolo con un "visor de SSDT" veo que si me hookea la dirección correctamente. El problema es que cuando llamo a la DeleteFile desde Ring3 no se llama a mi función, y no encuentro explicacion a eso. :blink:

La direcciónes me las da correctamente, y se hookea bien, pero a la hora de llamar a DeleteFile nunca aparece el emnsage de Me llaman por la pantalla del DebugView....alguna idea???  :unsure:

Un Saludo.

EI: saco el codigo, no es necesario y no quiero que prolifere.

25
ASM (Ensamblador) / Re: Boot Loader
« en: Martes 14 de Agosto de 2007, 15:50 »
El enkoos.img lo tengo que cargar en el Borchs, no??? Pero, como lo configuro para que cargue??? :(

Gracias Enko

Páginas: [1] 2 3 4