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