Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Algunos compiladores y herramientas de poscompilación producen código ofuscado (esto significa que intentan producir resultados que son muy difíciles de descompilar). Esto hace que sea más difícil revertir el código ejecutable. El éxito de la descompilación depende de la cantidad de información presente en el código que se descompila y de la sofisticación del análisis realizado en él. Los formatos de código de bytes utilizados por muchas máquinas virtuales (como Java Virtual Machine o .NET Framework Common Language Runtime) a veces incluyen metadatos en el nivel superior que hacen que la descompilación sea más flexible. Los lenguajes de máquina suelen tener muchos menos metadatos y, por tanto, son mucho más difíciles de compilar. En comparación, un desensamblador traduce un ejecutable exclusivamente a lenguaje ensamblador que, por otro lado, todavía depende del soporte de hardware y todavía tiene un nivel mínimo de abstracción (apenas superior al código de máquina), pero es legible por humanos (y este código puede revertirlo). a ser ensamblado en un programa ejecutable). Un buen descompilador debería implementar análisis de tipos. Aquí, la forma en que se utilizan los registros o regiones de memoria da como resultado restricciones en el tipo de ubicaciones. Por ejemplo, una instrucción AND implica que el operando es un número entero; Los programas no utilizan este tipo de operaciones en valores de punto flotante (excepto en código de biblioteca especial) o en punteros. Una declaración AND genera restricciones; ambos operandos pueden ser números enteros, o un número entero y el otro un puntero (en este caso, la tercera restricción surge en el orden de los dos operandos cuando los tipos son diferentes). Se pueden reconocer varias expresiones de alto nivel mediante el conocimiento de estructuras o disposiciones. Sin embargo, es difícil distinguir muchas de las posibilidades debido a la libertad del código máquina o también porque algunos lenguajes de alto nivel como C permiten la conversión y la aritmética de punteros. Descompilar es el acto de utilizar un descompilador, aunque si se utiliza como nombre puede referirse a la salida de un descompilador. Se puede utilizar para recuperar código fuente y es muy útil en casos de seguridad informática, interoperabilidad y corrección de errores. Machine Translated by Google Definiciones y características del ID, EGO y SUPEREGO A continuación hice un diagrama donde podemos ver cuáles son las características de cada uno de ellos y en qué se diferencia cada uno del otro. Machine Translated by Google
Compartir