• Lunes 24 de Febrero de 2025, 16:45

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 - Eternal Idol

Páginas: 1 ... 36 37 [38] 39 40 ... 205
926
C/C++ / Re: Recorrer una lista
« en: Martes 3 de Marzo de 2009, 16:51 »
Si la lista no cambia es muy simple, haces todo en un solo bucle y despues del pos++; pones Sleep(10000);.

927
C/C++ / Re: Recorrer una lista
« en: Martes 3 de Marzo de 2009, 16:12 »
Si estas poniendo begin correctamente no se cual es el problema ... depuralo, usando esto me va sin problemas:

Código: Text
  1. #include <list>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. void main()
  7. {
  8.   list<int> Datos_List;
  9.   Datos_List.push_back(7);
  10.   Datos_List.push_back(9);
  11.   Datos_List.push_back(12);
  12.  
  13.   if(!Datos_List.empty())
  14.   {
  15.     list<int>::iterator pos;
  16.     pos = Datos_List.begin();
  17.     while(pos != Datos_List.end())
  18.     {
  19.       printf("n%i", *pos);
  20.       pos++;
  21.     }
  22.   }
  23. }
  24.  

928
C/C++ / Re: que es else if exactamente
« en: Martes 3 de Marzo de 2009, 13:16 »
http://www.zator.es/Cpp/E4_10_2.htm#else%20if

PD. En tu if entrara siempre que tablero[8] no sea 0 y tablero[2] sea X, tal vez no sea eso lo que queres.

929
C/C++ / Re: tengo error , pasar parametro por referencia en C
« en: Lunes 2 de Marzo de 2009, 18:03 »
Casi:
(*x)++;
v[*x]=c;

Igual la dimension 100 es invalida en un array de 100 elementos, estos van de 0 a 99.

930
C/C++ / Re: tengo error , pasar parametro por referencia en C
« en: Lunes 2 de Marzo de 2009, 16:39 »
En tu caso con un simple puntero alcanza ya que no queres cambiar la direccion de la variable que pasas sino unicamente su valor:

Código: Text
  1. #include <stdio.h>
  2.  
  3. void Funcio(int *x)
  4. {
  5.   *x = 77;
  6. }
  7.  
  8. void main()
  9. {
  10.   int p = 99;
  11.   Funcio(&p);
  12.   printf("%drn", p);  
  13. }
  14.  

Burdamente doble puntero:

Código: Text
  1. #include <stdio.h>
  2.  
  3. void Funcio( char **x)
  4. {
  5.   if (**x == 'A')
  6.   {
  7.       *x = "hola";
  8.   }
  9.   else
  10.   {
  11.       *x = "chau";
  12.   }  
  13. }
  14.  
  15. void main()
  16. {
  17.   char *p = "ABCD";
  18.   Funcio(&p);
  19.   printf("%srn", p);
  20.   p = "EFGH";
  21.   Funcio(&p);
  22.   printf("%srn", p);
  23. }
  24.  

931
C/C++ / Re: tengo error , pasar parametro por referencia en C
« en: Lunes 2 de Marzo de 2009, 15:50 »
No existen las referencias en C, usa doble puntero (**).

932
C/C++ / Re: Clases parametricas
« en: Lunes 2 de Marzo de 2009, 11:29 »
Cita de: "Arcueid"
He puesto poco codigo porque se que cuanto mas localizado el error, mas facil sera remediarlo. Cuando alguien me pregunta por que un codigo que no funciona no tengo ganas de leerme las 200 lineas de codigo mas las clases asociadas y luego comprobar las llamadas del main, a ver donde puede estar el error. Pero si aqui funcionais mejor con el codigo al completo ya lo pondre todo.

No hace falta que este completo pero si que sea una version compilable, por lo menos yo no quiero LEER el codigo en busqueda del error sino DEPURARLO que fue lo que hice en este caso para encontrar el problema. Si, es cierto, podria haberlo visto leyendo pero la verdad me resulta mucho mas rapido y efectivo depurar.

Cita de: "Arcueid"
Creo que el error esta solucionado, usando memoria dinamica.
Gracias.

Bien, de nadas  B)

933
C/C++ / Re: Leer de un fichero y generar otro fichero
« en: Lunes 2 de Marzo de 2009, 11:15 »
No te olvides de que para que un caracter sea  tenes que ponerlo dos veces, asi: \ (C:\Programas\etc) ya que la  sola se usa para los sequencias de escape (como n por ejemplo).

934
C/C++ / Re: Clases parametricas
« en: Lunes 2 de Marzo de 2009, 09:19 »
La proxima vez pone una version compilable del codigo (main incluido). No me gusta tener que perder el tiempo creando los archivos y menos que menos completando lo que falta, la logica me dice que cuanto menos pasos tengamos que dar mas probabilidades habra de que tengamos ganas de invertir nuestro tiempo en problemas ajenos. ¿Se entiende la logica, no?

Ahora el problema, lista es un puntero NULO, tenes esto en el constructor:
        lista = NULL;

Obviamente cuando llamas a addLista desreferencias un puntero NULO:
        lista->push_back(obj);

Podes hacerlo sin memoria dinamica o usar new en el constructor para darle un valor valido a lista. El destructor mejor borralo y hacelo de nuevo.

935
C/C++ / Re: Clases parametricas
« en: Domingo 1 de Marzo de 2009, 10:17 »
Me gustaria ayudarte pero tu codigo esta incompleto, el error que tenias te lo solucione, este tiene toda la pinta de ser un problema de enlazado, asegurate que estas compilando ListaObjetos.cpp y proba solo compilando para verificar que el problema sea en tiempo de enlazado.

936
C/C++ / Re: Clases parametricas
« en: Sábado 28 de Febrero de 2009, 19:58 »
ListaObjetos<objeto3D> *list = new ListaObjetos<objeto3D>();

937
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 20:21 »
Cita de: "Zirrosis"
Muchas gracias, eres una biblioteca andante!!!

De nadas  B)

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

Principalmente por estar en USA  :devil: Igual donde trabajo hay gente ex-Microsoft y viceversa  :beer:

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

Tanto ZwOpenFile como ZwOpenProcess y ZwTerminateProcess estan exportadas, para obtener la direccion no tenes mas que llamar a MmGetSystemRoutineAddress. Si queres hacerlo del disco si o si no tenes mas que parsear el PE y trabajar con la tabla de exportacion ... ninguna de las dos te evitaria un inline hook ...

Cita de: "Zirrosis"
O se podria modificar el previous mode de otra manera??

Si, al menos dos maneras:

A. Efectuando la misma logica que Zw en Kernel (a la antigua es mas facil, con int):
Pseudo_ZwOpenFile:
    mov   eax, 74h
    lea   edx, [esp+4]
    int   2Eh
    ret   18h

El numero del servicio varia, lo podes conseguir de NTDLL.dll que siempre exporta todas las funciones existentes. Que yo sepa no es posible implementarla en x64.

B. Ejecutando el codigo en un hilo diferente, ya sea directa (PsCreateSystemThread) o indirectamente (work item). Esta manera es la mas limpia.

939
C/C++ / Re: Consola se cierra luego de utilizar "cin" y uso de "endl"
« en: Jueves 26 de Febrero de 2009, 12:57 »
Con endl termina una linea, endl=end line.

940
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 12:41 »
Cita de: "Zirrosis"
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.

Rapida comprobacion de que eso no es correcto:
0: kd> u nt!zwopenfile
nt!ZwOpenFile:
8082963c b874000000      mov     eax,74h
80829641 8d542404        lea     edx,[esp+4]
80829645 9c              pushfd
80829646 6a08            push    8
80829648 e8040e0400      call    nt!KiSystemService (8086a451)
8082964d c21800          ret     18h

0: kd> u nt!ntopenfile
nt!NtOpenFile:
808a3182 8bff            mov     edi,edi
808a3184 55              push    ebp
808a3185 8bec            mov     ebp,esp
808a3187 33c0            xor     eax,eax
808a3189 50              push    eax
808a318a 50              push    eax
808a318b 50              push    eax
808a318c 50              push    eax

0: kd> dd keservicedescriptortable
80885700  8082d450 00000000 0000011c 8082d8c4
80885710  00000000 00000000 00000000 00000000
80885720  00000000 00000000 00000000 00000000
80885730  00000000 00000000 00000000 00000000
80885740  00000002 00002710 bf80c0b6 00000000
80885750  baa78a80 f7335b60 862f064c 80a1f0c0
80885760  00000000 00000000 a16a2aa3 00000000
80885770  1c7164e3 01c99733 00000000 00000000

0: kd> dd 8082d450+0x74*4
8082d620  808a3182 808a1b3a 808fe748 8094db58
8082d630  8093fe2a 8091d41a 808f43fc 80916722
8082d640  80916386 808d33d2 8093d7fc 808ecb9c
8082d650  808f4688 80916740 809164f6 8093f744
8082d660  8096e14a 808f24ae 80920ae4 8091c72c
8082d670  8091c918 808e13da 809377ba 8089fed6
8082d680  8093f0e4 8093f0e4 80868bb6 809393ac
8082d690  8093a00c 808a2e64 808e760e 808a31b2

Como se puede observar en la SSDT, el servicio 0x74 que corresponde a OpenFile apunta a NtOpenFile.

Cita de: "Zirrosis"
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:

Esta explicado en el articulo que deje: en tu IOCTL el Previous Mode es User (1), entonces la funcion que estas llamando NtOpenFile procedera a comprobar los parametros que en este caso son de modo Kernel con lo cual dara una excepcion (controlada) y retornara el error correspondiente (comproba el eax que devuelve). Desde el driver entry tu Previous Mode es Kernel (0) entonces los parametros no se comprueban, se confia en los modulos de modo Kernel.

Tenes que usar la correcta ZwOpenFile asi el Previous Mode es el adecuado, ZwOpenFile termina llamando a NtOpenFile despues de, entre otras cosas, poner el Previous Mode a Kernel (0).

941
C/C++ / Re: Duda direcciones modo Kernel
« en: Jueves 26 de Febrero de 2009, 12:15 »
Cita de: "Zirrosis"
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:

Usando NtOpenFile no deberia funcionarte (esas son las direcciones que estan en la SSDT), solo en modo Usuario Nt y Zw son lo mismo.

Aca esta explicado muy bien todo el tema Nt vs Zw:
http://www.osronline.com/article.cfm?id=257
http://www.osronline.com/article.cfm?id=266

Y referencia previa: http://foro.elhacker.net/programacion_v ... ;msg882112  :P

943
C/C++ / Re: funciones
« en: Lunes 23 de Febrero de 2009, 14:09 »
De nadas, a veces pasa  ;)

944
Windows / Re: Drivers gráfica
« en: Domingo 22 de Febrero de 2009, 20:36 »
Proba, si instalando los drivers adecuados todo funciona te mereces un premio ...

945
Windows / Re: Drivers gráfica
« en: Domingo 22 de Febrero de 2009, 14:09 »
¿Estos drivers los provee Microsoft o Intel?  :no:

http://www.intel.com/support/graphics/sb/CS-020667.htm

946
C/C++ / Re: Obtener dirección de memoria
« en: Domingo 22 de Febrero de 2009, 09:11 »
void *p = &vector; //el ampersand (&) es opcional

En char *p ya tenias la direccion de memoria de vector pero cout al ver que el tipo de p era char * obviamente lo interpreta como lo que es, una cadena.

947
ASM (Ensamblador) / Re: funcionamiento de flags o banderas
« en: Sábado 21 de Febrero de 2009, 23:30 »
No lo dice explicitamente PERO en la definicion misma de PF y ZF esta lo que buscas.

http://en.wikipedia.org/wiki/Parity_flag
http://en.wikipedia.org/wiki/Zero_flag

Sino entendes ingles lo lamento pero todos los manuales de los fabricantes vienen en ingles, te recomiendo que lo aprendas tan pronto como puedas. Sino busca en Google informacion en español.

948
ASM (Ensamblador) / Re: funcionamiento de flags o banderas
« en: Sábado 21 de Febrero de 2009, 22:56 »

949
C/C++ / Re: funciones
« en: Sábado 21 de Febrero de 2009, 14:47 »
En ambos casos te falta cerrar un parantesis.

950
C/C++ / Re: Diseño de un programa interactivo...
« en: Viernes 20 de Febrero de 2009, 08:13 »
Cita de: "betopin"
Pero...pregunta...si esta misma persona hubiera posteado su problema en el apartado de RETOS ...seguiria habiendo problemas?...es decir...entiendo que lo que busca el foro...entre otras...es realizar una retroalimentacion de conocimientos, pero entonces este subforo que utilidad real tiene???...porque pensaria yo que para el caso serviria y muy bien para esto...y si no es asi...quien entonces postula en ese apartado los RETOS???...cualquiera???...debe tener un minimo de posts???...debe pertenecer al staff del foro???...por los temas que hay alli pensaria que no.

Es irrelevante, eso lo decidira el moderador del sub-foro de retos (en este caso no hay asi que todo queda en manos del administrador). Si fuera por mi ese sub-foro no existiria, no le veo ningun sentido ni utilidad.

Cita de: "betopin"
Claro esta, digo esto sin animo de levantar polvareda, pero al menos a mi si me gustaria tener claro entonces la utilidad de ese apartado porque podria pensarse que es lo que no desea el foro... pero camuflado de otra forma. Ahora bien, porque no mover temas como estos alli...cada quien vera si asume el RETO o no....no?

No me parece que sea el objetivo con el cual fue creado ese sub-foro ni mucho menos. Tal vez no hayas leido el primer mensaje del mismo:

"Este SUB-FORO no debe usarse para que otr@s programadores/as te hagan el trabajo que TU debes hacer (por ejemplo, ejercicios-practicas de clase), este sub-foro solo ha sido creado para aumentar los conocimientos de tod@s, no para que nos hagan los trabajos propios:P."

Páginas: 1 ... 36 37 [38] 39 40 ... 205