Red de conocimiento informático - Material del sitio web - Cómo ofuscar el código de Android y a qué debes prestar atención

Cómo ofuscar el código de Android y a qué debes prestar atención

Dos nuevas características del SDK 2.3:

1. Cuando instalé 2.3 por primera vez, revisé el directorio del SDK y encontré una nueva carpeta en \tools "proguard". En la foto de abajo, me pregunto si Google finalmente está considerando oficialmente incluir Proguard allí. En teoría, la ofuscación de Java es posible, pero la clave está en cómo escribir el script de ofuscación de proguard.

2. Después de usar SDK2.3, el proyecto recién creado tendrá un archivo "proguard.cfg" más que antes. Después de abrirlo, se sorprenderá gratamente al descubrir que este es el script proguard necesario para la ofuscación.

La siguiente imagen:

El código es el siguiente:

¿ver copia simple en el portapapeles?

-optimizaciónpasa 5

- dontusemixedcaseclassnames

- dontskipnonpublic dontskipnonpubliclibraryclasses

-dontpreverify

-detallado

-optimizaciones

!

-mantener la clase pública * extiende android.app.Service

-mantener la clase pública * extiende android.content.BroadcastReceiver

-mantener la clase pública * extiende android .content.ContentProvider

-mantener la clase pública com.android.vending.licensing.Keepclassswithmemberames-verbose

-optimizaciones

! código/simplificación/aritmética, !campo/*, !clase/merging/*

-mantener clase pública * extiende android.app.Activity

-mantener clase pública * extiende android. app.Application

-mantener la clase pública * extiende android.app.Service

-mantener la clase pública * extiende android.content.BroadcastReceiver

-mantener la clase pública * extiende android.content.keep clase pública com.android.vending.licensing.ILicensingService

-mantiene clases con nombres de miembros clase * {

nativo;

} p>

-keepclasseswithmembernames clase * {

p> público (android.content.Context, android.util.ControlService, android.context).

keepclasseswithmembernames clase * {

public (android.content.Context, android.util.AttributeSet, int);

}

- keepclassmembers enumeración * {

público estático **[] valores();

público estático ** valorDe(java.lang.String);

}

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

Como lo haces desde el script Como puede ver, el proceso de ofuscación conserva la herencia de Actividad, Servicio, Aplicación, BroadcastReceiver, ContentProvider y otros componentes básicos.

Todos los nombres de variables locales y de clases se conservan, y todas las clases están parcialmente formateadas con constructores de argumentos fijos, enumeraciones, etc. (Consulte los ejemplos y comentarios en \examples para obtener más información).

Bien, eso es todo, aquí se explica cómo generar un APK ofuscado. Una vez más, me gustaría recordarles a todos que las nuevas funciones del SDK están documentadas, por lo que la documentación es muy importante.

Consulta la documentación del SDK 2.3, en la ruta "/docs/guide/developing/tools/proguard.html" en "Habilitar

ProGuard"

Para Para permitir que ProGuard se ejecute como parte de una compilación Ant o Eclipse, establezca la propiedad proguard.config en el archivo /development/tools/proguard.html.default.properties. La ruta puede ser

una ruta absoluta o una ruta relativa al directorio raíz del proyecto.

Agregue la línea "proguard.config=proguard.cfg" al "default.properties" del proyecto, como se muestra a continuación:

Esto configura la ofuscación de ADT. Luego viene el embalaje y la firma normales.

La siguiente imagen muestra el efecto del bloc de notas en la demostración del SDK:

Nota:

1. El paquete de software ofuscado será más pequeño que el software ofuscado previamente. paquete Un poco, así que manipule con cuidado.

Si la ofuscación no tiene éxito, cambie proguard.config=proguard.cfg en el paso 2 a proguard.config=E:\Mobile_Develop\Google_Android\publicGoldenBeach_new\ proguard.cfg una ruta absoluta similar. Tenga en cuenta que la ruta absoluta en el nombre de la carpeta no puede contener espacios. Si hay espacios, reemplácelos con "_".

2. Cuando Android usa proguard para ofuscar, generalmente el uso del propio archivo de configuración del sistema puede retener la mayoría de las clases a las que se debe hacer referencia externamente, como Actividad, extensiones de vista, etc., pero en algunos casos. se introducen Hay algunas bibliotecas externas y se producirán varios problemas si se ofuscan. Si no queremos ofuscar estos paquetes, debemos

-mantener la clase nombre del paquete.** {*;}<. /p >

De esta manera puedes mantener intacta la clase original