¿Por qué aparecen muchos errores cuando uso show java mobile para descompilar un proyecto y abrirlo con AIDE?
A veces es inevitable descompilar un APK, modificar algunos puntos clave en él y luego descompilarlo en un APK nuevo y utilizable, lo cual es completamente posible. Si desea completar el trabajo anterior, necesita las siguientes herramientas. Los enlaces de descarga se adjuntarán más adelante. En el momento de la publicación de este artículo, estos software son las últimas versiones después de la confirmación por parte de Zatan Home.
1.APK-Multi-Toolv1.0.11.zip Úselo para descompilar apk y obtener código fuente de tipo pequeño y archivos de recursos. En términos generales, puede ver sus archivos de recursos descomprimiendo directamente un apk, pero algunos xml no se pueden leer y debe usar esta herramienta para descompilarlos. La versión china de Gao Ren Youdao 1.0.3 circula ampliamente en Internet. Si es la primera vez que utiliza esta herramienta, puede utilizar esta versión china para familiarizarse con sus comandos. Pero después de algunas pruebas diversas, el apk compilado desde la versión china siempre tuvo problemas con la firma y no se pudo firmar. Al final, estuvo bien usar la última versión.
2.dex2jar-0.0.9.15.zip se usa para convertir un archivo apk en un archivo tipo jar. Después de la conversión, use la siguiente herramienta jd-gui para ver su código java. La herramienta apk anterior es ciertamente poderosa, pero el archivo pequeño descompilado, que es un código de bytes dalvik, es similar al lenguaje ensamblador, como leer directamente el Libro del Cielo. Por esta razón, necesitamos usar dex2jar jd-gui para obtenerlo. código java. Después de leer, encuentre los puntos clave que deben modificarse.
3.jd-gui-0.3.6.windows.zip puede abrir archivos tipo jar y ver código java. Y puede guardar el código y luego obtener información fuente para verlo fácilmente después de guardarlo. Es mejor usar la última versión de este artículo. Si usa la versión anterior, encontrará que si hay una clase dentro de BActivity, habrá otro BActivity$1.java, similar a este archivo. La nueva versión no tiene este problema.
4.Smali2Java.1.0.0.558.zip se utiliza para convertir archivos pequeños a archivos java. Esta herramienta es solo una copia de seguridad. Porque las tres herramientas anteriores ya pueden cumplir con los requisitos de este artículo.
Si está expuesto a la descompilación por primera vez y no comprende la sintaxis pequeña, puede leer el enlace 1 enlace 2
La siguiente es una mezcla de APK de Android, que se utiliza para simplemente simular el inicio de sesión del usuario. Tenga en cuenta que solo se puede simular. Porque la apk oficial rara vez se juzga localmente. Esta aplicación requiere que el usuario ingrese un nombre de usuario y contraseña. Si el nombre de usuario es Yanzi y la contraseña es 123, se considera legal y saltará automáticamente a la segunda actividad.
lt;span style="font-family: Comic Sans MS;font-size: 18px;"gt;package org.yanzi.decompiledemo.activity
importar org.yanzi; .menu;
importar android.view.View;
importar android.widget. importar android.widget.Toast
clase pública LoginActivity extiende Actividad {
EditText loginName = null
EditText loginPswd = null
Botón loginBtn = null
@Override
void protegido onCreate(Bundle saveInstanceState) {
super.onCreate( saveInstanceState
setContentView(R.layout.activity_login
initUI());
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/ / TODO Generar automáticamente códigos auxiliares de métodos
if(isAllowLogin()) { <
Intent intent = new Intent(LoginActivity.this, SecondActivity.class
); startActivity(intención);
LoginActivity.this.
}
}}); @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflar el menú; esto agrega elementos a la acción.
getMenuInflater().inflate( R.menu.login, menú);
Devuelve verdadero
}
private void initUI(){
loginName = ( EditText)findViewById(R.id.edit_login_name);
loginPswd = (EditText)findViewById(R.id. edit_login_pswd);
loginBtn = (Button)findViewById(R.id. btn_login);
}
booleano privado isAllowLogi
n(){
Nombre de cadena = loginName.getText().toString().trim();
Cadena pswd = loginPswd.getText().toString().trim(
if(nombre ! = null amp; amp; pswd != null){
if(name.equals("") || pswd.equals("") ){
Toast.makeText(this, "Las contraseñas o los nombres de usuario no pueden ser nulos", Toast.LENGTH_SHORT).show()
devuelve falso
; }
}
}
if(nombre.equals("yanzi") amp;amp; pswd.equals("123")){ p>
p>
return true;
}else{
Toast.makeText(getApplicationContext(), "El nombre de usuario o la contraseña no coinciden", Toast.LENGTH_SHORT ).show()
}
Devuelve falso
Devuelve falso.
Devuelve falso
}
}
lt;/spangt
Enlace fuente adjunto: / yanzi1225627/article/details/38425453