Diseñar una secuencia de instrucciones para que haga algo más si se decodifica con un desplazamiento

Esta pregunta es un seguimiento deesa pregunta.

Para establecer el contexto de esta pregunta, considereProgramación libre de nulos. Esta es una técnica para enmascarar una secuencia de instrucciones (shellcode) como una cadena. En el lenguaje de programación C, el byte 0 marca el final de una cadena, por lo que la secuencia de instrucciones debe diseñarse para que no contenga dicho byte; de lo contrario, la función de manipulación de cadenas se vería truncada.

Los conjuntos de instrucciones IA32 y x86-64, con sus instrucciones de longitud variable sin alineación particular, permiten que las instrucciones para la tarea B se decodifiquen en un desplazamiento dentro de una secuencia existente de instrucciones para realizar la tarea A. Esta técnicaha sido usado puntualmente en los primeros días de la informática personal (1980) para ahorrar espacio.

¿La técnica de incrustar código dentro del código, comenzando en un desplazamiento dentro de la primera instrucción, ya se ha utilizado, por ejemplo, como una forma de engañar a la detección de antivirus? Eso tiene un nombre? Si es útil y ya se ha utilizado, ¿cuál es un ejemplo? Si el atacante está escribiendo el código para comenzar, es suficiente para que la tarea A no haga nada de una manera aparentemente inofensiva, lo que puede dejar suficiente margen para hacer cualquier cosa que uno pueda desear como tarea B.

Respuestas a la pregunta(1)

Su respuesta a la pregunta