elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  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
2  Programación / Programación C/C++ / Re: Se puede guardar datos en la memoria fisica del pc programando en c? en: 9 Noviembre 2014, 01:33 am
esos direciones de memoria "virtual" estan mapeados directamente a la memoria fisica.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa965226%28v=vs.85%29.aspx

" The nonpaged pool consists of virtual memory addresses that are guaranteed to reside in physical memory as long as the corresponding kernel objects are allocated. The paged pool consists of virtual memory that can be paged in and out of the system. "

Aun que dice que si, el PagedPool tampoco no es tan "virtual" por que es mas parecido al archivo.

No entiendo a que refiere con "IRQL >= DISPATCH_LEVEL" por que el IRQL no tiene nada que ver con la memoria fisica.

Solo sito68 dice 'memoria fisica' y hay varias tipos de memoria fisica. Esto no es la unica manera, hay bastantes otras.
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

Código:
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

Código:

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.
4  Programación / Programación C/C++ / Re: Se puede guardar datos en la memoria fisica del pc programando en c? en: 9 Noviembre 2014, 00:46 am
Yo no sabia que es volatil... ; )

Generalmente, eso no es posible desde el espacio del usuario (sin IOCTL). Hay bastantes maneras de hacerlo desde el kernel, deberia impesar estudiando la diferencia entre Paged y NonPaged memoria pools con llamada a ExAllocPoolWithTag(). (NonPaged pool = memoria fisica)
5  Programación / Programación C/C++ / Re: Modificar brillo,contraste... en la pantalla en: 9 Noviembre 2014, 00:42 am
linux - cambiar /sys/class/backlight/acpi_video0/brightness (para ubuntu y arch me funciona)

como te dije, eso no funcionara con todos y todo depende del driver que usa. es mejor hablar directamente con el driver.
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

Código:
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

Código:
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:

Código:
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 *
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines