• 【转】mac环境下Android 反编译


    一、需要的工具

    1. apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。
    2. dex2jar:将反编译后的classes.dex文件转化为.jar文件。
    3. jd-gui:用于将.jar文件转换成java代码。

    1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 
    注:最新的apktool.jar 文件可以点击这里下载
    .sh脚本是自写脚本可不用更新最新,下载的jar文件名必须是apktool.jar,不能是apktool-2.0.1.jar这样的形式

    2.将shell脚本”apktool.sh”和”apktool.jar”放到 “/usr/local/bin”目录下

    3.增加这两个文件可执行权限,chmod a+x file 
    在命令提示符下执行:
    cd /usr/local/bin
    chmod a+x apktool.sh
    chmod a+x sh”和”apktool.jar

    4.执行apktool.sh d file.apk
    注:file.apk 是在当前目录下的需要反编译的apk文件,需注意目录是否正确
    例:我的apk文件放在/Users/netcorner/Downloads/ingwill.apk
    执行步骤为:
    cd /Users/netcorner/Downloads/
    apktool.sh d wdj.apk

    完成以上步骤就可以反编译出apk中的所有资源文件了

     

     
     

    二、反编译步骤

    第一步:使用apktool工具对APK进行反编译

    1. 下载apktool

     
    下载apktool

    2. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下
     
    菜单栏点击「前往」→ 「前往文件夹」
     
    前往 /usr/local/bin 文件夹
     
    将apktool脚本和apktool.jar文件复制到此文件夹

    3. 使用命令chmod +x 分别对apktool和apktool.jar文件进行提权

    chmod +x apktool
    
    chmod +x apktool.jar
    



    4. 测试是否成功,终端输入apktool,若成功,如下图

     
    apktool安装完成

    5. 运行apoktool脚本进行反编译

    ①. 把你需要反编译的apk文件也复制到 /usr/local/bin 文件夹下
    ②. 终端输入命令 apktool d xxx.apk回车,等待执行完毕

    apktool.sh d xxx.apk
    
     
    执行脚本反编译apk文件

    ③. 执行完毕后目录下会生成反编译apk的对应文件夹


     
    反编译成功

    但是我们在反编译apk后的文件夹里并没有看到classes.dex文件,这时候就需要在上述命令行添加-s,表示禁止将dex文件解码成smali

    apktool.sh d -s xxx.apk
    
     
    禁止将dex文件解码成smali
     
    成功生成classes.dex文件

    第二步:使用dex2jar工具把classes.dex文件转化成.jar文件

    1. 下载dex2jar并解压
    2. 把classes.dex文件复制到解压后的dex2jar文件夹下,终端执行命令sh d2j-dex2jar.sh classes.dex

    sh d2j-dex2jar.sh classes.dex
    
     
    dex2jar成功

    3. 执行完毕后,会在文件夹下生成一个.jar文件,里面就是java源码

     
    生成的.jar文件

    第三步:使用JD-GUI软件查看jar包下的java源码

    1.下载并安装jd-gui
    2. 打开安装好的JD-GUI,直接把第二步生成的.jar文件拖进去,就能看到反编译出来的java源码了

     
    打开JD-GUI

     
    把jar包拖进去就可以看到java源码了



    作者:AIllll
    链接:https://www.jianshu.com/p/3a305f32c4a3
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    数据库第三范式的思考
    channel通道例子
    go 测试代码性能实例
    go 新建項目引入gin失敗
    go 创建切片slice的四种方法
    Hibernate查询操作
    shell 分割训练数据
    hadoop streaming 分桶到不同的part
    C语言调用另一个文件的方法
    在springboot中使用jdbcTemplate(3)
  • 原文地址:https://www.cnblogs.com/c-x-a/p/10660561.html
Copyright © 2020-2023  润新知