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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Direccion sección
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Direccion sección  (Leído 10,364 veces)
soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Direccion sección
« Respuesta #10 en: 9 Agosto 2010, 01:59 am »

Jeje para decir que no me ves capacitado si debes de creerlo, en unos dias te pongo un codigo, para que lo veas ;)

PD. Lo que si resulta facil es aconsejar en vez de decir, esto tienes que aprender, eso si que es poner interes, uff
« Última modificación: 9 Agosto 2010, 02:04 am por soez » En línea

01001010 01100001 01110110 01101001 01100101 01110010
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Direccion sección
« Respuesta #11 en: 9 Agosto 2010, 02:06 am »

Yo no he dicho que no te veo capacitado, te he dicho que tendrias que estudiar el formato de los ficheros con los que quieres trabajar. como ya te he demostrado en el estaban tus dudas aclaradas.

En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Direccion sección
« Respuesta #12 en: 9 Agosto 2010, 02:10 am »

Yo no me referia a poco o mucho capacitado, si no el interes que pongo

Yo no he dicho que no te veo capacitado, te he dicho que tendrias que estudiar el formato de los ficheros con los que quieres trabajar. como ya te he demostrado en el estaban tus dudas aclaradas.

EDITO: Lo tenia hecho desde ayer, lo que pasa que no se por que no me funca, si pregunto es por algo, y aprendo mas programando que estudiandolo

Código
  1. //Variables cabecera
  2.                    PIMAGE_DOS_HEADER PIDH;
  3.                    PIMAGE_NT_HEADERS PINTH;
  4.                    PIMAGE_SECTION_HEADER PISH;
  5.                    LPSTR lpFileMaped;
  6.                    //Direccion DOS
  7.                    PIDH=(PIMAGE_DOS_HEADER)&lpFileMaped[0];
  8.                    //Cogemos la direccion donde empieza el PE
  9.                    PINTH=(PIMAGE_NT_HEADERS)&lpFileMaped[PIDH->e_lfanew];
  10.                    //Manejador
  11.                    HANDLE hFile;
  12.                    //Escribimos variables
  13.                    DWORD dwTamArchivo, dwNumeroBytesLeidos;
  14.                    //Recorremos todas las secciones
  15.                    //for(DWORD i=0; i<INTH->FileHeader.NumberOfSections; i++)
  16.                    //{
  17.                        //Cogemos la direccion de la sección
  18.                        PISH=(PIMAGE_SECTION_HEADER)&lpFileMaped[PIDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*1];
  19.                        //Abrimos el fichero
  20.                        hFile = CreateFileA(szArchivo,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
  21.                        //Obtenemos el tamaño del archivo y los pasa a bytes
  22.                        dwTamArchivo = GetFileSize(hFile,0);
  23.                        //Creamos un buffer que contendrá el contenido de la sección en bytes
  24.                        LPSTR lpBuffer = (LPSTR)GlobalAlloc(GPTR, dwTamArchivo);
  25.                        //Leemos la sección una vez pasado a bytes, metiendo el contenido en lpBuffer
  26.                        ReadFile(hFile, lpBuffer, dwTamArchivo - (PISH->PointerToRawData + PISH->SizeOfRawData), &dwNumeroBytesLeidos,0);
  27.                        //Nos colocamos en la sección
  28.                        SetFilePointer(hFile, PISH->PointerToRawData, 0, 0);
  29.                        //Ciframos o desciframos con XOR ^ 100
  30.                        for(DWORD j=0; j<0PISH->SizeOfRawData; j++){
  31.                        lpBuffer[j]^=250;}
  32.                        //Nos colocamos en la sección
  33.                        SetFilePointer(hFile, PISH->PointerToRawData, 0, 0);
  34.                        //Sobreescribimos los nuevos carácteres
  35.                        WriteFile(hFile, lpBuffer, dwTamArchivo - (PISH->PointerToRawData + PISH->SizeOfRawData), &dwNumeroBytesLeidos,0);
  36.                    //}//for i
  37.                    //ciframos
  38.                    //Cerramos el fichero
  39.                    CloseHandle(hFile);
  40.  

Esto en la nueva sección estaria bien?


inicio = INTH.OptionalHeader.ImageBase + ISH.VirtualAddress;  
final = INTH.OptionalHeader.ImageBase + ISH.VirtualAddress + ISH.misc.VirtualSize;

y el nuevo entry point ?

INTH.OptionalHeader.AddressOfEntryPoint = INTH.OptionalHeader.ImageBase + ISH.VirtualAddress + INTH.OptionalHeader.sizeofimage

Contando con que la sección tenga caracteristicas de escritura
« Última modificación: 9 Agosto 2010, 05:08 am por soez » En línea

01001010 01100001 01110110 01101001 01100101 01110010
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Direccion sección
« Respuesta #13 en: 9 Agosto 2010, 18:35 pm »

Valla animos que das majete, debes de creerte el unico capacitado.

Deberias de ponerte en mi posicion cuando no sabia ingles y queria aprender ASM, pregunte en un lugar y me dieron lo que tenia que leer, dije que no entendia y me dijeron que era un p*to que no daria para esto por preguntar tanto, que dejara de intentar programar y me fuera a jugar algun juego de esos que con un manual sale sencillo... Ctlon  y Zero no estan mostrando que esten capacitados o no, si estan ahi es porque deben de estarlo. hay un señor que dijo.

"Dale un Pez y comera por un Dia, enseñalo a pezcar  y comera toda la vida".
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Direccion sección
« Respuesta #14 en: 9 Agosto 2010, 19:59 pm »

lo primero que no me gusta es que ni verificas el resultado de las funciones y continuas llamando una tras otra sin control alguno, pon el codigo completo si tienes dudas y soluciona lo primero.
En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Direccion sección
« Respuesta #15 en: 9 Agosto 2010, 20:04 pm »

Bueno ya he hecho avances, nose si la parte de la encryptacion esta bien.

Código
  1. PIMAGE_DOS_HEADER IDH;
  2.                    PIMAGE_NT_HEADERS INTH;
  3.                    PIMAGE_SECTION_HEADER ISH;
  4.                    //Direccion DOS
  5.                    //Manejador
  6.                    HANDLE hFile;
  7.                    //Escribimos variables
  8.                    DWORD dwTamArchivo, dwNumeroBytesLeidos;
  9.                    //Abrimos el archivo
  10.                    hFile = CreateFileA(szArchivo,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
  11.                    //Obtenemos el tamaño del archivo y los pasa a bytes
  12.                    dwTamArchivo = GetFileSize(hFile,0);
  13.                    //Creamos un buffer que contendrá el contenido del archivo en bytes
  14.                    LPSTR lpBuffer = (LPSTR)GlobalAlloc(GPTR, dwTamArchivo);
  15.                    //Metemos el archivo en lpBuffer
  16.                    ReadFile(hFile, lpBuffer, dwTamArchivo, &dwNumeroBytesLeidos,0);
  17.                    //Cogemos direccion del DOS
  18.                    IDH=(PIMAGE_DOS_HEADER)&lpBuffer[0];
  19.                    //Cogemos la direccion donde empieza el PE
  20.                    INTH=(PIMAGE_NT_HEADERS)&lpBuffer[IDH->e_lfanew];
  21.  
  22.                    for(DWORD i=1; i<INTH->FileHeader.NumberOfSections; i++)
  23.                    {
  24.                        MessageBoxA(0, "He entrao en el for","",0);
  25.                        //Cogemos la direccion de la sección
  26.                        ISH=(PIMAGE_SECTION_HEADER)&lpBuffer[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  27.                        //Ciframos o desciframos con XOR ^ 250
  28.                        for(DWORD j=ISH->PointerToRawData; j<ISH->PointerToRawData+ISH->SizeOfRawData; j++){
  29.                        lpBuffer[j]^=250;}
  30.                        //Nos colocamos al principio del fichero
  31.                        SetFilePointer(hFile, 0, 0, FILE_BEGIN);
  32.                        //Sobreescribimos los nuevos carácteres
  33.                        WriteFile(hFile, lpBuffer, dwTamArchivo, &dwNumeroBytesLeidos,0);
  34.                    }//for i
  35.                    //ciframos
  36.                    //Cerramos el fichero
  37.                    CloseHandle(hFile);
  38.  

PD. No tengo nada en contra de [zero]

EDITO: Me falta escribir la parte de la nueva sección

Código
  1. //Variables cabecera
  2.                    PIMAGE_DOS_HEADER IDH;
  3.                    PIMAGE_NT_HEADERS INTH;
  4.                    PIMAGE_SECTION_HEADER ISH;
  5.                    //Direccion DOS
  6.                    //Manejador
  7.                    HANDLE hFile;
  8.                    //Escribimos variables
  9.                    DWORD dwTamArchivo, dwNumeroBytesLeidos;
  10.                    DWORD NuevaSeccion=0x200;
  11.                    //Abrimos el archivo
  12.                    hFile = CreateFileA(szArchivo,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
  13.                    //Obtenemos el tamaño del archivo y los pasa a bytes
  14.                    dwTamArchivo = GetFileSize(hFile,0);
  15.                    //Creamos un buffer que contendrá el contenido del archivo en bytes
  16.                    LPSTR lpBuffer = (LPSTR)GlobalAlloc(GPTR, dwTamArchivo);
  17.                    //Buffer para arrastrar el PE
  18.                    LPSTR lpTemporal = (LPSTR)GlobalAlloc(GPTR, dwTamArchivo + NuevaSeccion);
  19.                    //Metemos el archivo en lpBuffer
  20.                    ReadFile(hFile, lpBuffer, dwTamArchivo, &dwNumeroBytesLeidos,0);
  21.                    //Copiamos el contenido del inicial al temporal
  22.                    CopyMemory(&lpTemporal[0],&lpBuffer[0], dwTamArchivo);
  23.                    //Rellenamos con ceros la nueva sección
  24.                    memset(&lpTemporal[dwTamArchivo], '\x90', NuevaSeccion);
  25.                    //Cogemos direccion del DOS
  26.                    IDH=(PIMAGE_DOS_HEADER)&lpTemporal[0];
  27.                    //Cogemos la direccion donde empieza el PE
  28.                    INTH=(PIMAGE_NT_HEADERS)&lpTemporal[IDH->e_lfanew];
  29.                    //Ajustamos el VirtualSize de las Secciones
  30.                    for(DWORD i=0;i<INTH->FileHeader.NumberOfSections;i++){
  31.                        ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  32.                        ISH->Misc.VirtualSize=ISH->SizeOfRawData;
  33.                    }
  34.                    //Ajusatmos i al numero de secciones
  35.                    DWORD i=INTH->FileHeader.NumberOfSections-1;
  36.                    //Copiamos el contenido 40 bytes antes
  37.                    CopyMemory(&lpTemporal[IDH->e_lfanew-0x28],&lpBuffer[IDH->e_lfanew],sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i);
  38.                    //rellenamos con nops
  39.                    memset(&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i],'\x90', 0x28);
  40.                    //Nos dirigiemos a la nueva sección
  41.                    IDH->e_lfanew=IDH->e_lfanew-0x28;
  42.                    INTH=(PIMAGE_NT_HEADERS)&lpTemporal[IDH->e_lfanew];
  43.                    //Creamos los valores a la nueva sección
  44.                    ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  45.                    BYTE NuevoNombre[7]=".nueva";
  46.                    CopyMemory(ISH->Name, NuevoNombre, 7);
  47.                    ISH->SizeOfRawData=NuevaSeccion;
  48.                    ISH->PointerToRawData=dwTamArchivo;
  49.                    ISH->Characteristics=0xE0000020;
  50.                    ISH->VirtualAddress=ISH->VirtualAddress+INTH->OptionalHeader.SectionAlignment;
  51.                    ISH->Misc.VirtualSize=NuevaSeccion;
  52.                    //Ajustamos OptionalHeader sections
  53.                    INTH->FileHeader.NumberOfSections+=1;
  54.                    //Ajustamos el tamaño del archivo
  55.                    INTH->OptionalHeader.SizeOfImage=INTH->OptionalHeader.SizeOfImage + ISH->Misc.VirtualSize;
  56.                    //Cogemos el actual EntryPoint
  57.                    DWORD EntryP=INTH->OptionalHeader.ImageBase + INTH->OptionalHeader.AddressOfEntryPoint;
  58.                    //Actualizamos el nuevo EntryPoint
  59.                    INTH->OptionalHeader.AddressOfEntryPoint=INTH->OptionalHeader.ImageBase + ISH->VirtualAddress ;
  60.                    for(DWORD i=0; i<INTH->FileHeader.NumberOfSections-1; i++)
  61.                    {
  62.                        if((ISH->Characteristics&0xE0000020)==0xE0000020){
  63.                        //Cogemos la direccion de la sección
  64.                        ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  65.                        //Cogemos inicio y fin de la sección
  66.                        DWORD inicio=ISH->PointerToRawData;
  67.                        DWORD fin=ISH->PointerToRawData + ISH->SizeOfRawData;
  68.                        //Encryptamos
  69.                        while(inicio<fin){lpBuffer[inicio]^=250;inicio++;}
  70.                        }
  71.                    }//for i
  72.                    //Escribimos en la nueva sección
  73.                    LPSTR lpFinal = (LPSTR)GlobalAlloc(GPTR, 0x15);
  74.                    lpFinal="\x68\x00\x00\x00\x00"
  75.  
  76.                            "\xc3";
  77.  
  78.                    //Copiamos el contenido al final del archivo
  79.                    CopyMemory(&lpTemporal[dwTamArchivo],&lpFinal[0], 0x15);
  80.                    //Nos colocamos al principio del fichero
  81.                    SetFilePointer(hFile, 0, 0, FILE_BEGIN);
  82.                    //Sobreescribimos los nuevos carácteres
  83.                    WriteFile(hFile, lpTemporal, dwTamArchivo + NuevaSeccion, &dwNumeroBytesLeidos,0);
  84.                    //Cerramos el fichero
  85.                    CloseHandle(hFile);
  86.  

EDITO: Bueno lo ultimo, hay algun dato que falla

Código
  1. //Variables cabecera
  2.                    PIMAGE_DOS_HEADER IDH;
  3.                    PIMAGE_NT_HEADERS INTH;
  4.                    PIMAGE_SECTION_HEADER ISH;
  5.                    //Manejador
  6.                    HANDLE hFile;
  7.                    HANDLE FileMaped;
  8.                    //Escribimos variables
  9.                    DWORD dwTamArchivo, dwNumeroBytesLeidos;
  10.                    DWORD NuevaSeccion;
  11.                    //Abrimos el archivo
  12.                    hFile = CreateFileA(szArchivo,GENERIC_READ+GENERIC_WRITE,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
  13.                    //Obtenemos el tamaño del archivo y los pasa a bytes
  14.                    dwTamArchivo = GetFileSize(hFile,0);
  15.                    //Mappeamos el archivo
  16.                    FileMaped=CreateFileMapping (hFile, 0, PAGE_READWRITE, 0, 0, 0);
  17.                    //Creamos un buffer que contendrá el archivo mappeado
  18.                    LPSTR lpBuffer=(LPSTR)GlobalAlloc(GPTR, dwTamArchivo);
  19.                    lpBuffer=(LPSTR)MapViewOfFile(FileMaped,FILE_MAP_ALL_ACCESS,0,0,0);
  20.                    CloseHandle(FileMaped);
  21.                    //Cogemos direccion del DOS
  22.                    IDH=(PIMAGE_DOS_HEADER)&lpBuffer[0];
  23.                    //Cogemos la direccion donde empieza el PE
  24.                    INTH=(PIMAGE_NT_HEADERS)&lpBuffer[IDH->e_lfanew];
  25.                    //Cogemos tamaño de la nueva sección
  26.                    NuevaSeccion=INTH->OptionalHeader.FileAlignment;
  27.                    //Buffer para arrastrar el PE
  28.                    LPSTR lpTemporal = (LPSTR)GlobalAlloc(GPTR, dwTamArchivo + NuevaSeccion);
  29.                    //Copiamos el contenido del archivo mappeado al temporal
  30.                    CopyMemory(&lpTemporal[0], &lpBuffer[0], dwTamArchivo);
  31.                    //Cogemos direccion del DOS
  32.                    IDH=(PIMAGE_DOS_HEADER)&lpTemporal[0];
  33.                    //Cogemos la direccion donde empieza el PE
  34.                    INTH=(PIMAGE_NT_HEADERS)&lpTemporal[IDH->e_lfanew];
  35.                    //Rellenamos con ceros la nueva sección
  36.                    memset(&lpTemporal[dwTamArchivo], 0x00, NuevaSeccion);
  37.                    //Ajustamos el VirtualSize de las Secciones
  38.                    for(DWORD i=0;i<INTH->FileHeader.NumberOfSections;i++){
  39.                        ISH=(PIMAGE_SECTION_HEADER)&lpBuffer[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  40.                        ISH->Misc.VirtualSize=ISH->SizeOfRawData;
  41.                    }
  42.                    //Ajusatmos i al numero de secciones
  43.                    DWORD i=INTH->FileHeader.NumberOfSections;
  44.                    //Cogemos el antiguo VirtualAddress
  45.                    ISH=(PIMAGE_SECTION_HEADER)&lpBuffer[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*(i-1)];
  46.                    DWORD UltimoVirtualAddress=ISH->VirtualAddress;
  47.                    DWORD UltimoPointToRawData=ISH->PointerToRawData;
  48.                    DWORD UltimoSizeOfRawData=ISH->SizeOfRawData;
  49.                    //Movemos el PE el contenido 40 bytes antes
  50.                    CopyMemory(&lpTemporal[IDH->e_lfanew-0x28],&lpBuffer[IDH->e_lfanew],sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i);
  51.                    //rellenamos con ceros
  52.                    memset(&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*(i-1)],0x00, 0x28);
  53.                    //Recolocamos la direccion del PE
  54.                    IDH->e_lfanew=IDH->e_lfanew-0x28;
  55.                    //Nos dirigiemos a la nueva sección
  56.                    INTH=(PIMAGE_NT_HEADERS)&lpTemporal[IDH->e_lfanew];
  57.                    //Nos colocamos en la ultima sección
  58.                    ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  59.                    BYTE NuevoNombre[8]=".nueva";
  60.                    CopyMemory(ISH->Name, NuevoNombre, 8);
  61.                    ISH->Misc.VirtualSize=NuevaSeccion;
  62.                    ISH->VirtualAddress=UltimoVirtualAddress+INTH->OptionalHeader.SectionAlignment;
  63.                    ISH->SizeOfRawData=NuevaSeccion;
  64.                    ISH->PointerToRawData=UltimoPointToRawData+UltimoSizeOfRawData;
  65.                    ISH->Characteristics=0xE0000020;
  66.                    //Ajustamos OptionalHeader sections
  67.                    INTH->FileHeader.NumberOfSections++;
  68.                    INTH->OptionalHeader.SizeOfImage=ISH->VirtualAddress+INTH->OptionalHeader.SectionAlignment;
  69.                    //Cogemos el actual EntryPoint
  70.                    DWORD EntryP=INTH->OptionalHeader.ImageBase + INTH->OptionalHeader.AddressOfEntryPoint;
  71.                    //Actualizamos el nuevo EntryPoint
  72.                    //INTH->OptionalHeader.AddressOfEntryPoint=UltimoPointToRawData+UltimoSizeOfRawData;
  73.                    //Declaramos variables para coger secciones
  74.                    DWORD cont;
  75.                    for(DWORD i=0; i<INTH->FileHeader.NumberOfSections-1; i++)
  76.                    {
  77.                        //Cogemos la direccion de la sección
  78.                        ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*i];
  79.                        if(ISH->Characteristics==0x20000020){
  80.                            cont=i; MessageBoxA(0, "for","",0);
  81.                            //Cogemos inicio y fin de la sección
  82.                            DWORD inicio=ISH->VirtualAddress;
  83.                            DWORD fin=ISH->VirtualAddress + ISH->SizeOfRawData;
  84.                            //Encryptamos
  85.                            while(inicio<fin){lpTemporal[inicio]^=250;inicio++;}
  86.                        }
  87.                    }//for i
  88.                    //Escribimos en la nueva sección
  89.                    ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*0];
  90.                    DWORD ini=INTH->OptionalHeader.ImageBase + ISH->VirtualAddress;
  91.                    ISH=(PIMAGE_SECTION_HEADER)&lpTemporal[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*0];
  92.                    DWORD fini=INTH->OptionalHeader.ImageBase + ISH->VirtualAddress + ISH->SizeOfRawData;
  93.                    //Creamos la sección para desencryptar
  94.                    BYTE retorno[]={0x68,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x5B,0x58,0x59,0x80,0x30,0xFA,0x40,0x3B,0xC3,0x75,0xF8,0xFF,0xE1};
  95.                    *(DWORD *)&retorno[0x01]=EntryP;
  96.                    *(DWORD *)&retorno[0x06]=ini;
  97.                    *(DWORD *)&retorno[0x0B]=fini;
  98.                    //Introducimos el descifrado
  99.                    CopyMemory(&lpTemporal[UltimoPointToRawData+UltimoSizeOfRawData], (PVOID)retorno, 0x20);
  100.                    //Nos colocamos al principio del fichero
  101.                    SetFilePointer(hFile, 0, 0, FILE_BEGIN);
  102.                    //Sobreescribimos los nuevos carácteres
  103.                    WriteFile(hFile, &lpTemporal[0], dwTamArchivo+NuevaSeccion, &dwNumeroBytesLeidos,0);
  104.                    //Cerramos el fichero
  105.                    CloseHandle(hFile);
  106.                    //Liberamos memoria
  107.                    GlobalFree(lpTemporal);
  108.                    GlobalFree(lpBuffer);
  109.  
« Última modificación: 14 Agosto 2010, 12:03 pm por soez » En línea

01001010 01100001 01110110 01101001 01100101 01110010
Jeferi


Desconectado Desconectado

Mensajes: 886



Ver Perfil WWW
Re: Direccion sección
« Respuesta #16 en: 16 Agosto 2010, 02:50 am »

No tengo NI IDEA del formato PE. Pero tienes razon.


Es como el que dice.

Necesito hacer un login en PHP! > Estudia PHP

Si perfecto.

Pero porque no decir.

Mira pues yo sabiendo sobre programacion te diria estructurar antes el sistema. Haras un sistema en 3 fases. Fase 1 , 2 y 3.

Fase 1. Introducir los datos. Se hara en form.html..


Fase 2. Recibir y comprobar datos... como haremos esto? facil:

<? codigo ?>

hacemos $user=$_POST[user] para....

AHORA estudiate eso.

Os aseguro que el tio ha entendido mas que cuando se lee y estudia un tutorial de PHP. La experiencia y practica en manos de expertos, hace que se haga facil y sencillo transferir o traducir los conocimientos a la teoria, en vez de la teoria de un novato sin haber aplicado la practica. Eso esta clarisimo.

Seguro que de chico cuando bebe aprendias de tus padres y no de otros bebes con los que te juntabas.



No aprende mas el que estudia, sino el que mas pregunta y se lo estudia amigos

Un saludo

PD: Lo siento por hacer este offtopic y por no contestar a tu pregunta, pero no tengo ni idea de PE XD
« Última modificación: 16 Agosto 2010, 02:54 am por Jeferi » En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Direccion sección
« Respuesta #17 en: 16 Agosto 2010, 03:03 am »

jeje no pasa nada, y llevas razon en lo que dices. Saludos bro ;)
En línea

01001010 01100001 01110110 01101001 01100101 01110010
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Direccion sección
« Respuesta #18 en: 16 Agosto 2010, 03:46 am »

No existen caminos cortos, se debe aprender todo porque no sabes cuando lo necesitaras.
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Direccion sección
« Respuesta #19 en: 16 Agosto 2010, 04:02 am »

No entiendo pq hay que explicar algo que esta documentado y no poco.

Aparte de esto, por otras preguntas relacionadas un dia atras se le ve verde en otros campos que son necesarios. bajo mi punto de vista despues del 1 el 2 de toda la vida.
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿es posible leer la direccion virtual de una sección?
Programación C/C++
4v1dy4 4 3,225 Último mensaje 9 Enero 2023, 23:46 pm
por 4v1dy4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines