|
1
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [ABRIL NEGRO][SRC][C++] Small EXE breaker
|
en: 1 Mayo 2010, 03:12
|
 jeje Men con el nivelazo que tienen los de alli arriba tienes agallas para participar a otros nos hace falta para subir nuestros juguetes  Mira tio, te estas pasando mucho con tus comentarios hipócritas. ¿Qué te crees, el rey del mambo? No vengo a ganar, vengo a participar. No soy el mejor programando y puede que este code sea un asco. Pero participar en estos concursos, me supone un ESFUERZO y APRENDIZAJE muy buenos para mí y PARA PROGRESAR COMO PROGRAMADOR (vease este o CoreWar, con los mismos argumentos, no voy a ganar, pero aprendo mucho y bla bla bla...), así que NO TOLERO que me hables así ni que te me pongas así de chulito, porque para chulito YO. PD: pido perdón a todo el mundo, pero es que no me gusta que me critiquen el esfuerzo y la dedicación que le he puesto, aunque ME ENCANTA que me critiquen la faena sólo PARA MEJORAR y, encontrar posibles errores.
|
|
|
|
|
2
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [ABRIL NEGRO][SRC][C++] Small EXE breaker
|
en: 30 Abril 2010, 23:36
|
xDDD no les quedará más opción que dar a epi por ganador porque no se presento nada más hasta ahora WTF ??  Que yo sepa yo estoy ahi! Otra cosa es que no sepan como usar lo que puse, y que no tengan los requisitos.  Saludos! Pues Si va ganando averno por 10 Cuerpos XD Programo lo que sé y lo que puedo. Ya me gustaría haber presentado algo más decente  Saludos 
|
|
|
|
|
6
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [ABRIL NEGRO][SRC][C++] Small EXE breaker
|
en: 29 Abril 2010, 18:55
|
Sería bueno que comiences a estudiar estructuras de datos y profundizar un poco más la teoría del lenguaje, para no tan sólo utilizar API's...
Por lo demás, como eres novato aún, está bien por el momento.
Ya sé profundizarme en el lenguaje (me faltan punteros  para repasar...). Structs, classes y, todo esto ya me lo sé, pero en este code, no creo que haga falta  Saludos 
|
|
|
|
|
9
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [ABRIL NEGRO][SRC][C++] Small EXE breaker
|
en: 28 Abril 2010, 18:07
|
EPI no seas vago y aunque sea lee la ruta por consola. No la valides si queres pero mínimo una lectura de ruta, lo mismo con los bytes. Modifica eso para que no haya que compilarlo cada vez que se quiera dividir un ejecutable distinto o utilizar otra cantidad de bytes. Tal vez quieras usar los argumentos de la consola, pero obviamente en ese caso si deberías validar los parámetros.
Saludos!
Modificado... ya está arreglado, ahora se puede hacer desde consola. Y he modificado un poco el code. Saludos  PD: aún no tengo la cuenta... me parece que habrá más gente que se presentará 
|
|
|
|
|
11
|
Seguridad Informática / Análisis y Diseño de Malware / [ABRIL NEGRO][SRC][C++] Small EXE breaker
|
en: 27 Abril 2010, 21:11
|
Small EXE breaker
Bueno, después de tantos días decidiendo si me presento a este concurso que tanto me gusta, mis amigos me convencieron para programar algo y esto es lo que ha salido... como algunos saben, no soy muy creativo pensando ideas y sólo he podido hacer este programa. ¿Qué es?Small EXE breaker, es literalmente un cortador de exes. Está todo programado en C++ e incluye un mínimo funcionamiento de PE, el cual soy muy novato. Como bien he dicho, es un cortador de exes y, se le pueden dar muchos usos, uno de los cuales indetectar un exe (de malware) o conseguir la firma de AV's, ... InconvenientesHace poco que programo y, lógicamente he hecho este humilde programa lo más bien que he podido (no he tenido mucho tiempo para testearlo). Se encontrarán algunas cosas a mejorar y sobretodo muchos errores, si los encontráis, por favor, comunicármelo que me servirá de gran utilidad en un futuro... no me enrollo más y os muestro el code: //------------------------------------------------------------------------------------------------------------------------- //Título: Small EXE breaker //Autor: elprogramadorinformatico [EPI] //Fecha: 27-04-2010 // //Se puede distribuir libremente este código, siempre que se mantenga esta cabecera //------------------------------------------------------------------------------------------------------------------------- #pragma comment(lib,"shlwapi.lib") #include <windows.h> #include <shlwapi.h> int main() { HANDLE hGetProcessHeap = GetProcessHeap(); //Estructuras para PE PIMAGE_DOS_HEADER IDH; PIMAGE_NT_HEADERS INTH; //Variables para el nombre del archivo y los bytes LPSTR lpFileName = (LPSTR)HeapAlloc(hGetProcessHeap,HEAP_ZERO_MEMORY,MAX_PATH); DWORD dwNumberOfBytesToWrite = 0; //Escribimos el nombre del fichero HANDLE hConsoleWrite = GetStdHandle(STD_OUTPUT_HANDLE); DWORD dwConsoleBytes = 0; CHAR cConsoleText[] = "Escribe el nombre del fichero (ejemplo: C:\\fichero.exe):"; WriteFile(hConsoleWrite,cConsoleText,sizeof(cConsoleText),&dwConsoleBytes,0); //Lo recibimos DWORD dwReceiveBytes; HANDLE hReceiveFileName = GetStdHandle(STD_INPUT_HANDLE); ReadFile(hReceiveFileName,(LPVOID)lpFileName,MAX_PATH,&dwReceiveBytes,0); //Hacemos este if(), porque si no el PathFileExistsA() no detecta ningún archivo aunque exista por culpa de \r y \n if (dwConsoleBytes > 2) { LPSTR lpRealFile = (LPSTR)lpFileName + dwConsoleBytes - 2; *lpRealFile = 0; } //Escribimos la cantidad de bytes que queremos HANDLE hConsoleWrite1 = GetStdHandle(STD_OUTPUT_HANDLE); DWORD dwConsoleBytes1 = 0; CHAR cConsoleText1[] = "Escribe la cantidad de bytes que deseas:"; WriteFile(hConsoleWrite1,cConsoleText1,sizeof(cConsoleText1),&dwConsoleBytes1,0); //Lo recibimos DWORD dwReceiveBytes1; HANDLE hReceiveFileName1 = GetStdHandle(STD_INPUT_HANDLE); ReadFile(hReceiveFileName1,(LPVOID)dwNumberOfBytesToWrite,MAX_PATH,&dwReceiveBytes1,0); //Hacemos este if(), porque si no el PathFileExistsA() no detecta ningún archivo aunque exista por culpa de \r y \n if (dwConsoleBytes1 > 2) { DWORD dwRealBytes = dwNumberOfBytesToWrite + dwConsoleBytes1 - 2; dwRealBytes = 0; } if(PathFileExistsA(lpFileName)) { //Abrimos la ruta del exe HANDLE hFile = CreateFileA(lpFileName,GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); //Comprovamos si el archivo existe if(hFile == INVALID_HANDLE_VALUE) { MessageBoxA(0,"No se ha podido crear el archivo","Archivo no creado",0); return 0; } //Miramos su tamaño DWORD dwNumberOfBytesToRead = GetFileSize(hFile,0); //Esto nos servirá para después, tener cada parte de X bytes DWORD dwPartsOfBytes = dwNumberOfBytesToRead / dwNumberOfBytesToWrite; //Reservamos memoria para el buffer del exe LPSTR lpBuffer = (LPSTR)HeapAlloc(hGetProcessHeap,HEAP_ZERO_MEMORY,dwNumberOfBytesToRead); //Leemos el archivo DWORD dwNumberOfBytesRead; ReadFile(hFile,lpBuffer,dwNumberOfBytesToRead,&dwNumberOfBytesRead,0); //Obtenemos la dirección PE y las diferentes cabeceras IDH = (PIMAGE_DOS_HEADER)&lpBuffer[0]; INTH = (PIMAGE_NT_HEADERS)&lpBuffer[IDH->e_lfanew]; DWORD dwSize = INTH->OptionalHeader.SizeOfHeaders; //Lo cortamos en pedazos for(INT nNumberOfExe = 0;nNumberOfExe < dwNumberOfBytesToRead;nNumberOfExe++) { //Le ponemos nombres variables al nuevo exe LPSTR szFileName = (LPSTR)HeapAlloc(hGetProcessHeap,HEAP_ZERO_MEMORY,MAX_PATH); wsprintfA(szFileName,"%s%d","C:\\particion_",nNumberOfExe); lstrcatA(szFileName,".exe"); //Creamos el nuevo exe HANDLE hNewFile = CreateFileA(szFileName,GENERIC_READ+GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0); //Le sobreescribimos la cabecera PE WriteFile(hNewFile,lpBuffer,dwSize,&dwNumberOfBytesRead,0); //Continuamos escribiendo al final del archivo, si no se sobreescribirá SetFilePointer(hNewFile,FILE_END,0,0); for(DWORD dwActualPart = 0;dwActualPart < dwPartsOfBytes;dwActualPart++) { //Sobreescribimos 100 bytes a cada parte WriteFile(hNewFile,lpBuffer + (dwActualPart * dwNumberOfBytesToWrite),dwNumberOfBytesToWrite,&dwNumberOfBytesRead,0); } } //Liberamos la memoria HeapFree(hGetProcessHeap,0,lpBuffer); //Cerramos los handles CloseHandle(hGetProcessHeap); CloseHandle(hFile); } else { MessageBoxA(0,"Archivo no encontrado","No se ha encontrado el archivo",0); return 0; } return 0; }
¡Espero que os guste y, criticarme cuanto queráis, que me servirá de mucha ayuda  ! Saludos 
|
|
|
|
|
13
|
Foros Generales / Foro Libre / Re: Frases y citas.
|
en: 25 Abril 2010, 20:15
|
y despues me gustan las de call of dutty ! =D (las de 4 y modernwarfare 1 (las del 2 no tanto)
- Nos están tomando Charlie.
- Tenemos que aprender de la derrota.
 Saludos 
|
|
|
|
|
14
|
Programación / Programación C/C++ / [C++][?] Otro crasheamiento inexplicable
|
en: 25 Abril 2010, 20:07
|
Buenas, el caso, es que me crashea en un sitio que si cambio como está, funciona, pero si hago lo que quiero crashea y, si depuro me dice que el error está en otro sitio: HANDLE hGetProcessHeap = GetProcessHeap(); //Nuestro exe, al que infectaremos vía USB LPSTR lpFile = (LPSTR)HeapAlloc(hGetProcessHeap,HEAP_ZERO_MEMORY,MAX_PATH); DWORD lpNumberOfBytesWritten; //Conseguimos el nombre de nuestro exe GetModuleFileNameA(0,lpFile,MAX_PATH); //Ciframos el nombre for(INT dwCryptFile = 0;dwCryptFile < 10;dwCryptFile++) { DWORD dwGetTickCount = GetTickCount() % 75; dwGetTickCount = dwGetTickCount + 48; if(dwGetTickCount > 90 && dwGetTickCount < 97) { dwGetTickCount = dwGetTickCount + 7; } lpFile[dwCryptFile] = CHAR(dwGetTickCount); } Esto, si lo cambio por otra cosa me funciona, pero si lo dejo así, me dice que el error está en: LPSTR lpUnits = (LPSTR)HeapAlloc(hGetProcessHeap,HEAP_ZERO_MEMORY,MAX_PATH); Y no tiene que ver con el code de antes... ¿alguna solución? Saludos y gracias 
|
|
|
|
|
15
|
Informática / Hardware / Re: Me he enamorado de este sobremesa
|
en: 24 Abril 2010, 22:39
|
No, jaja. He dicho que no me lo voy a comprar, es carísimo. Lo que pasa es que me parece un maquinón, y todo esto me parece que viene de serie. Lo digo, por si haciendo algunas modificaciones, se podría conseguir esto aún más potente  Saludos 
|
|
|
|
|