> For the complete documentation index, see [llms.txt](https://bla0x1s-organization.gitbook.io/untitled-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bla0x1s-organization.gitbook.io/untitled-1/reverse-engineering/reverse/unpacking.md).

# UNPACKING

Que es un packet?

El packet es una forma de comprimir los archivos, pero no solo lo compirme si no que tambien lo protege, haciendo mas dificil de obtener el codigo de este. Esto se puede representar de esta forma:

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2FmBbSbOOH2sDjfLdvjeIh%2Fimage.png?alt=media&amp;token=0bc3ea62-bad0-42e0-a6c2-866f6696f491" alt=""><figcaption></figcaption></figure>

En esta parte tambien podemos ver que es y como funciona el `Entry Point (EP)` y el `Original Entry Point (OEP)` .

Podemos ver la diferencia de un ejecutable normal a un ejecutable en Packet:

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2FaR28YRW68iDl0LztDdol%2Fimage.png?alt=media&amp;token=a242f93e-c678-44b0-a6fa-9748409a9929" alt=""><figcaption><p>EP del inicio de un ejecutable original</p></figcaption></figure>

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2FPNgpXnbo0ktjuRS88PFz%2Fimage.png?alt=media&amp;token=2f5d7b0c-12a6-4b28-a034-1a5c52217132" alt=""><figcaption><p>OPE inicio del mismo ejecutable pero este empacado</p></figcaption></figure>

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2Fgr4XIJSJUbqEQvLYhBLW%2Fimage.png?alt=media&amp;token=9a5f1f38-f94e-4ea5-8b5f-631f93f119e7" alt=""><figcaption><p>Mapa de memoria del ejecutable original</p></figcaption></figure>

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2F3qSKm0IfdH8cZ1yhaEx1%2Fimage.png?alt=media&amp;token=74da8572-2092-4d9a-85c8-45ce162dc12f" alt=""><figcaption><p>Mapa de memoria del mismo ejecutable empacado</p></figcaption></figure>

Debemos de tomar en cuenta que en varias ocaciones nos toparemos con binarios empaquetados  que tienen protecciones ante debuging, para saber esto lo que debemos hacer es correrlo en en debuger (en mi caso x64dbg) y si se ejecuta no tinen protecciones.

Para analisar uin binario empacado debemos de detener el programa en el OPE ya que como vemos este no inicia donde deberia debido a las protecciones: <br>

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2FedUDB2sNKP42rMTDTaCj%2Fimage.png?alt=media&amp;token=3c47f05c-33f0-489c-a702-26e1e8e3c57e" alt=""><figcaption></figcaption></figure>

Para esto debemos ponemos un breakpoint  en el `00401000` que segun la imagen de referencia del principio, aqui sera donde escribira el codigo.&#x20;

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2FByzz4sU1I0t3cNqWsPdy%2Fimage.png?alt=media&amp;token=0f00d3ef-565c-4c43-82a2-48c0adcc41a4" alt=""><figcaption><p>Breakpoint</p></figcaption></figure>

<figure><img src="https://92799483-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9cgYhu8bocuplJfOrqoA%2Fuploads%2Fyah3VyJXXB86J30tVwur%2Fimage.png?alt=media&amp;token=04ebb267-fc26-4b12-8d6e-b041bb3144e6" alt=""><figcaption><p>Al correrlo se detiene al inicio del codigo</p></figcaption></figure>

Y aqui ya estamos especificamente en el `OEP`&#x20;
