<commit_before>:hp-tags: c++, programacion

= Inyector DLL

A penas comenzar algunos estarán rodeados de dudas y preguntas, así que, + iniciaré dando algunas definiciones de manera rápida y ligera, para que todos marchemos al mismo paso. Este post estará dedicado al desarrollo de un Inyector DLL.

== DLL (Dynamic Link Library) +
 
Son archivos que contienen código ejecutable y datos que pueden ser usados por uno o más programas. Mediante el uso de DLL, un programa puede ser modularizado en componentes separados. Exclusivos de los sistemas operativos Windows, tienen ".dll" como extensión.

== Inyección DLL

Es una técnica utilizada para ejecutar código dentro de otro proceso. Comúnmente es utilizada para influir o alterar el comportamiento de un programa.

== Inyector
[%hardbreaks][%hardbreaks]
Es el programa que lleva acabo la inyección de la DLL.
 
Existen diversas formas de inyectar DLL's, en este post explicare la más facíl. Esta consiste en lo siguiente; Windows provee funciones para crear un hilo en cierta posición de memoria de un proceso externo, para ello reservamos memoria en el proceso, escribimos en ella la ruta de la DLL que queremos inyectar y creamos un hilo pasandole como parámetros el proceso, la dirección de memoria donde se encuentra la función LoadLibrary y la dirección de memoria que reservamos que escribimos anteriormente.
 
Para el desarrollo de este programa haremos uso del lenguaje de programación C++, aun  que no hace falta conocerlo para seguir el post, basta con tener conocimientos de POO.

== Herramientas
[%hardbreaks][%hardbreaks]
    * IDE para C/C++ +
    * Compilador para C/C++

Yo utilizare CodeBlocks con MinGW (implementación de los compiladores GCC) de 32 bit para Windows, ambos los puedes descargar desde http://www.codeblocks.org/downloads/binaries[aquí^].
 

Sin más preámbulo pasemos a la parte que todos esperaban (aah sí XD).

== Proyecto 1: Inyector

==== Injector.h

[source,cpp]<commit_msg>Update 2017-10-19-Inyector-DLL.adoc<commit_after>:hp-tags: c++, programacion

= Inyector DLL

A penas comenzar algunos estarán rodeados de dudas y preguntas, así que, + iniciaré dando algunas definiciones de manera rápida y ligera, para que todos marchemos al mismo paso. Este post estará dedicado al desarrollo de un Inyector DLL.

== DLL (Dynamic Link Library) +
 
Son archivos que contienen código ejecutable y datos que pueden ser usados por uno o más programas. Mediante el uso de DLL, un programa puede ser modularizado en componentes separados. Exclusivos de los sistemas operativos Windows, tienen ".dll" como extensión.

== Inyección DLL

Es una técnica utilizada para ejecutar código dentro de otro proceso. Comúnmente es utilizada para influir o alterar el comportamiento de un programa.

== Inyector
[%hardbreaks]
Es el programa que lleva acabo la inyección de la DLL.
 
Existen diversas formas de inyectar DLL's, en este post explicare la más facíl. Esta consiste en lo siguiente; Windows provee funciones para crear un hilo en cierta posición de memoria de un proceso externo, para ello reservamos memoria en el proceso, escribimos en ella la ruta de la DLL que queremos inyectar y creamos un hilo pasandole como parámetros el proceso, la dirección de memoria donde se encuentra la función LoadLibrary y la dirección de memoria que reservamos que escribimos anteriormente.
 
Para el desarrollo de este programa haremos uso del lenguaje de programación C++, aun  que no hace falta conocerlo para seguir el post, basta con tener conocimientos de POO.

== Herramientas	
    [%hardbreaks]
    * IDE para C/C++ +
    * Compilador para C/C++

Yo utilizare CodeBlocks con MinGW (implementación de los compiladores GCC) de 32 bit para Windows, ambos los puedes descargar desde http://www.codeblocks.org/downloads/binaries[aquí^].
 

Sin más preámbulo pasemos a la parte que todos esperaban (aah sí XD).

== Proyecto 1: Inyector

==== Injector.h

[source,cpp]
{'fraction_non_alphanumeric': 0.050674815380697735, 'fraction_numerical': 0.0035650623885918, 'mean_word_length': 4.579545454545454, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1062086', 'n_tokens_mistral': 1259, 'n_tokens_neox': 1244, 'n_words': 564}