iOS OLLVM de la compilación a la aplicación
No hace falta decir aquí que OLLVM se usa para confundir el código durante la compilación, incluida la ofuscación de cadenas y la ofuscación del flujo de control. Esto hace que sea imposible aclarar la lógica de ejecución de instrucciones sin problemas al descompilar el análisis estático, lo que aumenta en gran medida el análisis estático de la aplicación, protegiendo así la aplicación.
Hikari
Usamos el proyecto de código abierto Hikari, GitHub
admite:
1. Habilitación del flujo de pseudo control
2. Aplanamiento del flujo de control
3. Segmentación básica de bloques
4. Reemplazo de instrucciones
5. Anti-volcado de clase
6. Salto relativo basado en registros Con otros refuerzos, puede ser Destruir completamente el pseudocódigo de IDA/Hopper (comúnmente conocido como F5)
7, encriptación de cadenas
8, encapsulación de funciones,
etc., sin más preámbulos, vamos directamente al tema.
1. Configuración del entorno
1.1 Instalar CMAKE
Dado que se compila a partir del código fuente, es necesario instalar cmake.
Dirección de descarga del sitio web oficial: https://cmake.org/download/
Encuentre una versión adecuada para descargar, mi versión es
cmake --version
cmake version 3.10.2
Instalación, configuración:
Seleccione de la barra de menú: Herramientas: cómo instalar para uso de la línea de comandos
cmake --version
Pruebe si la instalación está completa.
1.2 Instalar SWIG
Vaya al sitio web oficial para descargar SWIG , yo uso la versión 3.0.12.
Una vez completada la descarga, descomprima e ingrese swig-3.0.12
./configure
make
sudo make install
Probar si la instalación está completa
swig -version
1.3 Instalar Z3
brew install z3
2. Descarga Hikari
Estoy usando la última versión del código fuente. Debido a que hay otras referencias de GitHub en la versión , debe descargarlo usted mismo y colocarlo en la ubicación especificada: 1. Coloque el encabezado en /include/llvm/Transforms/Obfuscation. 2. Coloque Core en /lib/Transforms/Obfuscation.
3. Compilar
mkdir Build
cd Build
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DLLVM_APPEND_VC_REV=on ../Hikari
ninja
Desminado primero:
1. Al ejecutar cmake -G “Ninja” -DCMAKE_BUILD_…, generalmente faltan cosas. Descargue los archivos correspondientes y colóquelos en el directorio especificado como se mencionó anteriormente, y básicamente compile.
2. Al ejecutar ninja, al compilar el entorno específico de iOS, se informarán dos errores:
aplicación inválida de 'sizeof' a un tipo incompleto 'struct stat64'
aplicación inválida de 'sizeof' a un tipo incompleto 'struct statfs64'
En este momento , Para encontrar el archivo de error projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc, abra el archivo y cambie el correspondiente: struct
stat64 a struct stat
truct statfs64 a truct statfs
3. Al ejecutar ninja, error fatal: lipo: / Build/lib/libclang_rt.builtins_arm64_ios.a y /Build/lib/libclang_rt.builtins_arm64_iossim.a tienen las mismas arquitecturas (arm64) y no pueden estar en el mismo archivo gordo de salida
La arquitectura arm64 del chip M1 también existe durante la compilación, por lo que modificamos directamente build.ninja, encontramos el comando lipo -output correspondiente y eliminamos la arquitectura arm64 del chip M1 para fusionar.
-arch arm64 /Volumes/IosWorkSpace/OLLVM/Hikari/Build/lib/libclang_rt.builtins_arm64_iossim.a
la compilación continúa
ninja install
git clone https://github.com/HikariObfuscator/Resources.git ~/Hikari
Continuar con
el archivo de mina no puede crear el directorio: /usr/local/libexec. Tal vez necesite
Esto se debe a que la ruta de instalación especificada no tiene permiso y es necesario modificar los siguientes parámetros del Makefile
将:
"/usr/local/libexec"
修改为:
"$(ROMFS)/usr/local/libexec"