|
Mostrar Mensajes
|
Páginas: [1] 2
|
1
|
Programación / Programación C/C++ / Re: Se puede guardar datos en la memoria fisica del pc programando en c?
|
en: 9 Noviembre 2014, 02:53 am
|
Usted tiene razon, nunca mas usamos la memoria fisica! muy volatil esa memoria! siempre usa archivos! nunca puede usar memoria fisica! (sarcasmo). Y soy ruso, eso le molesta?
Ya vas a ver que he escribido mas drivers que usted tiene anos. Posteare eso en mi cuenta en el osr list (donde los expertos de verdad viven:) ). Vamos a reir mucho de ti, tendras verguenza.
he ayudado en un dia mas gente que usted ha ayudado en una semana en ese foro , pero me salgo! llena de mujeres zelosas como usted, buscando discutir.
"La mano invisible del mercado me robo la billetera"
mano invisible? es una polla muy visible que despues de tomar toda su pinche plata - va directemente en su culo y no hace nada, llora por su blog (pasioncris) waaa como la mujer que es.
jajjaja picnhe p**a adios
|
|
|
3
|
Programación / ASM / Re: Conversion de bases, consulta
|
en: 9 Noviembre 2014, 01:16 am
|
Exactamente que quiere hacer?. En ASM todo ya es base 2, pero lo leamos en base 16. En ASM todo lo siguente es igual mov eax , 0xf
mov eax, 15d
mov eax, 00001111b
Si no refiere a eso, tendria que estar hablando de punteros del string asi? en ese caso puede usar strtol de libc string = "12344321" // d base = 2
push string push NULL // no se necisita por convercion push base call strtol()
cmp eax, 0 // eax tendra la respuesta jnz etc etc...
Seria mejor si postea su codigo pra mostrar su problema
fofaso - Recibi su mensaje privado, seria mejor si usted postea su codigo aqui para tener mas opiniones.
|
|
|
6
|
Programación / Programación C/C++ / Re: Dimensionar un vector dentro de un struct
|
en: 9 Noviembre 2014, 00:38 am
|
Es cuestion de preferencia y estilo (pra mi es mas facil leer) - no hace diferencia en el ASM que compila. Cosas asi no van a afectar el comprtamiento del programa y en ese caso solo es estitica.
tambem se me olvido hacer el checkeo de errores en el malloc(). tiene que hacer algo asi despues de cada llamada a malloc()
if Primera.Trabajos o Primera == NULL goto FINAL;
tambien, despues de liberarlos, tiene que poner el valor a cada variable a NULL. es buena practica para evitar la explotacion "use after free"
|
|
|
7
|
Seguridad Informática / Bugs y Exploits / Re: Ayuda para mi primer exploit
|
en: 8 Noviembre 2014, 22:47 pm
|
No puede ver un crash porque eso no es un buffer overflow. Si ponga una llamada a "printf("%s\n", string)" despues del strcpy va a mostrar exactamente lo que puso sin error, aun que el buffer es "demasiada pequena".
Un bufferoverflow no siempre va a pasar cuando hay un buffer demasiada pequena. Los overflows del stack solo pasan cuando hay otro data en el stack para borrar, en en ese caso debido al tomano de la programa, no hay otra informacion, y la programa sigue normalmente. Si ponga mas variables, y hace mas operaciones dentro de su programa, antes de la llamada a strcpy, tal vez puede ver un overflow.
Yo le recomendaria practicar con otras programas que ya son explotadas para aprender.
|
|
|
8
|
Programación / Programación C/C++ / Re: Modificar brillo,contraste... en la pantalla
|
en: 8 Noviembre 2014, 22:23 pm
|
En windows y linux - eso dependaria en cual driver esta usando y la respuesta va a ser diferente por sistemas diferentes. En windows, GetDeviceGammaRamp y SetDeviceGammaRamp podria funcionar en bastantes sistemas, pero no todas.
Creo que ese funcion no va a ser muy documentada, porque muchos manufactores solo quieren que su software hace eso, y tendria que hacer el ingeniera reversa para averiguar el IOCTL que corresponde al driver.
|
|
|
9
|
Programación / Programación C/C++ / Re: Dimensionar un vector dentro de un struct
|
en: 8 Noviembre 2014, 21:54 pm
|
Bueno, me parece que usted sabe de lo que habla aun que no entiendo exactamente cual es su objectivo final, pero eso es como hacer el codigo para que compila bien. Eso imprima hasta 32. La proxima vez, deberia poner su error de compilicaion y decir que quiere hacer "un array de int dentro de un array de struct" : ) suerte typedef struct Humano { int* Trabajos; } HUMANO, *PHUMANO; int main () { int CantidadDeTrabajos = 4; // int CantidadDePersonas = 8; // personas int Cont = 0; // declarar espacio por un array de struct PHUMANO Primera = (PHUMANO)malloc(sizeof(HUMANO) * CantidadDePersonas); // por cada persona, declara un array dentro el struct for (int i = 0; i < CantidadDePersonas; i++) Primera[i].Trabajos = (int*)malloc(sizeof(int) * CantidadDeTrabajos); for (int i = 0; i < CantidadDePersonas; i++) { for (int j = 0; j < CantidadDeTrabajos; j++) { Cont += 1; Primera[i].Trabajos[j] = Cont; } } for (int i = 0; i < CantidadDePersonas; i++) for (int j = 0; j < CantidadDeTrabajos; j++) printf("Trabajo#%i\n", Primera[i].Trabajos[j]); //Primera[0].Trabajos[0] = 248;
//printf("Primera->Trabajos = %i\n", Primera[0].Trabajos[0]); for (int i = 0; i < CantidadDePersonas; i++) free((int*)Primera[i].Trabajos); free(Primera); _getch (); return 0; }
Modificacion - Al respecto a 1 - no estamos trabajando con los vectores, estos son arrayes (son parecidos pero hay diferencias). Todavia si estariamos trabajando con vectores, la alocacion dinamica no seria necesario por ese codigo. Tambien, los vectores son de C++, asi que si quiere usar vectores - seria mejor usar new/delete en vez de malloc/free (eso no va a cambiar el comportamiento de su programa, solo para notar la diferencia entre C y C++ y por que no es mejor practica a mezclarlos). Generalmente, la alocacion dinamica es necesario solo cuando acepta algun tipo de input, sea de un archivo, stdin, socket, etc. Cuando hace un inicilizacion estatica (int i = 0), esa secion de memoria (los 4 bytes) SIEMPRE va a ser libre para manipular, si o si.
|
|
|
10
|
Programación / Programación C/C++ / Re: Dimensionar un vector dentro de un struct
|
en: 8 Noviembre 2014, 20:36 pm
|
1. Estas usando un puntero doble... por que? 2. El tomano del int siempre va a ser 4 bytes. Por cada persona, hay que allocar otro struct. Si no quiere hacer eso, hay que poner mas variables dentro de su struct. Trata eso, pra mi funciono typedef struct Humano { int Trabajos; } HUMANO, *PHUMANO; int main () { PHUMANO Primera = (PHUMANO)malloc(sizeof(HUMANO));
Primera->Trabajos = (int)malloc(sizeof(int)); // nunca debe hacer eso por que es allocacion dinamica y eso es un valor estatico pero // solo es pra mostrar como funciona Primera->Trabajos = 248;
printf("Primera->Trabajos = %i\n", Primera->Trabajos); free((int*)Primera->Trabajos); free(Primera); return 0; }
Acabo de ver eso, y en ese caso no es necesario usar la alocacion dinamica porque en linea 10 "cont" es un valor estatico. Es decir que ya esta en el stack y la memora ya viene allocada del imagen. modificacion - disculpe - en linea 11 es la declaracion estatica y en linea 23 pongas un valor dinamica a un valor estatica.
Ok, veo porque usa un puntero doble. Quiere hacer un int array dentro de un struct. Debe hacer asi: typedef struct Humano { int* Trabajos; } HUMANO, *PHUMANO; int main () { // eso coresponde al tomano de su array int NumeroDeElementos = 30; PHUMANO Primera = (PHUMANO)malloc(sizeof(HUMANO));
Primera->Trabajos = (int*)malloc(sizeof(int) * NumeroDeElementos); // nunca debe hacer eso por que es allocacion dinamica y eso es un valor estatico pero // solo es pra mostrar como funciona Primera->Trabajos[15] = 248;
printf("Primera->Trabajos = %i\n", Primera->Trabajos[15]); free((int*)Primera->Trabajos); free(Primera); return 0; }
modificaion - se me olvido poner un *
|
|
|
|
|
|
|