Programa: Buhio
Protección:(X)Serial (X)KeyFile Server
Descripción: APK traduce frases de ingles al español
Objetivo: Hacer a que no pida la licencia y no pida que lo compremos si es que lo instalamos en otro teléfono
Dificultad:(X)NewBies ( )Intermedio ( )Avanzado ( )Master ( )Güru
DOWNLOAD: www.bhuio.com
link de descarga de tutorial completo en html con herramientas y APK a estudiar, y puedas regresar a este post a opinar
https://www.mediafire.com/?qk2o88o2qj0u51h
tamaño 30 megas
Herramientas:Ultraedit 16c para parchar los codigo hexadecimales, APK Manager 5 para decompilar el APK, Winrar, Ida Pro 6.5 , Un cererebro con coheficiente intelectual de 30, programacion en java (Obligatorio), smali2java (Alternativa para que se nos muestre el codigo fuente nativo APK en formato JAVA nativo)
Palm CRACKER:palspanishtutor, Post Nubila
FECHA: Jueves 31 Diciembre de 2014
INTRODUCCION
Muchos pensaran en que es mas facil rootear el telefono o instalar luckypatch, ademas el rootear el tefono tengo entendido que desconfigura el android market, y se desconfigura las tarjetas SIM, pero da la casualidad que los telefonos con los que cuento no pueden ser rooteados, y supongo que esto mismo le esta pasando a millones de usuarios que ahora leen este tutorial, asi que solo nos queda hacer una aplicacion crackeada nosotros mismos, si lo logramos nuestro objetivo estaremos haciendo un crack limpio y sin virus que es lo mejor, y lo excelente es que estaremos introduciendo a los nuevos crackers a esta nueva plataforma android que ha sido tan popular en esta decada en todo el mundo
Despues de varios años de haber dejado el cracking palm Os por el año 2000 segun recuerdo, en el año 2010 existio una plataforma mobil para telefonos celulares llamada Android y va por la version 5.0 y el sistema operativo del 90% de los telefonos a nivel mundial , decidi comprar un telefono de esos que les llaman inteligentes pues graba video, reproduce video en ultra alta definicion, se puede ver la teevision HD, tiene acceso a internet, tiene office , y se pueden leer documentos en PDF, y escuchar musica por horas, decidi darme de alta en android market y compre una aplicacion de android market llamada Buhio , segun dice traduce de ingles a español, y hay muchas aplicaciones traductoras multiidiomas de esta casa de software , cree entender que la proteccion es la misma , asi que procedi a respaldandar el APK descargado y comprado de la pagina de android Market, y queriendo instalar en un telefono celular alterno me tope con el siguiente mensaje, el cual me molesto
AL ATAQUE
Es necesario saber lo basico de lenguaje java, si no lo saben busquen un tutorial en google o comprensen un buen libro de java para dummies, despues regresen a este tutorial
Primero copiarmos el APK a la carpeta "place-apk-here-for-modding" dentro de la carpeta principal de APK Manager
Abrimos la aplicaciona APK Manager v5.0 presionando el icono Scrip , en windows 10 lo abrimos como administrador para que APK Manager tenga derechos de administrador.
Nos apaerecera la siguiente ventana
Seleccionamos la opcion 22 para indicarle al programa que aplicacion es la que vamos a trabajar damos enter y aparece
Damos enter
Seleccionamos la opcion 1 para que se extraigan los archivos en la carpeta por default
C:\Apk manager 5.0\projects si echamos un vistaso hay se encuentran los archivos descomprimidos, me preguntaran porque no use winrar directamente o winzip, la respuesta es simplemente por que este paso es necesario para poder
desensamblar los archivos y puedamos ver el codigo fuente
dentro el del menu principal de APK Manager presionamos el paso (9 Decompile APK) que sirve para decompilar los archivos (Es similar a windows 8 como si desensamblaramos un ejecutable con Hex-Rays IDA Pro Advanced v6.1 Retail)
Por cierto habra que echar un vistazo a ver si ya hay una version IDA que pueda desensamblar APK's (Lo veremos mas adelante)
Nuestra carpeta "Projects " cambian automaticamente los archivos como la imagen mostrada.
Podemos darnos cuenta que en la carpeta
C:\Apk manager 5.0\projects\Bhuio_Inglés_Retail.apk\smali\com\android\vending\licensing
Encontramos muchos archivos de licencia , hay que dejar por default al block de notas que abra los archivos con extensión .SMALLI
No cierrern todavía el APK Manager, de lo contrario si lo cierran no podremos volver a recompilar la aplicacion
Abrimos todos los archivos de licencia con Ultraedit32 para mi caso es la version 16, no quise actualizar la version ya que solo encontraba versiones con virus
Para nuestro caso hay que buscar las siguientes cadenas string
Dentro de ultraedit Nos vamos al ----> menu ----> "buscar en archivos" , nos aparecera el siguiente cartel
introduzcamos pues las palabras que estamos buscando "No licencia encontrado" , no olviden seleccionar la opcion "Todos los archivos abiertos"
/**
* Generated by smali2java 1.0.0.558
* Copyright (C) 2013 Hensence.com
*/
package de.omsn.bhuio.talkAmerican;
import com.android.vending.licensing.LicenseCheckerCallback;
import android.app.AlertDialog;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.app.ProgressDialog;
import android.content.res.Resources;
import android.widget.Toast;
import com.android.vending.licensing.LicenseChecker;
import android.content.ContentResolver;
import android.provider.Settings;
import com.android.vending.licensing.ServerManagedPolicy;
import com.android.vending.licensing.AESObfuscator;
import com.android.vending.licensing.Obfuscator;
import com.android.vending.licensing.Policy;
public class Licensing {
private static final String BASE64_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgRy7kYsB8BHokTrB8SfrAgzfwE1Z/eiubgxvQRE0Q4ugYE5WBxLW2ttXSUzfbXU74o8KFmaqNKS365G87FnglCN936bs9jye5y/Mpl4HW+0J5Z1WVR2MreM7TYO1FN5TCaUWzaNNRfDRl6e8rQY42mGh5/KK8etXTWDxH/Zuza6yCfzjUFDeiBzJvSN9pL+BmS1IeaCjxxmcsI9fl+C98rsmDvBECimy2JMgTSt1kwSLltUvy+rDL/rW9Iq6wDHy7wmV2aeqFfZcDeQ785ExLfGMVVpJ/MPmcG251HH1PQF0sK4ZrE+RYFkImsQB3Sg2ySoQpuB03CM6xMq5Q94ZcQIDAQAB";
private ITalkApp app;
private Licensing.CheckerCallback callback;
private LicenseChecker licenseChecker;
private ProgressDialog progressDialog;
private final Resources r;
private static final byte[] SALT = new byte[] {0xf8002ce7, 0xf8002c0b, 0xf8002c0c, 0xf8002c7a, 0xf8002cf1, 0xf8002ccb, 0xf8002cb6, 0xf8002cf4, 0xf8002c33, 0xf8002c7f, 0xf8002ca3, 0xf8002cd3, 0xf8002c43, 0xf8002cef, 0xf8002ce2, 0xf8002c8f, 0xf8002cff, 0xf8002c20, 0xf8002cbf, 0xf8002c59}
static {
}
public Licensing(ITalkApp app) {
app = app;
r = app.getActivity().getResources();
callback = new Licensing.CheckerCallback(this, 0x0);
String deviceId = Settings.Secure.getString(app.getActivity().getContentResolver(), "android_id");
licenseChecker = new LicenseChecker(app.getActivity(), policy, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgRy7kYsB8BHokTrB8SfrAgzfwE1Z/eiubgxvQRE0Q4ugYE5WBxLW2ttXSUzfbXU74o8KFmaqNKS365G87FnglCN936bs9jye5y/Mpl4HW+0J5Z1WVR2MreM7TYO1FN5TCaUWzaNNRfDRl6e8rQY42mGh5/KK8etXTWDxH/Zuza6yCfzjUFDeiBzJvSN9pL+BmS1IeaCjxxmcsI9fl+C98rsmDvBECimy2JMgTSt1kwSLltUvy+rDL/rW9Iq6wDHy7wmV2aeqFfZcDeQ785ExLfGMVVpJ/MPmcG251HH1PQF0sK4ZrE+RYFkImsQB3Sg2ySoQpuB03CM6xMq5Q94ZcQIDAQAB");
}
public void checkLicense() {
licenseChecker.checkAccess(callback);
}
class CheckerCallback implements LicenseCheckerCallback {
public void allow() {
if(!app.getActivity().isFinishing()) {
if((progressDialog != null) && (progressDialog.isShowing())) {
progressDialog.dismiss();
Toast toast = Toast.makeText(app.getActivity(), r.getString(0x7f050008), 0x0);
toast.show();
}
}
}
public void applicationError(LicenseCheckerCallback.ApplicationErrorCode errorCode) {
if(!app.getActivity().isFinishing()) {
displayFailDialog(String.format(r.getString(0x7f050006), errorCode.name()));
}
}
public void dontAllow() {
if(!app.getActivity().isFinishing()) {
displayFailDialog(r.getString(0x7f050007));
}
}
private void displayFailDialog(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(app.getActivity());
builder.setCancelable(false);
builder.setMessage(message);
builder.setPositiveButton("Purchase", new DialogInterface.OnClickListener(this) {
1(Licensing.CheckerCallback p1) {
}
public void onClick(DialogInterface dialog, int id) {
String uri = r.getString(0x7f050002);
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(uri));
app.getActivity().startActivity(intent);
app.getActivity().finish();
}
});
builder.setNeutralButton("Retry", new DialogInterface.OnClickListener(this) {
2(Licensing.CheckerCallback p1) {
}
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
progressDialog = ProgressDialog.show(app.getActivity(), r.getString(0x7f050004), r.getString(0x7f050005), true, false);
Licensing.CheckerCallback.this$0.checkLicense();
}
});
builder.setNegativeButton("Exit", new DialogInterface.OnClickListener(this) {
3(Licensing.CheckerCallback p1) {
}
public void onClick(DialogInterface dialog, int id) {
app.getActivity().finish();
}
});
AlertDialog alert = builder.create();
if((progressDialog != null) && (progressDialog.isShowing())) {
progressDialog.dismiss();
}
alert.show();
}
}
}
y si quiero modicar el codigo fuente y guardarlo como APK, como lo hago?, es posible esto con smali2java?
Habra alguna rutina que al arrancar el programa en el telefono se realice un autocheck sum , para saber si no fue modificada dicha aplicacion?
Intentemos enviandole un correo al desarrollador de aplicacion para que en su proximo actualizacion del programa incluya un editor hexadeecimal, y la opcion de poder modificar el codigo fuente y poder guardarlo como APK
hasta aquí con este tutorial , no lo continue porque desconozco que sigue?
si ya tenemos las instrucciones en código fuente como cambiamos o parchamos el código hexadecimal en el archivo classes.dex del APK zipeado
como se a que referencia hexadecimal con respecto al codigo fuente JAVA desensamblado por smali2java dirigirme para parchar instrucciones
favor de ayudar a concluir este tutorial
gracias
feliz fin de año 2014, y excelente año nuevo 2015
ATTE: palmspanishtutor