Ir para conteúdo

Leandro Fróes

Posts Recomendados

Fala @HelderPereira. Os primeiros 64 bytes de um arquivo no formato PE pertencem ao DOS-Header. Os primeiros passos do loader são:

  1. Checar se os dois primeiros bytes do arquivo são iguais à "MZ".
  2. Ir até o campo e_lfanew do DOS-Header (offset 0x3c) e ler a DWORD dentro dele, isto é, os 4 bytes deste campo.
  3. Pular para o offset lido e ver se ele é igual à "PE\0\0", ou seja, a assinatura PE.

Notou alguma coisa? O campo e_lfanew fica dentro do DOS-Header e ele possui o offset para a assinatura PE. Caso ela não exista, o arquivo é considerado um "não PE", do contrário, o loader continua seu trabalho analisando os outros cabelhos.

Obrigado pela pergunta e qualquer coisa só mandar bala.

Abs.

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • 10 meses depois...
1 hora atrás, Quer Vinho disse:

Estou usando o Dev C++ 5.1.1, quando eu copio seu código pra ele e compilo aparece os seguintes erros. (só fiz mudar a posição das aspas, o que é pra consertar dps eu n sei como)

#include <stdio.h>

int main(void){

printf("Mente Binaria eh foda! =)"\n);

return 0;

}

 

SharedScreenshot.jpg

SharedScreenshot.jpg

Achei o problema [printf("%s","Mente Binaria eh foda! =)\n" );] tem que ter ["%s"] no inicio

 

Link para o comentário
Compartilhar em outros sites

@Quer Vinho Opa, na verdade você esqueceu de colocar o \n (isto é, o caracter que representa uma nova linha) dentro das aspas para que o printf interprete o resultado propriamente. Por padrão a printf entende o que você passar como primeiro parâmetro pra função como um const char *, então neste caso você não precisa especificar %s como o "formatador":
 

printf("Mente Binaria eh foda! =)\n"); 

 

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...