Fallo mío, eso me pasa por tener el escritorio hecho un desastre de tanta prueba
[Original]
[Modificado]
Saludos
[Original]
[Modificado]
Saludos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Arcangel_0x7C5 en 8 Mayo 2009, 22:04 PM
yo me referia a que por ejemplo:
.text
base 0x400
.data
base 0x200
idata
base 0x600
No se lo que podra ser.
Lo mirare con el EditorHex
saludos
Cita de: YST en 8 Mayo 2009, 22:06 PM
SectionAlignment
HANDLE hFile=CreateFile(nFileName,GENERIC_READ+GENERIC_WRITE,FILE_SHARE_WRITE+FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
if(hFile == INVALID_HANDLE_VALUE)
{
return NULL;
}
DWORD szFile=GetFileSize(hFile,0);
if(szFile == INVALID_FILE_SIZE)
{
return NULL;
}
szFile=szFile+0x200;
HANDLE hCFM=CreateFileMapping(hFile,0,PAGE_READWRITE,0,szFile,0);
if(hCFM==NULL)
{
return NULL;
}
CloseHandle(hFile);
LPSTR hMVOF=(LPSTR)malloc(szFile);
hMVOF=(LPSTR)MapViewOfFile(hCFM,FILE_MAP_ALL_ACCESS,0,0,0);
if(hMVOF==NULL)
{
return NULL;
}
CloseHandle(hCFM);
PIMAGE_DOS_HEADER IDH;
PIMAGE_NT_HEADERS INTH;
PIMAGE_SECTION_HEADER ISH;
IDH=(PIMAGE_DOS_HEADER)&hMVOF[0];
INTH=(PIMAGE_NT_HEADERS)&hMVOF[IDH->e_lfanew];
DWORD ExecutableSection=GetExecutableSection(hMVOF);
ISH=(PIMAGE_SECTION_HEADER)&hMVOF[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*ExecutableSection];
LPSTR Temp=(LPSTR)malloc(szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
CopyMemory(&Temp[0],&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData],szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
CopyMemory(&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData+0x200],&Temp[0],szFile-(ISH->PointerToRawData+ISH->SizeOfRawData+0x200));
BYTE zero=0x00;
for(DWORD i=0;i<0x200;i++)
{
CopyMemory(&hMVOF[ISH->PointerToRawData+ISH->SizeOfRawData+i],&zero,1);
}
ISH->SizeOfRawData=ISH->SizeOfRawData+0x200;
ISH->Misc.VirtualSize=ISH->Misc.VirtualSize+0x200;
INTH->OptionalHeader.SizeOfImage=INTH->OptionalHeader.SizeOfImage+0x200;
for(i=0;i<=INTH->FileHeader.NumberOfSections;i++)
{
ExecutableSection=GetExecutableSection(hMVOF);
ISH=(PIMAGE_SECTION_HEADER)&hMVOF[IDH->e_lfanew+sizeof(IMAGE_NT_HEADERS)+sizeof(IMAGE_SECTION_HEADER)*(ExecutableSection+1+i)];
ISH->PointerToRawData=ISH->PointerToRawData+0x200;
ISH->VirtualAddress=ISH->VirtualAddress+0x200;
}
return hMVOF;
Cita de: Arcangel_0x7C5 en 4 Mayo 2009, 20:07 PMCita de: WHK en 4 Mayo 2009, 19:31 PMEs muy facil ejecutar el batch desde memoria, se lo pasas al cmd por argumentos como una cadena terminada en 0. cada linea la distinguira por que lo separa un \n.
Lo único que se me puede ocurrir es pasar el bat a memoria pero ahi no sabría como hacer para que el cmd interprete una cadena completa sin que haya archivo.. sinceramente no se me ocurre como ya que cmd interpreta solamente archivos y no strings como bats dentro de un bat.
Prueva esto:
System("echo hola\n echo Soy un Batch")
Saludos