• 浅析,反编译 Android APK流程分析!


           作为公司的技术兼产品人员,看到别人开发的优秀Android APK实在羡慕,在Android开发的过程,也很想去学习别人那些漂亮的动画和布局,或是产品逻辑等是怎么做的,所以最近学习了对APK的反编译,只做学习借鉴,提升产品竞争力,不为任何不法企图之用。
           首先下载反编译软件apktool 、dex2jar、 jd-gui对APK进行反编译

    工具介绍:

            apktool :资源文件获取,可以提取出图片文件和布局文件进行使用查看,其原理详情:(http://my.oschina.net/1590538xiaokai/blog/467830)

             dex2jar:将apk反编译成java源码(classes.dex转化成jar文件)

             jd-gui:查看APK中classes.dex转化成出的jar文件,即源码文件

    反编译流程:

            一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件

            下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹])

    说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。

            如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b test(你编译出来文件夹)便可,效果如下:之后在之前的test文件下便可以发现多了2个文件夹:build dist(里面存放着打包出来的APK文件)

          二、Apk反编译得到Java源代码

           下载上述工具中的dex2jar和jd-gui ,解压将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,效果如下:在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件便可以看到源码了,效果如下:被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名)。


           三、 图形化反编译apk

            上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk通过反编译,你可以获知该应用用到了什么第3方的库文件,它的代码是如何编写的等等。

           当然,有些APK为了避免被他人反编译,所以进行了代码混淆。因为很多不法分子盗版一款APP就是从反编译开始。所以从移动应用安全角度讲,为了避免他人了解自己的APK的布局和逻辑,的确应该做一些反编译的保护措施,尤其是避免被竞争对手看到。如果开发者不想被他人反编译,提高APK的安全性,可以使用爱加密进行加密保护。我也做过测试,使用爱加密后,原有的代码程序都被隐藏了,没法再看到源代码。

           作为一个普通移动开发者,反编译的目的只是了解他人应用程序的大体思路,对开发工作有益无害。

  • 相关阅读:
    如何把phpStorm打造成自己的专属IDE?
    PHP伪造referer突破网盘禁止外链(附115源码)
    PHP实现删除非站内外部链接实例代码
    Http Referer的一些总结
    jquery 选择器(name,属性,元素)大全
    Invoke 和 BeginInvoke 的真正涵义
    C# HashSet集合类型使用介绍
    Dev系列控件的AJAX使用Demo
    如何进行SVN数据迁移并保存版本号数据
    Window及document对象
  • 原文地址:https://www.cnblogs.com/ablansetaimeng/p/4626558.html
Copyright © 2020-2023  润新知