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
Implementando Processos de Usuário em um Sistema Operacional
Fundamentos Teóricos
Em arquiteturas x86, cada tarefa pode ter um TSS (State Segment Task) e um LDT (Local Descriptor Table) associados. Os descritores de segmento para TSS e LDT residem na GDT (Global Descriptor Table). Uma troca de tarefa pode ser acionada por interrupções que invocam uma porta de tarefa, contendo o seletor do descritor TSS a ...
Publicado em 8-4 15:35
Aprimoramento do Módulo ccpuid: Compatibilidade Multiplataforma e Expansão de Recursos CPUID
O módulo ccpuid, originalmente focado nas plataformas Windows e Linux, foi atualizado para a versão V1.02, incorporando compatibilidade com Mac OS X. Esta nova versão introduz melhorias significativas, como suporte a C puro, a inclusão de novas constantes CPUF e um mecanismo aprimorado para detecção de platfaormas x86.
1.1 Suporte a Mac OS X
A ...
Publicado em 7-27 04:06
Otimizando Operadores do TensorFlow em CPUs x86
Otimizando o Operador PForDelta em CPUs x86
O operador PForDelta, um algoritmo de compressão de inteiros, pode ser otimizado em CPUs x86 para processamento eficiente de dados esparsos. As principais estratégias incluem:
1. Otimização por Vetorização
Aproveitar as extensões SIMD (SSE, AVX, AVX-512) das CPUs x86 permite o processamento paralelo d ...
Publicado em 7-16 17:57
Análise do Mecanismo de Interrupções no Linux 2.6.18
Inicialização das Interrupções
Este documento explora a implementação de interrupções no kernel Linux 2.6.18, enfatizando a interação entre hardware e software para compreensão do código-fonte.
1.1 Portas no Intel versus Linux
Arquiteturas Intel definem quatro tipos de portas: porta do sistema, porta de interrupção, porta de armadilha e port ...
Publicado em 6-22 22:22
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