Protección Anti-Tamper

La protección anti-tamper permite que tu aplicación verifique su propia integridad en tiempo de ejecución y se cierre en el momento en que su código haya sido modificado, reempaquetado o parcheado.

  • JavaScriptJavaScript
  • AndroidAndroid
  • AppleiOS
TL;DR

La protección anti-tamper añade comprobaciones de integridad a tu aplicación. Mientras se ejecuta, verifica que su propio código y sus recursos coinciden con lo que tú publicaste. Si un atacante ha parcheado el binario, reempaquetado la app o la ha modificado en disco, las comprobaciones fallan y la aplicación se niega a ejecutarse o se degrada de forma segura.

Definición

¿Qué es la protección anti-tamper?

La protección anti-tamper es una técnica que permite a una aplicación detectar si su propio código ha sido alterado desde que se compiló. Tampering significa cualquier modificación no autorizada: parchear un binario para eliminar una comprobación de licencia, inyectar código malicioso o reempaquetar una app móvil y redistribuirla.

Una vez que publicas tu aplicación, se ejecuta en entornos que no controlas. Un atacante puede abrirla, modificarla y ejecutar la versión cambiada. Sin comprobaciones de integridad, la aplicación no tiene forma de saber que ya no es el software que tú lanzaste.

La protección anti-tamper cierra esa brecha. La aplicación lleva consigo un registro de su estado legítimo y lo verifica en tiempo de ejecución. Si el código no coincide, la aplicación sabe que ha sido manipulada y puede responder.

Mecanismo

Cómo funciona la protección anti-tamper

La protección anti-tamper combina varias técnicas de integridad:

  • Checksums del código. La aplicación calcula hashes de su propio código y los compara con los valores conocidos como buenos que se embebieron en tiempo de compilación.

  • Verificación de firma. La aplicación comprueba que la firma de su paquete coincide con la del publisher original.

  • Detección de reempaquetado. En móvil, la aplicación detecta cuándo ha sido desempaquetada, modificada y vuelta a firmar por alguien que no eres tú.

  • Integridad de recursos. Los recursos y assets embebidos se verifican para que un atacante no pueda cambiarlos.

Cuando una comprobación falla, la respuesta es configurable: terminar, desactivar funcionalidades sensibles o alertar a tu backend.

Ejemplo

Ejemplo de anti-tamper

Tu aplicación se publica sin cambios. Lo que cambia es si una copia parcheada puede llegar a ejecutarse.

Sin anti-tamper

Un atacante parchea el binario compilado para saltarse tu comprobación de licencia, lo reempaqueta y distribuye la versión crackeada. Funciona igual que el original, pero sin la protección.

Con anti-tamper

El mismo binario parcheado arranca, la comprobación de integridad detecta que el código ya no coincide con el hash original, y la aplicación se niega a ejecutarse.

Sin anti-tamper
public void Start()
{
    License.Verify();
    App.Run();
}
Con anti-tamper
public void Start()
{
    License.Verify();
    App.Run();
}

Casos de uso

Cuándo usar la protección anti-tamper

La protección anti-tamper importa especialmente cuando tu aplicación:

  • Contiene lógica de licencias, pagos o autenticación que un atacante querría eliminar.
  • Se distribuye a dispositivos y entornos que no controlas.
  • Tiene riesgo de ser reempaquetada y redistribuida, algo habitual en apps móviles.
  • Debe garantizar que el código que se está ejecutando es el código que tú publicaste.

Encaja de forma natural con el anti-debugging y la ofuscación: la ofuscación hace que el código sea difícil de leer, el anti-debugging frena el análisis en vivo, y el anti-tamper asegura que el código no haya sido cambiado.

Disponibilidad por plataforma

Protección anti-tamper según la plataforma

  • JavaScript

    Código auto-defensivo que resiste la modificación y el reformateo.

  • Android

    Verificación de integridad de la aplicación y detección de reempaquetado.

  • iOS

    Detección de tampering sobre el bundle de la aplicación publicada.

Preguntas frecuentes

¿Qué es la protección anti-tamper?
La protección anti-tamper es una técnica que permite a una aplicación detectar si su propio código o recursos han sido modificados desde que se compiló, y responder cerrándose o degradándose de forma segura. Defiende frente a binarios parcheados, apps reempaquetadas y código inyectado.
¿La protección anti-tamper afecta al rendimiento?
El coste en runtime es mínimo. Las comprobaciones de integridad son ligeras y se ejecutan de forma periódica, así que los usuarios legítimos no notan diferencia mientras que una versión manipulada no llega a ejecutarse.
¿Se puede saltar la protección anti-tamper?
Un atacante decidido puede intentar localizar y desactivar las comprobaciones de integridad, por eso el anti-tamper se combina con ofuscación y anti-debugging que hacen que esas comprobaciones sean difíciles de encontrar. El objetivo es hacer que el tampering sea inviable en la práctica, no teóricamente imposible.
¿Cuál es la diferencia entre anti-tamper y ofuscación?
La ofuscación hace que el código sea difícil de entender. El anti-tamper garantiza que el código no haya sido cambiado. Uno protege la confidencialidad, el otro la integridad, y juntos son más fuertes.
¿Qué plataformas soportan la protección anti-tamper?
ByteHide Shield ofrece protección anti-tamper para JavaScript, Android e iOS. Para .NET, las protecciones de integridad equivalentes son Anti-Dump e Invalid Metadata.
+10.000 desarrolladores y empresas protegen sus aplicaciones con ByteHide

Protege tu aplicación con
ByteHide Shield

La protección anti-tamper es una de las más de 20 protecciones de ByteHide Shield. Aplícala a tu aplicación JavaScript, Android o iOS.

ByteHide runtime dashboard showing live threat monitoring and protection metrics