Implementación de hooks de funciones con PolyHook en arquitecturas x86/x64

Fundamentos de la biblioteca PolyHook se presenta como una solución en C++ diseñada para la interceptación y redirección de llamadas a funciones en entornos x86 y x64. Su arquitectura permite aplicar técnicas de desvío de ejecución, como la inyección de saltos relativos en línea o la sustitución directa de secuencias de instrucciones. Al abstra ...

Publicado el 8-28 00:26

Soluciones algorítmicas: cálculo de distancias, fusión de pociones, agrupación de secuencias y ecuaciones binarias

Sea $A$ la secuecnia original de tamaño $2n$. Definimos $a_x = \{i, j\}$ si y solo si $A_i = A_j = x$ con $i < j$. En particular, $a_0 = \{1, 1\}$. En otras palabras, $a_i$ representa las posiciones de ambas personas al recoger una piedra de tamaño $i$, con $a_{i,0} < a_{i,1}$. La respuesta total es simplemente la suma de los desplazamien ...

Publicado el 8-27 06:58

Uso y alcance de const en C++

En C++, la palabra clave const permite definir valores inmutables, controlar modificaciones a través de punteros y restringir comportamientos en funciones miembro. Su posición y contexto alteran significativamente su efecto. Punteros y const: tres combinaciones clave La ubicación de const respecto al operador * determina qué parte es inmutable: ...

Publicado el 8-26 22:10

Implementación en C++ del problema P1188 PASTE de la Olimpiada Informática

El problema P1188 PASTE consiste en simular operaciones de cortar y pegar sobre un archivo de texto que contiene inicialmente números naturales del 1 al N, uno por línea. Se deben realizar K operaciones y luego mostrar las primeras 10 líneas del resultado. Descirpción del problema Se tiene un archivo con N líneas (N entre 10 y 100.000). Cada lí ...

Publicado el 8-25 10:44

Miembros estáticos, puntero this, memoria dinámica y mecanismo de friend en C++

Miembros estáticos Los miembros estáticos pertenecen a la clase en lugar de a instancias específicas, permitiendo compartir datos entre todos los objetos de esa clase. Se almacenan en una zona global o estática con un ciclo de vida que abarca toda la ejecución del programa. Datos estáticos Declaración y definición class Contador { public: s ...

Publicado el 8-24 16:03

Implementación de Singleflight en C++ para Prevenir la Sobresolicitación

Concepto y Propósito de Singleflight El patrón Singleflight se utiliza para garantizar que múltiples solicitudes concurrentes para el mismo recurso costoso (como una consulta de base de datos o un cálculo complejo) ejecuten la operación subyacente solo una vez. Las solicitudes posteriores que llegan mientras la primera está en proceso esperan y ...

Publicado el 8-23 22:39

Uso y Manejo del Contenedor std::list en C++

Estrategias de Inicialización de std::list El contenedor std::list de la STL es una lista doblemente enlazada que permite diversas formas de construcción según las necesidades de memoria y datos iniciales. 1. Constructor por defecto Crea una lista vacía sin elementos iniciales. std::list<int> listaVacia; 2. Constructor con tamaño y valor ...

Publicado el 8-21 12:25

Contenedores desordenados en C++: unordered_map y unordered_set

Los contenedores unordered_map y unordered_set forman parte de la biblioteca estándar de C++ desde el estándar C++11. A diferencia de map y set, que utilizan árboles rojinegros y mantienen un orden estricto, estos nuevos contenedores emplean tablas hash como estructura subyacente, permitiendo operaciones promedio en tiempo constante O(1) para i ...

Publicado el 8-20 04:40

Compilación de programas C++ en entornos Linux

Compilación de un único archivo fuente Considere el siguiente programa C++ almacenado en saludo.cpp: /* saludo.cpp */ #include <iostream> int main() { std::cout << "Hola, mundo" << std::endl; return 0; } Este código utiliza std::cout del encabezado <iostream> para imprimir en la salida estándar. Se com ...

Publicado el 8-19 00:42

Operaciones de Archivos de Audio con la API MMIO en C++

La API de Multimedia de Windows (MMIO) proporciona un conjunto de funciones para interactuar con archivos multimedia, incluyendo archivos de audio. A continuación, se detallan algunas de las funciones clave: 1. mmioOpen Esta función se utiliza para abrir un archivo multimedia. Permite especificar el nombre del archivo, un puntero a una estructu ...

Publicado el 8-14 21:36