| |
|
154
|
Programación / Programación C/C++ / Re: Api's en C
|
en: 24 Junio 2008, 11:05
|
No es cuestión de librerías, es cuestión de como te configures el linker, mira este código que me pasó Robokop hace tiempo: #pragma optimize("gsy",on) #pragma comment(linker,"/RELEASE") #pragma comment(linker,"/ENTRY:PuntoN") #pragma comment(linker,"/MERGE:.rdata=.data") #pragma comment(linker,"/MERGE:.text=.data") #pragma comment(linker,"/MERGE:.reloc=.data") #pragma comment(linker,"/SECTION:.text,EWR /IGNORE:4078") #pragma comment(linker,"/FILEALIGN:0x200") #pragma comment(linker,"/subsystem:windows")
#include <windows.h>
void PuntoN() { MessageBox(0,"Programa de 1 kb","Lol",0); } Pesa 1KB, que es un peso razonable. O también puedes hacer estó, que lo posteó Eternal Idol: Poner el cpp en C:\Archivos de programa\Microsoft Visual Studio\VC98\Bin y escribir en la consola: (haces cd para irte hasta esa ruta  ) cl /c /O1 iny.cpp
link iny.obj /NODEFAULTLIB kernel32.lib /entry:main /align:4 Todo eso se lo puedes poner al linker del VC++ en la configuración de tu proyecto para no tener que andar tirando de consola, y no te olvides de compilar en release, no en debug, que eso solo ya resta bastante peso (y de googlear  ) Salu2
|
|
|
|
|
161
|
Programación / Programación VB / Re: Error de acceso a memoria (no trabajo con memoria :S)
|
en: 19 Junio 2008, 18:57
|
a ver... no intento acceder a ninguna posicion de memoria, ahi esta el problema.
simplement creo un thread que dscarga un archivo usando api, y arroja ese error Cualquier programa accede constantemente a posiciones de memoria, y el tuyo no es una excepción, además por el propio funcionamiento de CreateThread tienes que acceder a la posición de memoria de hThreadID, de ahí que tenga que ser un puntero, pero claro en Vb... Prueba esto, dale a hThreadID el valor 5 antes de llamar al api (hThreadID = 5) y luego ejecútalo, a ver que valor hexadecimal te sale en el mensaje de error... (si subieras un poco de code no tendríamos que andar con estas..) donde AsyncThread es la funcion Una función o un sub? como lo tienes declarado?? De todas formas los hilos en VB6 siempre te van a dar problemas... Salu2
|
|
|
|
|
162
|
Programación / Programación VB / Re: me gustaria aprender a programar en gambas (linux)
|
en: 19 Junio 2008, 18:45
|
Lo he leído bien... es exactamente igual que Visual, solo cambian algunas cosas muy muy pequeñas, y se le agregan algunas funciones mas, el resto es igual. ya lo estuve investigando hasta lo tengo instalando en ubuntu, y es igual, lamentablemente hay poca informacion sobre este lenguaje, pero es identico a vb6, ojo, no hay apis o por lo menos no encontre ningun ejemplo con ellas.
saludos De todas formas da igual, solo era un a aclaración. Las apis son propias de cada SO, por eso no puedes usar el api de windows en ubuntu Para hacer programas que te sirvan en los dos SO's (y en más) y sin tener que recompilar o cambiar una sola línea de código puedes usar java, C# y demás lenguajes de la plataforma .net (gracias a mono) y no se si alguno más, esos son los que yo conozco  Salu2
|
|
|
|
|
163
|
Programación / Programación VB / Re: me gustaria aprender a programar en gambas (linux)
|
en: 19 Junio 2008, 18:21
|
ojo, no hay apis o por lo menos no encontre ningun ejemplo con ellas. Dios mio!! pero no digas burradas!!! Como va a haber apis como las de windows???? el api de windows es propio de windows como su nombre indica, no puedes usarlo en linux  Linux ya cuenta con su propias apis, informatete sobre los syscall's Salu2
|
|
|
|
|
164
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [Source] Añadir una sección
|
en: 19 Junio 2008, 18:05
|
Pues por ejemplo vale para meterle código (generalmente para un virus) cambiar el EP para que apunte a la nueva sección y que sea lo primero que se ejecute. También se puede ampliar el tamaño de la última sección  Otro uso es meterle código de nuevo, encriptar el resto de secciones y usarlo a modo de crypter Salu2 E0N
|
|
|
|
|
165
|
Seguridad Informática / Análisis y Diseño de Malware / [Source] Añadir una sección
|
en: 19 Junio 2008, 16:28
|
Pues como dice el título con esta función se puede añadir una sección nueva a un ejecutable para meter en ella lo que queramos (para un virus o un crypter os será útil  ) Se pueden reducir unos pocos bytes simplificando un poco el código, pero lo he dejado así para que se entiendan mejor los pasos que hay que seguir, bueno, ahí va: ; Codigo para añadir una sección a un ejecutable by E0N include 'H:\archivos de programa\fasm\include\win32ax.inc' .code start: stdcall AddSection, rutaAdd, nombreSec, 0x1000, 0xE0000020 ;CODE+MEM_EXECUTE+MEM_READ+MEM_WRITE invoke ExitProcess, 0 rutaAdd db 'H:\archivo.exe',0 nombreSec db '.new',0 ; Procedimiento que añade una sección a un archivo. Parametros: ; ruta -> Ruta del archivo al que le añadiremos la sección ; nombre -> El nombre de la nueva sección ; tam -> Tamaño de la nueva sección (RawSize) ; propiedades -> Las caracteristicas de la sección proc AddSection ruta, nombre, tam, propiedades locals hFile dd ? ; Handle del archivo TamAr dd ? ; Tamaño del archivo+Tamaño sección nueva hMap dd ? ; Handle del archivo mapeado IB dd ? ; Desde donde se carga en memoria PE dd ? ; Puntero a PE\0\0 UltSec dd ? ; Inicio de la sección a añadir (final de la última sección) VOffset dd ? ; El VirtualOfffset de la nueva sección endl ; Guardamos los registros pusha ; Mapeamos el archivo en memoria con [tam] bytes de más invoke CreateFile, [ruta], GENERIC_READ+GENERIC_WRITE, FILE_SHARE_WRITE+FILE_SHARE_READ, 0, OPEN_EXISTING, 0,0 mov [hFile], eax invoke GetFileSize, [hFile], 0 add eax, [tam] mov [TamAr], eax invoke CreateFileMapping, [hFile], 0, PAGE_READWRITE, 0, [TamAr], 0 mov [hMap], eax invoke MapViewOfFile, eax, FILE_MAP_ALL_ACCESS, 0, 0, 0 mov [IB], eax ; Le restamos 0x28 al offset 0x3C y guardamos la posición actual del signature mov eax, [IB] sub dword[eax+0x3C], 0x28 add eax, dword[eax+0x3C] mov [PE], eax ; Desplazamos las cabeceras 0x28 bytes mov esi, [PE] add esi, 0x28 mov edi, [PE] xor ebx, ebx mov bx, word[esi+0x6] mov eax, 0x28 mul ebx mov ecx, eax add ecx, 248 push ecx rep movsb pop ebx add ebx, [PE] mov [UltSec], ebx invoke RtlZeroMemory, ebx, 0x28 ; Calculamos el VirtualOffset de la nueva sección mov edi, [UltSec] sub edi, 0x28 mov ebx, [PE] mov eax, dword[edi+8] ; eax = VirtualSize+VirtualOffset+SectionAligement (redondeado) add eax, dword[edi+12] add eax, dword[ebx+0x38] and eax, 0xFFFFF000 mov [VOffset], eax ; Añadimos la sección al section header mov eax, [PE] add eax, 0x6 inc word[eax] invoke lstrlen, [nombre] invoke RtlMoveMemory, [UltSec], [nombre], eax ; Name mov edi, [UltSec] mov dword[edi+8], 0x00000000 ; VirtualSize mov eax, [VOffset] mov dword[edi+12], eax ; VirtualOffset mov eax, [tam] mov dword[edi+16], eax ; RawSize mov eax, [TamAr] sub eax, [tam] mov dword[edi+20], eax ; RawOfset mov eax, [propiedades] mov dword[edi+36], eax ; Propiedades ; Cambiamos el SizeOfImage mov eax, [PE] mov ebx, [tam] add dword[eax+0x50], ebx ; Liberamos memoria, restauramos los registros y volvemos invoke CloseHandle, [hFile] invoke CloseHandle, [hMap] invoke UnmapViewOfFile, [IB] popa ret endp .end start Salu2 E0N NOTA: Por el método que se emplea si se intentan añadir muchas secciones así el ejecutable quedará corrupto, es útil para añadir una o dos (más que suficientes por otra parte). Si se quieren añadir más habría que adoptar otro método. A lo mejor me animo y subo el código para hacerlo de la otra forma 
|
|
|
|
|
|
| |
|