Red de conocimiento informático - Conocimiento informático - Cómo evitar que se descompile el código Unity3D

Cómo evitar que se descompile el código Unity3D

Principio de cifrado (sin código fuente de Unity):

1. Abra libmono.so en IDA Pro y cambie mono_image_open_from_data_with_name a

mono_image_open_from_data_with_name_0,

2. ,

3.

2. Reemplazar implementar mono_image_open_from_data_with_name,

extern mono_image_open_from_data_with_name_0(...); /p>

mono_image_open_from_data_with_name(...) {

MonoImage *img = mono_image_open_from_data_with_name_0(...) ;

//Buscar encabezado del archivo de datos que no sea el prefijo DLL y luego descifrarlo img-gt; raw_data, modifique img-gt; raw_data_len en consecuencia

return img;

}

3. Vuelva a empaquetar libmono.so;

4. Escriba otra herramienta de cifrado e implíquela en el entorno de compilación (MonoDeveloper o VS, agregue una fase de compilación empaquetada para cifrar la DLL (JIT está deshabilitado en IOS y el estado sólido usa compilación AOT). no hay código lógico, así que no hay necesidad de preocuparse);

Desde AndroidManifest.xml, podemos ver que la transformación de Tencent debería consistir en modificar y reemplazar las entradas en Classes.dex, reemplazando la entrada anterior UnityPlayerProxyActivity con com. .tencent.tauth.AuthActivity. Luego cargue varios so personalizados: libNativeRQD.so.so.so. Está bien pensado y protegido para evitar que terceros confíen el descifrado a libmono. Aún no he analizado la implementación, pero creo que sigue siendo lo mismo de siempre.

mono_image_open_from_data_with_name en libmono.so ha sido reemplazado por mono_image_open_from_data_with_name_0.

Descifrado (android):

Método 1. ROOT el sistema Android (preferiblemente un teléfono móvil, no use un emulador, es muy lento) y monte el gancho API LD_PRELOAD para implementarlo.

Método 2: Extraer códigos de características de la memoria, simple, eficiente e incomparable; si la máquina puede leerlos, tú también;