美文网首页
Apk的反编译

Apk的反编译

作者: Silver_Lee | 来源:发表于2016-09-27 14:13 被阅读128次

    参考自Android APK反编译就这么简单 详解(附图)

    准备工具

    • apktool(获取资源)
    • dex2jar(获取源码)
    • jd-gui(查看源码)

    流程

    一、获取资源(代码,图片,XML文件等)
    1. 解压apktool,得到三个文件:apktool.jarapktool.bataapt.exe
    2. 将需要反编译的apk放到刚才解压的文件夹下
    3. 打开命令行,定位到刚才的文件夹,执行

    apktool.bat d -f [apk文件] -o [输出文件夹]
    例:apktool.bat d -f test.apk -o test

    如下画面即执行成功


    apktool_command
    1. 反编译成功后找到上面的输出文件夹,这里面就是该apk下的资源了
    二、获取源码
    1. 解压dex2jar,得到一个同名的文件夹dex2jar。解压jd-gui,得到jd-gui.exe
    2. 将需要反编译的apk文件后缀改为rar或zip等可解压的格式并解压出来,从中找到一个classes.dex文件,将它放入上面的dex2jar文件夹中
    3. 命令行定位到dex2jar文件夹,执行

    dex2jar.bat classes.dex

    下图即执行成功


    dex2jar_command.png
    1. 执行成功后会在该目录下生成一个classes_dex2jar.jar文件,通过刚才解压得到的jd-gui.exe文件打开即可看到源码了
      效果图
      被混淆后的apk
      混淆后的效果图

    注意

    1. apktool解压之后的apktool.jar需要是最新的,否则将会打印以下错误信息
    Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
            at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:56)
            at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:491)
            at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74)
            at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66)
            at brut.androlib.Androlib.getResTable(Androlib.java:50)
            at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:189)
            at brut.androlib.ApkDecoder.decode(ApkDecoder.java:114)
            at brut.apktool.Main.cmdDecode(Main.java:146)
            at brut.apktool.Main.main(Main.java:77)
    Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
            at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
            at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:44)
            at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:102)
            at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:83)
            at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
            ... 8 more
    

    相关文章

      网友评论

          本文标题:Apk的反编译

          本文链接:https://www.haomeiwen.com/subject/kgucyttx.html