|
993
|
Foros Generales / Foro Libre / Re: [Debate] Dios o Bin Bang(¿Qué había antes del antes?)
|
en: 9 Noviembre 2011, 20:40 pm
|
¡Buenas! Si os interesa el tema, he aqui un documental que me parecio bastante interesante: La paradoja de HawkingNo se de que año es, ahora lo miro, pero no creo que sea demasiado antiguo. ¡Saludos! Por lo que acabo de leer, en 2004 fue cuando dijo que podria estar equibocado con la paradoja de la informacion, por lo que creo que el documental pudo haber sido hecho hacia el 2005. ¡Saludos de nuevo! Interesantísimo
|
|
|
996
|
Seguridad Informática / Análisis y Diseño de Malware / Re: Intento de agregar sección a ejecutable
|
en: 6 Octubre 2011, 00:37 am
|
Tras seguir intentando y intentando no logro arreglarlo del todo (aunque lo otro ya lo arregle), aora parece que todo esta bien pero ejecuto el exe y no me funciona :S de seguro es un error tonto y minúsculo pero no logro dar con él. #include <windows.h> #include <stdio.h> #include <stdlib.h> DWORD align(DWORD number, DWORD alignment) { if(number % alignment == 0) return number; else return (number / alignment) * alignment + alignment; } int main() { IMAGE_DOS_HEADER dh; IMAGE_NT_HEADERS nth; IMAGE_SECTION_HEADER * sección; IMAGE_SECTION_HEADER nSeccion; // char * stub_dos -> Datos del STUB_DOS // char * dSecciones -> Datos de las secciones long TamanoSecciones = 0; int i; FILE * archivo = fopen("c:\\Mad.exe","r+b"); if (archivo == NULL) { printf("Error al leer el archivo\n"); return 1; } fread(&dh ,sizeof(dh ),1,archivo ); // Rellenamos IMAGE_DOS_HEADER char * stub_dos = (char*)malloc(dh. e_lfanew-0x40); fread(stub_dos ,1,dh. e_lfanew-0x40,archivo ); // Leemos el Stub DOS fread(&nth ,sizeof(nth ),1,archivo ); // leemos nt headers sección = (IMAGE_SECTION_HEADER *)malloc(sizeof(IMAGE_SECTION_HEADER )*nth. FileHeader. NumberOfSections); fread(sección ,sizeof(IMAGE_SECTION_HEADER ),nth. FileHeader. NumberOfSections,archivo ); for (i=0;i<=nth.FileHeader.NumberOfSections-1;i++) { printf("%i\n",sección [i ]. SizeOfRawData); TamanoSecciones += sección[i].SizeOfRawData; } printf("%i\n",TamanoSecciones ); char * dSecciones = (char*)malloc(TamanoSecciones ); fread(dSecciones ,TamanoSecciones ,1,archivo ); //leo todos los datos de las secciones. fclose(archivo ); // terminamos de leer strcpy((char*)nSeccion. Name,".fary"); // nombre de la nueva sección: .fary nSeccion.VirtualAddress = align(sección[nth.FileHeader.NumberOfSections-1].VirtualAddress + sección[nth.FileHeader.NumberOfSections-1].Misc.VirtualSize, nth.OptionalHeader.SectionAlignment); nSeccion.SizeOfRawData = align(0x50, nth.OptionalHeader.FileAlignment); nSeccion.PointerToRawData = sección[nth.FileHeader.NumberOfSections-1].PointerToRawData + sección[nth.FileHeader.NumberOfSections-1].SizeOfRawData;//align(0x50,nth.OptionalHeader.FileAlignment); nSeccion.Characteristics = 0x60000020; nSeccion.Misc.VirtualSize = 0x50; nth.FileHeader.NumberOfSections += 1; // sumamos la nueva sección nth.OptionalHeader.SizeOfImage = align(0x50+nSeccion.VirtualAddress,nth.OptionalHeader.SectionAlignment); nth.OptionalHeader.SizeOfHeaders += 0x28; FILE * nuevo = fopen("Nuevo.exe","wb+"); fwrite(&dh ,sizeof(dh ),1,nuevo ); fwrite(stub_dos ,dh. e_lfanew-0x40,1,nuevo ); fwrite(&nth ,sizeof(nth ),1,nuevo ); nth.FileHeader.NumberOfSections -= 1; fwrite(sección ,sizeof(IMAGE_SECTION_HEADER )*nth. FileHeader. NumberOfSections,1,nuevo ); fwrite(&nSeccion ,sizeof(IMAGE_SECTION_HEADER ),1,nuevo ); fwrite(dSecciones ,TamanoSecciones ,1,nuevo ); if (fseek(nuevo ,0,SEEK_END ) != 0) { } char DatosSeccion[] = "Hola yo soy la sección de prueba, y ocupo exactamente la cantidad de 0x50 bytes."; fwrite(DatosSeccion ,0x50,1,nuevo ); return 0; }
Si alguien es tan amable de hecharle un ojo y explicarme porque no anda le estaría muy agradecido saludos.
|
|
|
997
|
Programación / ASM / Re: Funciones en FASM
|
en: 28 Septiembre 2011, 21:48 pm
|
Ret Exe corruption ;/////////////////////////////////////////////////////////////////////////////// ;//// Ret Exe Corruption: corrompe los exe poniendo un 0xC3 (ret) en el //// ;//// entry point. Este código no funciona con algunos ejecutables para //// ;//// ello habría que hacer algunos modificaciones. //// ;//// Programado por Drinky94 a 13 - Septiembre - 2011 //// ;/////////////////////////////////////////////////////////////////////////////// include 'win32ax.inc' .data manija dd ? larchivo dd ? espacio dd ? bleidos dd ? PE dd ? ; puntero a NT EP dd ? ; EntryPoint wb dd ? .code start: invoke CreateFileA,'g:\bowser.exe', GENERIC_READ, FILE_SHARE_READ, 0,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 mov [manija],eax invoke GetFileSize,[manija],0 mov [larchivo],eax invoke GlobalAlloc,GPTR,[larchivo] mov [espacio],eax invoke ReadFile,[manija],[espacio],[larchivo],addr bleidos,0 invoke CloseHandle,[manija] leave mov eax,[espacio] cmp word[eax],'MZ' jne salir mov ecx,eax add eax,dword[eax+0x3C] ; EAX = PE mov [PE],eax cmp word[eax],'PE' jne salir add eax,0x28 mov ebx,dword[eax] mov [EP],ebx ;EP = EntryPoint mov ebx,ecx ; EAX = puntero inicio add ecx,[EP] mov word[ecx],0xC3 ;// Aquí tendríamos que eliminar el viejo archivo y generar nuestro Exe modificado con el mismo nombre. invoke CreateFile,"g:\NuevoRET.exe",GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0 push eax invoke WriteFile,eax,ebx,[larchivo],wb,NULL pop eax invoke CloseHandle,eax invoke MessageBoxA,0,"FIN",0,0 salir: leave ret .end start
|
|
|
999
|
Programación / Programación C/C++ / Re: Programa para convertir bases numericas
|
en: 25 Septiembre 2011, 13:19 pm
|
Para convertir números de una base a otra tienes que dividir por la base a la que lo quieres pasar, ejemplo... 125 por ejemplo a octal, lo que tenemos que hacer es dividir sucesivamente el número entre la base (en este caso 8 ya que queremos pasarla a octal) asta que el cociente sea mas pequeño que el dividendo entonces se colocara el ultimo cociente y los demas restos al revez, me explico mejor haciendolo: 125/8 = 15 en el cociente y de resto 5 aora volvemos a dividir pero aora ya dividimos entre el cociente 15/8 = 7 de resto y 1 en el cociente. Ya acabamos las cuentas ya que el cociente que nos a dado es menor a la base a la que lo queremos pasar aora tenemos que colocar los números El cociente de la ultima division 1 y el resto de la ultima division 7 y el resto de la penultima division 5 dan 175 y efectivamente 125 en base 10 (decimal) es 175 en base 8 (octal) compruebalo con la calculadora y verás Aora para hacer la inversa pasarlo a decimal lo que hay que hacer es aplicar esta fórmula: te lo ago para que lo veas tambien 1·8^2 + 7·8^1 + 5·8^0 = 64 +56 + 5= 125 en decimal. En esta formula los resultados se suman no se colocan. Es igual para pasarlo a todas las bases y para hacer la inversa espero haberte ayudado. saludos.
|
|
|
1000
|
Programación / Programación Visual Basic / Re: [RETO] Sudoku
|
en: 24 Septiembre 2011, 13:02 pm
|
Matrix inicial. 0 0 0 | 0 0 5 | 2 0 0 | 0 6 5 | 0 3 0 | 0 0 0 | 9 3 0 | 0 0 1 | 0 0 0 | -------------------------------- 0 9 0 | 4 6 3 | 0 0 0 | 0 0 0 | 0 0 0 | 0 0 8 | 0 7 0 | 8 0 0 | 6 0 0 | -------------------------------- 0 8 0 | 1 0 0 | 0 3 2 | 0 0 0 | 0 8 0 | 0 0 4 | 5 0 0 | 0 9 0 | 0 0 0 | -------------------------------- Sudoku Resuelto 1 4 8 | 6 7 5 | 2 9 3 | 2 6 5 | 9 3 8 | 4 1 7 | 9 3 7 | 2 4 1 | 8 5 6 | -------------------------------- 8 9 2 | 4 6 3 | 1 7 5 | 4 5 6 | 7 1 9 | 3 2 8 | 3 7 1 | 8 5 2 | 6 4 9 | -------------------------------- 6 8 9 | 1 2 7 | 5 3 2 | 7 1 3 | 5 8 4 | 9 6 4 | 5 2 4 | 3 9 6 | 7 8 1 | --------------------------------
saludos.
|
|
|
|
|
|
|