pt.phhsnews.com


pt.phhsnews.com / Números mágicos: os códigos secretos que os programadores escondem em seu PC

Números mágicos: os códigos secretos que os programadores escondem em seu PC


Desde que a primeira pessoa escreveu 5318008 em uma calculadora, os nerds escondem números secretos dentro de seu PC e os usam para negociar handshakes secretos entre aplicativos e arquivos. Hoje, vamos dar uma olhada rápida em alguns dos exemplos mais divertidos.

O que são números mágicos?

A maioria das linguagens de programação usa um tipo inteiro de 32 bits para representar certos tipos de dados - internamente o número é armazenado na RAM ou usado pela CPU como 32 uns e zeros, mas no código-fonte seria escrito em formato decimal regular, ou em formato hexadecimal, que usa os números de 0 a 9 e as letras de A a F.

Quando o sistema operacional ou um aplicativo deseja determinar o tipo de arquivo, ele pode olhar para o início do arquivo para um marcador especial que significa o tipo do arquivo. Por exemplo, um arquivo PDF pode começar com o valor hexadecimal 0x255044462D312E33, que é igual a “% PDF-1.3” no formato ASCII, ou um arquivo ZIP inicia com 0x504B, que é igual a “PK”, que desce do utilitário PKZip original. Observando essa “assinatura”, um tipo de arquivo pode ser facilmente identificado mesmo sem outros metadados.

Arquivos Java Class compilados começam com CAFEBABE

O “arquivo” utilitário Linux pode ser usado a partir do terminal para determinar o tipo de um arquivo - na verdade, ele lê os números mágicos de um arquivo chamado "mágica".

Quando um aplicativo deseja chamar uma função, ele pode passar valores para essa função usando tipos padrão como inteiro, que podem ser expressos em o código-fonte em formato hexadecimal. Isso é especialmente verdadeiro para constantes, que são identificadores definidos com nomes legíveis por humanos, como AUTOSAVE_INTERVAL, mas eles são mapeados para valores reais inteiros (ou outros tipos). Então, ao invés de um programador digitar um valor como 60 toda vez que eles chamam a função no código-fonte, eles poderiam usar a constante AUTOSAVE_INTERVAL para melhor legibilidade. (As constantes geralmente são reconhecidas com facilidade porque são escritas com todas as letras maiúsculas).

Todos esses exemplos podem estar sob o termo Números Mágicos, porque podem exigir um número hexadecimal específico para que uma função ou tipo de arquivo funcione corretamente … Se o valor não estiver correto, não funcionará. E quando um programador quer se divertir um pouco, ele pode definir esses valores usando números hexadecimais que soletram algo em inglês, também conhecido como hex-falo

Fun With Magic Numbers: Alguns exemplos notáveis ​​

Todo AppleScript termina com FADEDEAD

Se você der uma olhada rápida no código-fonte do Linux, verá que a chamada do sistema _reboot () no Linux requer que uma variável “mágica” seja passada, que é igual ao número hexadecimal 0xfee1dead. Se algo tentasse chamar essa função sem passar primeiro esse valor mágico, apenas retornaria um erro.

O GUID (identificador global exclusivo) para uma partição de inicialização do BIOS no esquema de particionamento GPT é 21686148-6449-6E6F-744E -656564454649, que forma a string ASCII “Hah! IdontNeedEFI”, uma alusão ao fato de que a GPT normalmente seria usada em computadores que substituíram o BIOS com UEFI, mas não necessariamente tem que ser.

Microsoft famosa escondeu 0x0B00B135 em seu código-fonte de suporte à máquina virtual Hyper-V submetido ao Linux, eles alteraram o valor para 0xB16B00B5 e, finalmente, o trocaram para decimal antes de ser removido do código-fonte.

Mais exemplos divertidos incluem:

  • 0xbaaaaaad - usado pelo logging de falhas do iOS para indicar que um log é um stackshot de todo o sistema.
  • 0xbad22222 - usado pelo log de falhas do iOS para indicar que um aplicativo VoIP foi eliminado pelo iOS porque se comportou mal.
  • 0x8badf00d - (Ate Bad Food) usado pelo crash do iOS l Ogs para indicar que um aplicativo demorou muito para fazer algo e foi eliminado pelo tempo limite do watchdog
  • 0xdeadfa11 - (Dead Fall) usado pelo log de falhas do iOS quando um aplicativo é forçado a sair por um usuário.
  • 0xDEADD00D - usado pelo Android para indicar uma interrupção da VM.
  • 0xDEAD10CC (Dead Lock) usado pelo log de falhas do iOS quando um aplicativo bloqueia um recurso em segundo plano.
  • 0xBAADF00D (Bad Food) usado pela função LocalAlloc no Windows para depuração.
  • 0xCAFED00D (Cafe dude) usado pelo pack200 do Java compactação.
  • 0xCAFEBABE (Cafe babe) usado pelo Java como o identificador para arquivos de classe compilados
  • 0x0D15EA5E (Disease) usado pela Nintendo no Gamecube e no Wii para indicar uma inicialização normal.
  • 0x1BADB002 (1 inicialização incorreta ) usado pela especificação de inicialização múltipla como um número mágico
  • 0xDEADDEAD - usado pelo Windows para indicar uma falha de depuração iniciada manualmente, também conhecida como a Tela Azul da Morte.

Estas não são as únicas disponíveis, é claro , mas apenas uma pequena lista de exemplos que pareciam divertidos. Sabe de mais alguma coisa? Conte-nos nos comentários.

Vendo exemplos para você

Você pode ver mais exemplos abrindo um editor hexadecimal e abrindo qualquer número de tipos de arquivo. Há uma abundância de editores de hexadecimal freeware disponíveis para Windows, OS X ou Linux - apenas certifique-se de ter cuidado ao instalar o freeware para não ser infectado com crapware ou spyware.

Como um exemplo, imagens de recuperação para telefones Android como ClockworkMod comece com “ANDROID!” se lido no formato ASCII.

Nota: não mude nada enquanto estiver olhando em volta. Editores Hex podem quebrar coisas!


Como Ver e Tirar Fotos em Widescreen (16: 9) no iPhone

Como Ver e Tirar Fotos em Widescreen (16: 9) no iPhone

Se você possui algum dos iPhones mais recentes, provavelmente notou que quando você tira uma foto com a câmera, ela sempre tem barras pretas em ambos os lados da imagem. A tela do iPhone tem uma proporção diferente da foto e, portanto, a imagem não preenche a tela inteira.Para alguém como eu, isso é apenas um aborrecimento. Sim, h

(How-to)

Como obter um sistema de arquivos local no estilo Android em um iPhone ou iPad

Como obter um sistema de arquivos local no estilo Android em um iPhone ou iPad

Com o iOS 8, seu iPhone ou iPad agora pode ter um sistema de arquivos local como o dos usuários do Android. Armazene arquivos para uso off-line, acesse-os em qualquer aplicativo atualizado e salve arquivos diretamente no sistema de arquivos de outros aplicativos. Além disso, algumas dessas soluções permitem que você acesse facilmente os arquivos de um Mac ou PC em seu dispositivo.

(how-to)