精华内容
下载资源
问答
  • APK防反编译技术PPT

    千次下载 热门讨论 2014-01-27 18:33:38
    我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就全部在那里了,通过apktool等工具可以轻松地将它们反编译成smali代码。有了这些反编译出来的smali代码之后,我们就可以...
  • APK反编译

    万次阅读 多人点赞 2017-12-27 17:31:39
    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装...
    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装。正常情况下,Android应用打包成apk之后,就无法再看到开发这个应用时使用的资源文件以及代码了。但是我们通过网上提供了一些工具,还是可以将apk进行反编译的,apk反编译之后,我们就可以看到开发这个应用使用的资源文件(图片)、layout、样式、相关的实现代码等,apk反编译也算是Android开发中一个比较实用的技巧吧,当我们对别人开发好的应用感兴趣时,我们就可以通过这种技术手段将别人打包好的apk进行反编译,继而可以看到我们感兴趣的内容,(注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)下面就来说说如何将一个apk反编译出来。

    一、准备必要工具

      工欲善其事,必先利其器,首先我们要下载好反编译apk时需要的相关工具

    1.1、使用工具

    1. apktool (资源文件获取) 
    2. dex2jar(源码文件获取)
    3. jd-gui  (源码查看)

    1.2、工具介绍

      apktool  

             作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

      dex2jar

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

      jd-gui

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

    1.3工具下载

      apktool下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads

      

      下载好之后得到一个如下图所示的jar文件

      

      dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/

      

      

      下载完成之后,得到一个如下图所示的压缩包

      

      jd-gui下载地址:http://jd.benow.ca/

      

      下载完成之后,得到一个如下图所示的压缩包:

      

      到此,需要使用到的3个相关工具都下载好了,在这里说明一下jd-gui的下载,我从官方网站上点击下载时会经常出现如下图所示的问题

      

      但是多试几次又可以下载了,所以如果有遇到这个问题的朋友们不妨多试几次,或者从别的地方下载jd-gui,jd-gui算是做Java开发的一个必备工具了,用它来将class反编译成java源代码是非常方便的,网上搜索一下一般都可以下载到,只不过版本不一定是最新的。

    二、Apk反编译流程

      为了方便进行反编译,我们将上述下载好的3个工具统一放到一个文件夹中,例如:

      

      然后将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹,如下图所示:

      

    2.1、使用apktool反编译apk得到图片、XML配置、语言资源等文件

      进入CMD命令行,如下:

      

      切换到上述的3个工具的所在目录,如:E:\AndroidDevelopTool\Android反编译工具包

      

      接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:

    java -jar jar包名.jar

      使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apk

    java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反编译工具包\测试apk\MMTS-release-1.0.2.apk -o MMTS

      这个命令是启动apktool_2.0.1.jar将位于【E:\AndroidDevelopTool\Android反编译工具包\测试apk\】目录下的"MMTS-release-1.0.2.apk"这个apk反编译,然后将反编译生成的文件存放到当前目录(apktool_2.0.1.jar所在的目录,也就是"E:\AndroidDevelopTool\Android反编译工具包"目录)下的一个【MMTS】文件夹中。这个文件夹的名字是可以随便取的,喜欢叫啥都行。

      执行反编译操作:

      

      反编译成功后,会在当前目录(E:\AndroidDevelopTool\Android反编译工具包)下生成一个MMTS文件夹,打开MMTS里面就有反编译后生成的文件,如下图所示:

      

      打开MMTS文件夹,就可以看到反编译后的生成的文件,如下图所示:

      

      生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了,如下图所示:

      

      

      

      

      想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。

    2.2、使用dex2jar反编译apk得到Java源代码

      将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),如下图所示:

      

      将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内,如下图所示:

      

      在命令行下定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex",效果如下:

      

      命令执行完成之后,在当前目录下就可以看到生成的Jar文件了,如下图所示:

      

      反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了

      

      使用jd-gui打开classes-dex2jar.jar就可以看到源代码了,如下图所示:

      

      JD-GUI虽然可以将class反编译成java源代码,但是对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):

      

      以上步骤是我亲自实践过之后一步步整理出来的,对照着做应该不会有太大问题。

    三、Apk反编译注意问题

    3.1、apktool版本太旧导致反编译失败的问题

      之前用过了apktool这个工具的一些旧版本,发现总是反编译不成功,在执行反编译时会出现如下错误:

      Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file

      

      这个问题是因为apktool版本过低导致,而解决这个问题的办法就是使用最新版本的apktool就可以了,最新版本的下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads

    3.2、apktool执行反编译命令出现”Input file was not found or was not readable"的问题

      这个问题是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>

      好了,关于反编译apk的内容就这么多了。
      最后,给大家分享我下载好的那三个相关工具,下载地址:http://pan.baidu.com/s/1jGKSQyU

    展开全文
  • Android apk中so库文件未压缩

    万次阅读 2020-03-05 17:59:12
    查看apk包,发现apk 包中so库文件未被压缩. 但是一个类似项目,相同版本却没有问题 升级前 升级后 升级后Raw File Size 正好是未压缩的大小 可能原因 不同版本AGP gradle build task 实现不一样, 再某情况下回不进行...

    背景:

    升级AS 3.6.1, 并且升级project build.gradle AGP 到3.6.1, 一个项目发现打包后文件骤然增大,
    查看apk包,发现apk 包中so库文件未被压缩.
    但是一个类似项目,相同版本却没有问题

    升级前

    升级前

    升级后

    升级后

    升级后Raw File Size 正好是未压缩的大小

    可能原因

    不同版本AGP gradle build task 实现不一样, 再某情况下回不进行so 库压缩处理

    解决方案

    AGP 降级到3.5.3 , AS 不用降级

    参考

    关于*.SO压缩问题

    展开全文
  • adb安装apk

    万次阅读 2020-04-14 13:27:11
    应用程序安装-将一个包推送到设备上...adb install-multiple test.apk test2.apk 应用程序安装-将一个或多个包推送到设备上,并以原子方式安装它们。 adb install-multi-package test.apk demo.apk 替换现有应用程...
    应用程序安装-将一个包推送到设备上并安装它。
    
    adb install test.apk
    APP安装-将多个APK推送到一个包的设备上并安装它们
    
    adb install-multiple test.apk test2.apk
    应用程序安装-将一个或多个包推送到设备上,并以原子方式安装它们。
    
    adb install-multi-package test.apk demo.apk
    替换现有应用程序
    
    重新安装现有的应用程序,保存其数据
    adb install -r test.apk
    允许测试包
    
    adb install -t test.apk
    允许版本代码降级
    
    仅可调试器包
    adb install -d test.apk
    授予所有运行时权限
    
    授予应用程序清单中列出的所有权限
    adb install -g test.apk
    使应用程序作为临时安装应用程序安装。
    
    adb install --instant test.apk
    使用快速部署
    
    adb install --fastdeploy test.apk
    始终按APK到设备和调用包管理器作为单独的步骤
    
    adb install --no-streaming test.apk
    

    参考:https://adbshell.com/commands/adb-install

    展开全文
  • Android APK反编译就这么简单 详解(附图)

    万次阅读 多人点赞 2014-03-11 22:06:09
    你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考...

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。

    (注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)


    测试环境:

            win 7 


    使用工具:

         CSDN上下载地址:

           apktool (资源文件获取  下载  

           dex2jar(源码文件获取) 下载

           jd-gui  (源码查看) 下载

     

           Android反编译整合工具包(最新) 下载

     

         官方最新版本下载地址:

           apktool(google code)

      dex2jar(google code)  

       jd-gui(google code)最新版请见官方


    工具介绍:

    apktool  

         作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

    dex2jar

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

    jd-gui

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


    反编译流程:

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

    下载上述工具中的apktool,解压得到3个文件:aapt.exeapktool.batapktool.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源代码

    下载上述工具中的dex2jarjd-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进行了混淆处理,那么你看到的类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名,所以你可以想找到你所想得知的界面代码可能会十分费劲,找到了代码可能看起来也会很费劲,可是一个大体的思路会获得,有了这个思路,你就可以自己去尝试了。

    本人曾经想写一个类似唱吧的名人界面布局,可是当初第一次接触不知道如何去写,进进行了反编译,即使他的那个代码是混淆过的,我也看出来他是通过LISTVIEW的TYPE设定不同的ITEM布局实现了。可能好多引用都是采用重写VIEW来实现效果,你可以得到他的大体思路对你的开发有益无害。


    还有处于一个开发者辛辛苦苦将自己的应用开发出来被别人一反编译便成为了他自己的东西,所以要进行混淆处理:

    以下是我转载的混淆的教程:http://blog.csdn.net/vipzjyno1/article/details/21042823


    展开全文
  • Android APK反编译 apktool使用教程

    万次阅读 多人点赞 2016-10-31 19:36:33
    然后百度“apk反编译”,出来最多的是apktool反编译。百度也真是越来越水了,反正百度出来的教程都是N年前的,现在早就不能用了。很多博主也都不跟新博客了,然后随着jdk发展apktool也跟新很多代了。所有有些博主的...
  • Android中使用apk-parser解析apk

    千次阅读 2019-09-29 14:32:03
    Apk Parser是一个优秀的解码二进制文件与获取apk各种信息的开源库,具备众多实用的特性: 获取apk各种元数据信息,比如应用名、图标、包名、版本号等 解析二进制XML文件并将其转换为文本格式 从dex文件获取类信息,...
  • APK重命名插件

    千次阅读 2018-09-06 21:55:07
    Android打包流程的结果是一个apk文件,而apk的命名默认使用的是(module-name)+(build-varints)+(build-type).apk,是不是经常能见到app-debug.apk,这是因为使用AS新建一个项目时,默认module名是app,然后直接使用...
  • 1、错误描述今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示:The APK file build\outputs\apk\OYP_2.3.4_I2Base_6476_official_debug.apk does not exist on disk. Error while Installing ...
  • Android APK打包流程

    千次阅读 2019-07-16 18:08:27
    今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。 通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式: 用Eclipse或者Android Studio集成开发环境直接生成APK; 使用Ant...
  • 完整版java读取apk、ipa包名、版本名、版本号等信息

    万次阅读 热门讨论 2016-05-06 11:14:28
    有时候,我们上传apk或者是ipa文件的时候,是需要读取到里面的一些信息的,比如软件的包名,以及其版本信息等。在网上搜索了一下资料 , 找了很多版本,对于apk文件的版本号,一直读取不到,在这里,笔者自己总结了...
  • Android APK脱壳

    万次阅读 2019-06-26 15:09:45
    概述 众所周知,Android应用开发完成后,除了使用Google官方的混淆外,还需要使用一些第三方的安全软件的加壳处理,比较出名的有腾讯乐固、360加固和爱加密等。...工程,经过加固后的apk,通过dex2jar反编译效...
  • 修改之前一定要先安装java开发环境,不会装的去自行百度。...这篇文章主要介绍如何获取apk包中的dex文件,并简单修改里面的源码,再重新打包生成apk文件。 下面提供对HelloWorld.apk的解包,修改源码,重新打包...
  • 1) 给 apk 添加了 android:persistent="true"保活 属性 2)在 adb install 安装的时候 会出现这个错误: Failure [INSTALL_FAILED_INVALID_APK: Package is a persistent app. Persistent apps are not updateable.]...
  • apk签名

    千次阅读 2018-05-28 18:49:14
    3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)2.使得能够使用命令行将上面3个工具所在路径添加到环境变量path中1)keytool:该工具位于...
  • 三个在同一目录结合使用,用来反编译apkapk重新打包; 2.dex2jar:该工具作用是将classes.dex文件,反编译出源码(如果apk未加固),反编译出文件,使用jd-gui工具进行查看; 3.Auto-Sign:自动签名工具,将重新...
  • 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;... Apk改之理(Apk
  • 命令行安装apk

    千次阅读 2019-06-06 10:46:45
    adbinstall-r"xxxx.apk" xxx.apkapk的路径
  • Android apk 分析工具:APK Analyzer

    万次阅读 2017-04-06 00:12:18
    前言Android studio 2.2 版本后自带有一个分析工具:APK Analyzer。这是一个专门分析 apk 的神器,主要作用如下: 1. (重要) 直观的看到 apk 中各个文件的大小 (比如 DEX,resource 等等)。我们可根据文件大小信息...
  • android 嵌套 apk 从一个apk启动另外一个apk
  • gradle命令打包apk

    万次阅读 2018-05-31 12:20:40
    1.之前一直用android studio 的generate Signed APK方式打包apk,最近同事都是用命令行来打包感觉逼格有点高,学习了下以记录,前提是要在module的build.gradle 文件下匹配值如下文件2.打开cmd命令行,使用gradle...
  • Android Studio逆向分析APK(Analyze APK

    千次阅读 2019-05-09 17:37:13
    通过Analyze APK这个功能,我们能够直观地看到APK的组成。你能够实现: 查看APK中文件的绝对大小和相对大小(相对大小指的是该文件占整个APK大小的百分比) 理解DEX文件的组成(能看到DEX文件中包含了哪些类) 快速...
  • Android APK 安装包

    千次阅读 2017-05-02 11:50:17
    APK总览 APK内容 APK编译过程 APK安装过程
  • flutter 打包apk

    千次阅读 2018-11-07 17:11:38
    完成项目时,我们需要将项目打包成一个apk,方便测试以及发布版本. 并且发布版本还需要签名,今天把这一系列操作记录下来. App签名 创建 keystore 如果您有现有keystore,请跳至下一步。如果没有,请通过在运行以下命令...
  • Android Studio 超级简单的打包生成apk

    万次阅读 多人点赞 2017-01-14 16:51:24
    Android Studio 超级简单的打包生成apk为什么要打包: apk文件就是一个包,打包就是要生成apk文件,有了apk别人才能安装使用。打包分debug版和release包,通常所说的打包指生成release版的apk,release版的apk会比...
  • apk反编译

    千次阅读 2019-04-17 16:57:49
    学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装...
  • Java解析APK信息,使用ApkFile

    千次阅读 2017-05-09 10:25:01
    由于这两天工作需要写一个自动发包的平台,需要写一个解析APK信息的工具类,这里用到了 Apk Parser(https://github.com/xiaxiaocao/apk-parser), 这是一个纯Java实现的Apk解析Lib,也是现存的功能最强的Apk Parser...
  • apk scheme 获取

    千次阅读 2019-05-07 11:51:17
    1.apk 下载链接地址 https://android.myapp.com/myapp/detail.htm?apkName=com.android.bankabc 2. apkscheme获取办法 桌面文件夹建立: Desktop/library/xml-apk-parser/APKParser.jar Desktop/apk/nongye....
  • IntelliJ IDEA 如何导出安卓(Android)apk文件 详细教程

    万次阅读 多人点赞 2020-10-13 19:47:32
    我们需要将自己的程序打包成Android安装包文件–APK(AndroidPackage),其后缀名为".apk"。将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装。Android系统要求具有其开发者签名的私人密钥的应用...
  • 原文:https://developer.android.com/studio/command-line/apkanalyzerAndroid sdk中提供了一个非常实用的tool - apkanalyzer, 该tool的路径是android_sdk/tools/bin/apkanalyzer注意:该tool无法直接在window上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,925
精华内容 51,970
关键字:

apk