Geek Challenge 2024 Reverse Engineering Write-ups

Reverse Engineering Challenges Week 1 Sign-in Challenge The provided assembly file was decompiled into equivalent C code. The program reads a string, processes it by XORing even-indexed characters with 7 and subtracting 5 from odd-indexed ones, then compares the result with a target string. #include <stdio.h> #include <string.h> ch ...

Publicado em 8-12 07:41

Instrução BGEI: Ramificação Condicional com Operando Imediato

A instrução BGEI, do inglês "Branch if Greater than or Equal Immediate", é um comando de ramificação condicional presente em certas arquiteturas de processadores, incluindo variantes baseadas em ARM. Essa instrução direciona o fluxo de execução para um endereço específico quando o valor em um registrador atende a uma condição de maior ...

Publicado em 7-31 00:10

Construindo um Sistema Operacional Mínimo com Ferramentas de Código Aberto

Ambiente de Hospedeiro Este guia assume o uso de um sistema Ubuntu 14.10 como base para desenvolvimento. Assegure-se de ter as ferramentas necessárias instaladas. apt-get install build-essential nasm genisoimage bochs bochs-sdl Compilação do Carregador Multiboot Crie um arquivo em Assembly para o carregador (loader) do sistema operacional. O c ...

Publicado em 7-27 05:56

Configurando o Ambiente para Programação Assembly em DOS

Para explorar o universo da programação em Assembly de 16 bits, especialmente no contexto do sistema operacional DOS, é fundamental preparar um ambiente adequado. Como as CPUs 8086, essenciais para essa era, não são nativamente compatíveis com sistemas operacionais modernos como o Windows 10, utilizaremos um emulador e um conjunto de ferramenta ...

Publicado em 7-20 13:43

Depuração Avançada em Go com Símbolos de Debug em Assembly

Depuração Eficiente em Go: Técnicas com Símbolos de Debug em Assembly No desenvolvimento de software em Go, os símbolos de debug desempenham um papel crucial na identificação e resolução de problemas complexos. Eles servem como uma ponte entre o código-fonte e os binários compilados, facilitando o diagnóstico de erros em tempo de otimização. Im ...

Publicado em 7-13 16:16

Otimização de Estruturas de Repetição em C e Go: Análise de Desempenho de Loops for e while

Mecanismos de Execução e Fluxo de Controle em Loops Em linguagens de baixo e médio nível como C e Go, as estruturas de repetição for e while são fundamentais para processamento iterativo. Embora semanticamente intercambiáveis em muitos cenários, suas implicações no fluxo de controle e na otimização do compilador variam conforme o contexto de us ...

Publicado em 7-12 07:49

Características de Arrays em Engenharia Reversa

void processarDados() { int valores[10] = { 10, 20, 30, 40, 50, 60, 70, 80 }; valores[0] = 110; valores[1] = 120; valores[2] = 130; valores[3] = 140; valores[4] = 150; valores[5] = 160; valores[6] = 170; valores[7] = 180; return; } 5: int valores[10] = { 10, 20, 30, 40, 50, 60, 70, 80 }; 0012F59 ...

Publicado em 7-3 18:47

Chamadas de Sistema no Linux: Entendendo a Transição do Usuário para o Núcleo

A arquitetura de processadores Intel x86 define quatro níveis de execução privilegiada (anéis ou rings), numerados de 0 a 3. Idealmente, o código do núcleo do sistema operacional executa no Ring 0 (o mais privilegiado), os drivers em Ring 1 e Ring 2, e as aplicações do usuário em Ring 3 (o menos privilegiado). No entanto, o sistema Linux simpli ...

Publicado em 6-3 03:05