zoukankan      html  css  js  c++  java
  • 浅析,反编译 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的安全性,可以使用爱加密进行加密保护。我也做过测试,使用爱加密后,原有的代码程序都被隐藏了,没法再看到源代码。

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

  • 相关阅读:
    Codeforces Round #592 (Div. 2)C. The Football Season(暴力,循环节)
    Educational Codeforces Round 72 (Rated for Div. 2)D. Coloring Edges(想法)
    扩展KMP
    poj 1699 Best Sequence(dfs)
    KMP(思路分析)
    poj 1950 Dessert(dfs)
    poj 3278 Catch That Cow(BFS)
    素数环(回溯)
    sort与qsort
    poj 1952 buy low buy lower(DP)
  • 原文地址:https://www.cnblogs.com/ablansetaimeng/p/4626558.html
Copyright © 2011-2022 走看看