首页»版块 兴趣街区 爱数码 如何破解Android软件(实战篇1)

如何破解Android软件(实战篇1)

    [复制帖子标题和链接]

92607

HONOR2409011266159 玩机达人  发表于 2016-11-7 20:02:13 属地未知 来自:浏览器
本帖最后由 择城终老 于 2016-11-7 20:22 编辑

      前面我们已经介绍了破解的思路,这里我们就开始实战,也会主动去解析一篇Dalvik汇编代码。

1.IDA pro的初体验

      我们有一款强大的反汇编工具,那就是 IDA pro。

      下载爱奇艺apk文件,用解压缩软件打开拷贝出classes.dex,将此文件直接移动到IDA pro中,如下图所示,你会得到该apk的所有反汇编代码:

如何破解Android软件(实战篇1)

      ALT+T负责定位搜索关键代码段。比如爱奇艺看会员剧的时候,如果你不是会员会提示如下图所示的字符串:

如何破解Android软件(实战篇1)

      如果该字符串是直接写在Android程序的代码中的,比如:

      Log.e(this.getclass().getname(),"错了");

      那么你直接复制字符串定位,如果是写在资源文件res/value/string中的,就是上图这样,你就需要找到该字符串的ID,ALT+T进行定位。

2.apktool的初体验

      下载工具,这个不用多说,将爱奇艺apk与apktool工具放在一个文件夹中,cmd定位到该文件,输入如下图所示的命令,如图:

如何破解Android软件(实战篇1)

      这样爱奇艺就反编译成功,在该目录的文件夹aiqiyi中,中间是apk,最后是保存反编译文件夹。

3.初步讲解Dalvik汇编指令

      我们通过apktool反编译后,查看清单文件发现。com.iqiyi.paopao.common.ui.activity.PaopaoTransferActivity该类为启动界面。那我们就分析该类的代码,当然启动界面不一定是主界面,有可能是启动动画,后续会跳转。(这里只做汇编语法分析)


如何破解Android软件(实战篇1)

.class public Lcom/iqiyi/paopao/common/ui/activity/PaopaoTransferActivity;

这很一目了然,该类的名字

.super Landroid/app/Activity;

他的父类是Activity。

# annotations
.annotation build Lcom/qiyi/qyapm/agent/android/instrumentation/Instrumented;
.end annotation

注解类Instrumented

# static fields
.field private static b:Z
.field private static c:Z
.field private static d:I
.field private static e:Landroid/content/Intent;
.field private static f:Lcom/iqiyi/paopao/common/h/com6;
.field private static g:Z
.field private static h:Z

静态字段,翻译成java:

private static Z b,,c,d,g,h;
private static Intent e;
private static com6 f;

你是不是会问哪里来的Z类与com6类?,该类文件夹下就有该类不信你看:

如何破解Android软件(实战篇1)

# direct methods
.method static constructor <clinit>()V
    .locals 2
    const/4 v1, 0x1
    const/4 v0, 0x0
    sput-boolean v0, Lcom/iqiyi/paopao/common/ui/activity/PaopaoTransferActivity;->b:Z
    sput-boolean v1, Lcom/iqiyi/paopao/common/ui/activity/PaopaoTransferActivity;->c:Z
    sput-boolean v1, Lcom/iqiyi/paopao/common/ui/activity/PaopaoTransferActivity;->g:Z
    sput-boolean v0, Lcom/iqiyi/paopao/common/ui/activity/PaopaoTransferActivity;->h:Z
    return-void
.end method

方法,有methods一目了然,且为构造函数constructor,locals 2局部变量为2,这里可以看到,方法没有多少行的说明,也就是.line num。显然这里的代码是经过混淆的。

const/4 v1,0x1 将数值符号扩展为32位后赋值给寄存器v1。

sput的意思是将静态字段(s)。(put)写。还原成java:

this.b=false;而v0存储的就是b。后面同样道理

return -void:表示函数从一个void返回。

今天暂时写这么多,时间有限,还请见谅。

评论7
荣耀粉丝17612241 玩机达人  发表于 2016-11-9 00:13 属地未知 来自:荣耀7
回去试试看
荣耀粉丝13026148  LV9  发表于 2016-11-9 13:11 属地未知 来自:EVA-AL10
厉害
荣耀粉丝31463829  LV4  发表于 2016-11-9 14:23 属地未知 来自:荣耀畅玩5A
NB
荣耀粉丝31463829  LV4  发表于 2016-11-9 14:23 属地未知 来自:荣耀畅玩5A
NB
荣耀粉丝9010959  LV7  发表于 2016-11-10 23:39 属地未知 来自:HUAWEI P7-L07
楼主厉害了
荣耀粉丝12468084 玩机达人  发表于 2016-11-13 07:31 属地未知 来自:HUAWEI TIT-AL00
太牛了
   发表于 2019-3-29 12:18 属地未知 来自:荣耀9
点赞
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表