|
101
|
Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor.
|
en: 23 Abril 2011, 10:25 am
|
Lo que te pase no debería de comerse ningún numero, si lo dices por la salida por pantalla, es el printf el que no los muestra printf("Numero %08X Invertido %08X\n",Numero,Invertido);
Con esta modificacion muestra tambien los 0 de arriba, pero que no los mostrara no significa que no los invierta. Ese trozo lo puse para que vieras el resultado Este code esta filtrando en grupos de 2bytes (16bits) if ( addr & 0x2 ) data = (data>>16)&0xffff ; else data = (data&0x0000ffff) ;
|
|
|
102
|
Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor.
|
en: 22 Abril 2011, 11:18 am
|
si quieres invertirlos haz algo así: long Numero = 0x01020304;//Este es el numero que vamos a invertir long Invertido = 0;//Lo guardaremos aqui //Cojo la direccion de la variable con & y ago un cast de tipos con (char*) //para que lo interprete como un array de bytes; //[X] es el indice del array que siempre empieza en zero; Un long tiene 4 bytes por lo que el mayor indice seria 3 y el menor 0 ((char*)&Invertido)[0] = ((char*)&Numero)[3]; ((char*)&Invertido)[1] = ((char*)&Numero)[2]; ((char*)&Invertido)[2] = ((char*)&Numero)[1]; ((char*)&Invertido)[3] = ((char*)&Numero)[0]; printf("Numero %X Invertido %X\n",Numero,Invertido);
Lo de leerlos de 4 en 4 o de 1 en 1 solo debería de tener importancia al mostrarlos por pantalla, en el archivo se van a guardar igual porque no modificas lo que recibes, solo afecta a la forma de interpretar el numero.(Lectura)
|
|
|
105
|
Programación / Programación C/C++ / Re: (Duda) Pregunta readprocessmemory array
|
en: 15 Abril 2011, 18:49 pm
|
Hola disculpen que postee de nuevo, tengo una duda!! yo llamo asi a la funcion: long ReadLongVb (long Address) { BYTE Array[30]; ReadLong(Address,&Array,30); return (Array[0]); } Esa es la funcion a la que llamo desde vb, seguramente se podra hacer directamente a la funcion ReadLong, pero bueno es la forma mas facil que encontre y funciona bien . Entonces en vb recibo el array 0, pero la pregunta es, como hago para que me retorne todo el array completo? E intentado muchas cosas pero no logre hacer que me retorne todo el array: 30... Gracias! para eso necesitas usar punteros, el problema es que VB no te deja manejar punteros directamente. tambien necesitarias usar memoria dinamica, porque las variables locales son sobrescritas al salir de la funcion que las creo, por lo que si la funcion debuelve un puntero a una variable local en esta no estara el contenido que uno espera. EDIT: mirate esta pagina: http://www.psicofxp.com/forums/programacion.313/292049-punteros-en-vb.html
|
|
|
106
|
Programación / Programación C/C++ / Re: Pregunta readprocessmemory array
|
en: 12 Abril 2011, 22:02 pm
|
Hola Arcangel_0x7C5, gracias por contestarme... Bueno aver yo la llamo asi mira: DWORD dwHP; ReadLong(Address,&dwHP,"4");
Pero si en vez de 4 pongo mas, me tira error Esto me devuelve la funcion: "7471216" Que no se que tiene que ver con: "70 00 72 00 75 00 65 00 62 00 61" :S Gracias! porque un DWORD solo permite almacenar 4 bytes. De todas maneras, el 4 entre comillas es una cadena de caracteres y no un numero entero. por lo que me extraña que no te de error yo haria esto: BYTE Array[20]; ReadLong(Address,&Array,20);
y con DWORD asi: DWORD Array[20]; ReadLong(Address,&Array,sizeof(DWORD)*20);
|
|
|
109
|
Programación / .NET (C#, VB.NET, ASP) / Re: Conversión de código de MazarD a C#
|
en: 17 Marzo 2011, 23:18 pm
|
... No estoy inyectando código para iniciar mi controlador... de hecho, es todo lo contrario; Inicio mi controlador, para poder inyectar código sin problema alguno... . Entonces no necesitas portar ese código para inyectar, porque el propio driver puede inyectarte en el proceso que quieras. En Ring0 tiene Acceso al Espacio de memoria de todos los procesos. Pero el código de Ring3 no tiene porque funcionar en el 0.
|
|
|
110
|
Programación / .NET (C#, VB.NET, ASP) / Re: Conversión de código de MazarD a C#
|
en: 17 Marzo 2011, 22:15 pm
|
una pregunta, para que necesitas inyectar código para iniciar el servicio del Driver. La unica razon que se me ocurre es por cuestiones de sigilo. Porque no puedes aprir un proceso con permisos de administrador desde uno que no los tenga (Excepto en caso de algun bug).
Saludos
|
|
|
|
|
|
|