persona ofuscar ofuscada ofuscación metodos informatica ejemplo definicion datos como codigo c++ c compiler-construction obfuscation

c++ - ofuscada - ofuscar definicion informatica



Compilador C/C++ generando código ofuscado (4)

Cualquier compilador que sea capaz de generar números __COUNTER__ (a través de __COUNTER__ ) y pueda inyectar bytes en un flujo de ensamblaje en línea (a través de __emit ) puede realizar ofuscación de código en línea, no es nada como lo que hacen los empacadores externos y obfuscaters, lo que puede ser una ventaja . La "fuerza" se basa principalmente en la cantidad de metaprogramación que usted pone en ella, pero obviamente nunca podría decir encriptar IAT, etc.

¿Hay algún compilador conocido de C / C ++ que genere código ofuscado / no auditado? ¿O tal vez algún parche para compilador de código abierto C / C ++ como GCC?


Otro enfoque puede ser ejecutar el ejecutable dentro de un entorno VM protegido. ZProtect : un producto que no he usado ni promocionado, sino que se ha encontrado con un "Me siento con suerte Google": pretende proporcionar múltiples niveles de protección de código (VM, cifrado, ofuscación, etc.).

Si alguien realmente quiere saber cómo hiciste algo, lo averiguarán: si es un robo de propiedad intelectual, entonces contrata a un buen abogado. Si es criptográfico, utilice un enfoque industrial comprobado. Y si es algo de DRM, bueno, eso es una pelea para pasar al hardware (y los kits de raíz) de todos modos.


Puede ofuscar el ensamblador con http://www.pelock.com/products/obfuscator . Probablemente pueda compilar en el ensamblador (en este caso, el estilo MASM) y luego ofuscarlo.

Edición: uso de muchas funciones virtuales / direccionamiento indirecto y / o un intérprete (es decir, cree su propio mini-bytecode para ciertos pasos de su procesamiento) como parte de los resultados de su código, en mi experiencia, en un código bastante irreversible.


Si está interesado en herramientas comerciales, es posible que desee consultar a Morpher (descargo de responsabilidad: trabajo en este proyecto). Esencialmente es una versión de llvm-gcc con pases de ofuscación adicionales: se supone que debes usar Morpher como un reemplazo gcc para gcc . Los pases de ofuscación incluyen protección constante, clonación de bloques y funciones básicas, malla de arcos CFG y otros; Se describen en la sección de documentación con ejemplos de montaje. Los idiomas con soporte oficial son C / C ++ / Objective-C / Objective-C ++, aunque podemos adaptarlo para cualquier cosa que pueda compilarse a LLVM IR según su solicitud.