美文网首页
Mac平台反编译Unity编译的安卓apk

Mac平台反编译Unity编译的安卓apk

作者: tackor | 来源:发表于2017-09-06 18:33 被阅读532次

    Mac平台反编译Unity编译的安卓apk

    时间: 2017.09.06

    参考资料:

    1. Android APK 反编译实践 http://www.jianshu.com/p/9e0d1c3e342e
    2. 提取Unity游戏资源和脚本 http://www.cnblogs.com/AaronBlogs/p/6853179.html

    个人总结

    一. 获取java代码(dex2jar-2.0工具)

    1. 拿到apk
    2. 修改后缀名(如 apple.apk 该成 apple.zip) 然后对.zip进行解压
      解压出来的额文件中的 classes.dex是安卓代码的核心部分,,dex是在Dalvik虚拟机上可以执行的文件。如果发现里面有多个(如 classes2.dex, classes3.dex)的都需要进行相同的操作, 但是我实践时只有一个, 因为工程方法数没有超过64k.
    3. 将这些 classes.dex 拷贝到 dex2jar-2.0目录下(dex2jar-2.0 是之前好的, 根据参考资料1, 中下载的)
    4. 打开终端, 进入dex2jar-2.0目录下
    5. 执行命令 sh d2j-dex2jar.sh classes.dex 得到classes-dex2jar.jar
    6. 打开JD-GUI 这个app(参考资料1中有下), 将刚得到的 classes-dex2jar.jar 拖到软件中
    7. 如果apk 没有进行混淆的话, 里面有个com文件, 然后结合apk 的公司名和 apk对应的应用名,就大概知道哪里是有用的代码(编写的, 不是一些lib上的代码)

    二. 获取res资源(如: layout样式, 动画, 文字values, 图片(应该是些UI图片) (apktool工具)

    1. 拿到apk
    2. 打开终端, 进入apk所在的路径下
    3. 执行命令 apktool d carIabTest.apk
    4. 这时候生成的 文件中, res 下面就可以找到你需要的资源还可以看到 AndroidManifest.xml里面的东西

    说明:

    * original文件夹是原始的AndroidManifest.xml文件
    * res文件夹是反编译出来的资源
    * smali文件夹是反编译出来的代码 (smali是有点类似于汇编的语法,是Android虚拟机所使用的寄存器语言。)
    

    注意: 如果是Unity项目, 那么在assets/bin/Data/Managed/Assembly-CSharp.dll 就是Unity的代码了. 如果要看的话可以将它拖到mono里面看, 但是好像看不了方法的具体实现什么的.只能看有哪些类, 方法和一些变量

    三. 如何拿到 apk(Unity制作的游戏) 的资源呢?

    四. 如果apk 进行了代码混淆, 那么如何处理呢?

    相关文章

      网友评论

          本文标题:Mac平台反编译Unity编译的安卓apk

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