用户
搜索
  • TA的每日心情
    慵懒
    2018-8-10 15:48
  • 签到天数: 125 天

    连续签到: 1 天

    [LV.7]常住居民III

    i春秋作家

    推荐小组成员

    Rank: 7Rank: 7Rank: 7

    112

    主题

    269

    帖子

    804

    魔法币
    收听
    0
    粉丝
    17
    注册时间
    2017-7-24

    幽默灌水王突出贡献春秋文阁i春秋签约作者i春秋推荐小组积极活跃奖春秋游侠秦

    HAI_ i春秋作家 推荐小组成员 幽默灌水王 突出贡献 春秋文阁 i春秋签约作者 i春秋推荐小组 积极活跃奖 春秋游侠 秦 楼主
    发表于 2018-1-24 19:28:06 74042

    [toc]

    0x00 前言

    这里强调一句,在学习的时候,一定要进行笔记的书写,这样才可以

    学习的目的:

    1.对安卓开发的进行简单的复习(由于本人是Android开发的,所以layout就不重复了)。
    2.对最简单的安卓App进行开发。
    3.对smali代码进行进一步的学习。
    4.对dex文件的分析
    5.简单的动态调试
    6.静态分析
    7.Davlik虚拟机
    8.简单的APK文件分析。
    以上待补充

    工具使用:

    1.Android studio 基本操作
    2.apktool
    3.APKIDE
    4.AndroidKiller
    5.jd-gui

    学习相关基础

    1.android简单开发能力
    2.smali代码简单了解
    3.java了解
    4.一些简答工具的使用

    学习内容

    本次学习内容:
    Android开发简单的HelloWorld
    对开发的HelloWorld进行反编译

    0x01 Android helloworld

    开发了一些简单的App所以对于这个Android项目建立就不赘述,想学的可以去单独看看Android开发。

    第一步

    新建一个project,更改名称
    这里写图片描述

    第二步

    选择API
    这里写图片描述

    第三步

    默认选择,然后下一步。
    这里写图片描述

    第四步

    选择activity的名称,也就是我们主Activity的名称,什么是主Activity,就是类似于c语言的main函数,当然只是类似。
    这里写图片描述

    第五步

    因为Android studio新建的程序有基本xml,还有helloworld,所以这里不讲解。也不用谷歌自带的模拟器了,直接生成apk。
    Build —— Build APK
    然后等待,就会Build APK。
    这里写图片描述

    第六步

    在first_demo\app\build\outputs\apk下就可以看到我们生成的APK。
    这里写图片描述
    这个APK就可以在手机或者其他的虚拟机上进行测试了。

    第七步

    我这里使用的是夜神模拟器,自己百度下载就好。这里不提供下载链接。
    这里写图片描述
    把自己的APK拖进去就可以了。
    这里写图片描述

    0x02 Android APK分析

    1.神器android Analyzer

    这个是Android studio自带的神器,以前没有用过,这次写的时候才发现,用的方法很简单。
    Build ——Analyze APK就可以了。
    这里写图片描述
    这个东西以后如果用的到的话就进行详细了解。

    2.APK实质

    APK的实质就是一个特殊的zip文件包。
    把APK拖到Submit中进行一个查看,当然也可以用其他工具。
    这次我们只是做一个查看,不进行分析。
    这是我重新写的,之前写的那份不知道为什么没有保存,这两天回家,网卡到爆炸。好气emmmm。
    这里写图片描述

    3.APK内容分析。

    把APK后缀改成.zip然后解压,就会得到一些文件。
    这里就是所有的文件了。我们来依次做一个简单的认识。
    这里写图片描述

    3.1签名文件

    这里写图片描述
    这里就是签名文件了。这次只是简单的认识。

    3.2资源文件

    这里写图片描述
    这里面放的是一些图片资源文件,比如说是一些图标。

    3.3资源索引文件

    这里写图片描述
    简单的说就是R.等资源存放的地方,这个可能开发的人更能理解吧。

    3.4classes.dex

    这里写图片描述
    dex文件就是java代码编译之后的内容,也是我们手机可以直接运行的文件。

    3.5AndroidManifest.xml

    这里写图片描述
    这个文件里是是一些权限的描述,还有主文件的问题。

    3.6结束语

    这些文件以后都会进行详细的分析。

    0x03 反编译

    1.apktool

    使用java -jar apktool.jar d demo.apk指令进行反编译,但是可能会出现一个问题,就是apktool可能因为版本过低的,编译的时候会出问题。
    我们在cmd中输入命令。
    这里写图片描述
    然后就反编译成功了。

    1.1反编译文件

    这里写图片描述

    1.2original文件夹

    这里写图片描述
    这个文件夹里里面就是签名文件和AndroidManifest.xml

    1.3.res文件夹

    反编译后还是资源文件。

    1.4.smali文件

    这个就是我们的主要文件,dex文件被编译出来的就是samli文件,这个也是我们要主要研究的东西。
    这里写图片描述

    1.4.1 android文件

    这里写图片描述
    这个文件就是资源文件。并不是我们主要看的文件。

    1.4.2然后再来看一下com文件夹。

    这里写图片描述

    1.5MainActivity.smali

    首先来看看代码

    .class public Lcom/example/hanlei/first_demo/MainActivity;
    .super Landroid/support/v7/app/AppCompatActivity;
    .source "MainActivity.java"
    
    # direct methods
    .method public constructor <init>()V
        .locals 0
    
        .prologue
        .line 6
        invoke-direct {p0}, Landroid/support/v7/app/AppCompatActivity;-><init>()V
    
        return-void
    .end method
    
    # virtual methods
    .method protected onCreate(Landroid/os/Bundle;)V
        .locals 1
        .param p1, "savedInstanceState"    # Landroid/os/Bundle;
    
        .prologue
        .line 10
        invoke-super {p0, p1}, Landroid/support/v7/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V
    
        .line 11
        const v0, 0x7f04001b
    
        invoke-virtual {p0, v0}, Lcom/example/hanlei/first_demo/MainActivity;->setContentView(I)V
    
        .line 12
        return-void
    .end method
    

    1.5.1 第一个模块

    有没有觉得这个模块很熟悉,就是之前我们学习的开头文件。描述了一个路径,以及名称。
    这里写图片描述

    1.5.2第二个模块

    这里写图片描述
    这个模块就是,之前的通用模块,只是多了一句继承语句。support。

    1.5.3第三个模块

    这里写图片描述
    第三个模块就是onCreate模块,学习过Android编程的肯定知道这个就是启动模块,相当于main函数。
    我们来看看具体都有哪些内容吧。

    .param p1, "savedInstanceState"    # Landroid/os/Bundle;

    这一句话之前没有见到过,意思就是说传入的参数名为savedInstanceState。

     invoke-super {p0, p1}, Landroid/support/v7/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V
    

    这句话很简单,就是调用Landroid/support/v7/app/AppCompatActivity这一串的onCreate方法。然后返回值就是空。

    const v0, 0x7f04001b

    定义一个v0寄存器,赋值为0x7f04001b

    invoke-virtual {p0, v0}, Lcom/example/hanlei/first_demo/MainActivity;->setContentView(I)V
    

    然后调用setContentView方法把v0的值传进去。

    1.5.3结束语

    有没有感觉到之前在反编译java得到的smali对现在很有帮助呢。

    2.APKIDE

    使用方法很简单拖进去,简单粗暴易懂。
    这里写图片描述
    这个是编译之后的内容,和我们用apktool编译出来的一样但是这个提供了很多插件功能,这个之后再进行细说。

    3.AndroidKiller

    这个是我自己喜欢用的,之前喜欢用APKIDE之后喜欢用AndroidKiller了。
    方法也是很简单。直接拖进去就好了。
    这里写图片描述
    具体怎么使用之后详细说明。

    4.JD-GUI

    如果说smali代码看不懂的话,那么java代码是不是相对要容易一点呢了。
    JD-GUI这个工具的作用就是用来查看JAR文件的。我们把dex文件转成jar,然后就可以使用JD-GUI来查看了。
    这里写图片描述
    这个是查看apktool.jar文件做的演示。

    0x04 回编译

    APKTOOL

    使用命令:

    java -jar apktool.jar b demo

    生成的APK会存放在这个文件里,见图。
    这里写图片描述
    至于回编译的具体流程之后会慢慢讲到。
    这里只说APKTOOl的,其他的之后慢慢来,超级简单,自己研究吧。

    0x05 结束语

    我在想要不要再加点c语言,python什么的,是不是有点乱了。我觉得要复习的还有很多东西哦。

    所学所得

    最后加上一个简单的总结吧。
    1.APK内容文件的分析(网络问题,我写了四遍)
    2.apktool的使用(我第一次用你敢信?)
    3.工具(我本来就会用基本的,也不算是所得吧)
    4.思路
    5.其它

    最后

    有兴趣可以看看这个java基础系列,对smali理解可能有帮助。
    Android逆向-java代码基础(1)
    Android逆向-java代码基础(2)
    Android逆向-java代码基础(3)
    Android逆向-java代码基础(4)
    Android逆向-java代码基础(5)
    Android逆向-java代码基础(6)
    Android逆向-java代码基础(7)
    Android逆向-java代码基础(8)

    评分

    参与人数 1魔法币 +50 收起 理由
    XiaoYue97 + 50 感谢你的分享,i春秋论坛有你更精彩!.

    查看全部评分

    本帖被以下淘专辑推荐:

    破解的目的是为了更好的开发
    我是菜鸟,向前辈学习
    使用道具 举报 回复
    学习学习学习
    使用道具 举报 回复
    发表于 2018-1-26 10:43:56
    可以创建一个淘专辑
    逆向/破解/病毒分析板块  专属QQ交流群:496266893  群二维码

    https://bbs.ichunqiu.com/forum-60-1.html
    使用道具 举报 回复
    发表于 2018-1-26 11:33:14
    XiaoYue97 发表于 2018-1-26 02:43
    可以创建一个淘专辑

    其实我到现在都不知道这个淘专辑怎么用
    破解的目的是为了更好的开发
    使用道具 举报 回复
    发表于 2018-1-26 11:33:55
    XiaoYue97 发表于 2018-1-26 02:43
    可以创建一个淘专辑

    感谢表哥的魔法币
    破解的目的是为了更好的开发
    使用道具 举报 回复
    发表于 2018-1-26 11:47:10
    逆向/破解/病毒分析板块  专属QQ交流群:496266893  群二维码

    https://bbs.ichunqiu.com/forum-60-1.html
    使用道具 举报 回复
    楼主好强,要向楼主多多学习,谢谢分享,辛苦了
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册