Bienvenidos al nuevo foro de hackplayers. En caso de encontrarse cualquier tipo de error, contacte con cualquier administrador por mensaje privado.
Recuerda que, para incrementar tu privacidad, tambien puedes acceder al foro usando el dominio forohpysho2t5mjs.onion de la red tor.
Recuerda que, para incrementar tu privacidad, tambien puedes acceder al foro usando el dominio forohpysho2t5mjs.onion de la red tor.
personalizar mbr
Hola, miré varios vídeos sobre reescribir el mbr y se me ocurrió intentar lo mismo pero sin dañar el inicio del sistema operativo.
Casi como se muestra aca o aca pero en mi windows.
Como se ve en el siguiente codigo (payloads que incrustaria en PersonalMasterBootRecord ), me falta la función que retonaria el mbr original. Alguien tiene idea como completar este codigo, es decir, como una vez encontrado mi mbr lo ejecuto?.
Seguramente me falta informacion sobre el funcionamiento de la bios. Toda sugerencia es bienvenida. Gracias.
Casi como se muestra aca o aca pero en mi windows.
Como se ve en el siguiente codigo (payloads que incrustaria en PersonalMasterBootRecord ), me falta la función que retonaria el mbr original. Alguien tiene idea como completar este codigo, es decir, como una vez encontrado mi mbr lo ejecuto?.
Seguramente me falta informacion sobre el funcionamiento de la bios. Toda sugerencia es bienvenida. Gracias.
backup_magic equ 0x0DD03713 magic_addr equ 0x7FFC dest db "" BITS 16 ORG 0x7c00 jmp start start: call clear_screen mov ax,cs mov ds,ax mov si,msg call print print: push ax cld next: mov al,[si] cmp al,0 je done call printchar inc si jmp next done: jmp buscar printchar: mov ah,0x0e int 0x10 ret clear_screen: mov ah, 0x07 mov al, 0x00 mov bh, 0x09 mov cx, 0x0000 mov dx, 0x184f int 0x10 ret buscar: mov si, DAPACK mov ah, 0x42 int 0x13 mov ax, [d_lba] add ax, 1 mov [d_lba], ax mov eax, [magic_addr] mov ebx, backup_magic cmp eax, ebx jne saltoalmbroriginal msg: db "Aca escribiendo el mbr",13,10,"porque se me antoja pelotudear",13,10,"Yeah, MBR Overwrited :P ", 0 times 510 - ($-$$) db 0 dw 0xaa55
#include <stdio.h> #include <windows.h> #define BACKUP_MAGIC "\x13\x37\xd0\x0d" #define MAX_PAYLOAD_LEN 0x1B8 typedef struct { BYTE status; // activo? 0=no, 128=yes BYTE chsFirst[3]; // starting sector number BYTE type; // OS type indicator code BYTE chsLast[3]; // ending sector number DWORD lbaStart; // first sector relative to start of disk DWORD size; // number of sectors in partition } MBR_PARTITION_TABLE_ENTRY; typedef struct { BYTE bootCode[446]; // space to hold actual boot code MBR_PARTITION_TABLE_ENTRY partitionTable[4]; USHORT mbrSignature; // set to 0xAA55 to indicate PC MBR format } MASTER_BOOT_RECORD; int main( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MASTER_BOOT_RECORD MBR; FILE* fp; unsigned int newMBROffset; const unsigned char PersonalMasterBootRecord[] = { }; fp = fopen("\\\\.\\PhysicalDrive0", "r+b"); fread(&MBR.bootCode, sizeof(BYTE), 446, fp); fread(&MBR.partitionTable, sizeof(MBR_PARTITION_TABLE_ENTRY), 4, fp); fread(&MBR.mbrSignature, sizeof(USHORT), 1, fp); if (MBR.mbrSignature == 0xaa55) { printf("aca termina el MBR\n"); } static const int SECTOR_SIZE = sizeof(MBR) +sizeof(BACKUP_MAGIC); char readbuf[SECTOR_SIZE]; printf("%i",SECTOR_SIZE); char isUsed = 1; while (isUsed) { fread(&readbuf, SECTOR_SIZE, 1, fp); for (int i = isUsed = 0; i < SECTOR_SIZE; isUsed |= readbuf[i++]); } newMBROffset = ftell(fp) - SECTOR_SIZE; /*aca escrbio el mbr original en la nueva posicion*/ fseek(fp, newMBROffset, SEEK_SET); fwrite(BACKUP_MAGIC,sizeof(BACKUP_MAGIC),1,fp); fwrite(&MBR, sizeof(MBR), 1, fp); /*aca escribo mi mbr*/ fseek(fp, 0, SEEK_SET); fwrite(&PersonalMasterBootRecord, 1, sizeof(PersonalMasterBootRecord), fp); return 0; }
Accede o Regístrate para comentar.