andorid apk 软件破解思路

分享一个 破解android apk 软件的思路:

apk: 链接: http://pan.baidu.com/s/1jG3TUOe 密码: d1p4

首先,得打开软件,随便点点,看这个软件,到底干什么的,这个很重要

重要就在于:你要快速的找到关键字,,,就得从软件中的提示中寻找;



之后就看见这个, 点FREE  之后, 就进入输入code  随便输入,,就得到,一个提示; 

看到  Invalid coupon code  之后,,,得看看,,运气好不好,这个是不是关键字 

下面就用到,反编译的,工具  apkIDE  小米改之理, 需要java  环境

环境,自行搜索,jdk.1.7


找到关键字,,然然后先看看,java 代码,,



java 还是很容易看懂的 点 上边java ,,

就可以打开 jui  ,java的反编译器,搜索关键字,就可以看代码了,,!!

      paramVoid = (String)this.mResponse.get("status");
      int i = ((Integer)this.mResponse.get("days")).intValue();
      if (paramVoid.equals("success"))
      {
        dismissProgressDialog();
        giveFreePremium(i);
        return;
      }
      if (paramVoid.equals("expired"))
      {
        dismissProgressDialog();
        Toast.makeText(HabbitsApp.getContext(), "Coupon code expired", 1).show();
        return;
      }
    } while (!paramVoid.equals("invalid"));
    dismissProgressDialog();
    Toast.makeText(HabbitsApp.getContext(), "Invalid coupon code", 1).show();
    return;

这个一段代码,,就是有关,这个关键词 ,逻辑的代码!

看到里边有有一个判断,参数 paramVoid  还有等于成功的,,,

if (paramVoid.equals("success"))
 
 
if (paramVoid.equals("expired"))
while (!paramVoid.equals("invalid"));</span>
 
 
 
  
 

这个关键字 ,是做判断用的,,去smali 里边,去改改直接让她等于成功,试试!

smali 的阅读就得自己下功夫了, 

搜 dalvik opcodes 就可以找到官方的指令符文档,

 iget-object v3, p0, Lgui/premium/CouponVerificationTask;->mResponse:Ljava/util/Map;

    const-string v4, "status"

    invoke-interface {v3, v4}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/lang/String;

    .line 101
    .local v2, "status":Ljava/lang/String;
    iget-object v3, p0, Lgui/premium/CouponVerificationTask;->mResponse:Ljava/util/Map;

    const-string v4, "days"

    invoke-interface {v3, v4}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Ljava/lang/Integer;

    .line 102
    .local v1, "daysStr":Ljava/lang/Integer;
    invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I

    move-result v0

    .line 104
    .local v0, "days":I
    const-string v3, "success"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z


    move-result v3


    if-eqz v3, :cond_4


    .line 105
    invoke-direct {p0}, Lgui/premium/CouponVerificationTask;->dismissProgressDialog()V


    .line 106
    invoke-direct {p0, v0}, Lgui/premium/CouponVerificationTask;->giveFreePremium(I)V


    goto :goto_0


我们看到“succes ” 之后调用的函数   giveFreePremium

就是一个成功要调用的函数

所以在判断前边,去修改:

修改的方式有很多:

  1. 直接注释
  2. 是改否,否改是;
  3. 把,判断参数改成你想要走那个分支, 的值;
  4. 其他牛逼的


 invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z


    move-result v3


   # if-eqz v3, :cond_4


    .line 105
    invoke-direct {p0}, Lgui/premium/CouponVerificationTask;->dismissProgressDialog()V


    .line 106
    invoke-direct {p0, v0}, Lgui/premium/CouponVerificationTask;->giveFreePremium(I)V


    goto :goto_0

目标追踪

回编译,之后看FREE 随便输入,确定会后,看到有个时间限制!!!

书名,还没有改完

    paramVoid = (String)this.mResponse.get("status");
      int i = ((Integer)this.mResponse.get("days")).intValue();
      if (paramVoid.equals("success"))
      {
        dismissProgressDialog();
        giveFreePremium(i);
        return;
      }

java 代码中,giveFreePremium(i)

有个参数   i   找到她,,然后进入

 private void giveFreePremium(int paramInt)
  {
    LocalDate localLocalDate = new LocalDate().plusDays(paramInt);
    this.mStorePurchaseHelper.giveFreePremium("premium", localLocalDate);
    if (paramInt < 365)
    {
      Toast.makeText(HabbitsApp.getContext(), "Congratulations !! You have got free premium till " + localLocalDate.toString(), 1).show();
      return;
    }
    Toast.makeText(HabbitsApp.getContext(), "Congratulations !! You have got free premium", 1).show();
  }
  

看到这个参数的判断

 .line 125
    const/16 v1, 0x16d

    if-ge p1, v1, :cond_0

    .line 126
    invoke-static {}, Lgui/application/HabbitsApp;->getContext()Landroid/content/Context;

    move-result-object v1

看到判断,有很多种改法,

也可以把if-ge p1,v1, :cond_0 

改为 goto :cond_0

回编译



成功了!

高手很容易找到关键所在,这个要长期的积累才行,,

附上汉化破解,汉化后的软件

链接: http://pan.baidu.com/s/1eQ2GjkA 密码: tusn


小弟刚刚学习,学习笔记


ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值