精华内容
下载资源
问答
  • 2021 Android APK反编译 apktool使用教程

    万次阅读 多人点赞 2016-10-31 19:36:33
    最近我在使用Android Studio混淆打包release版本,打包是否成功?自然想到了反编译。然后百度“apk反编译”,出来最多的是apktool反编译。百度也真是越来越水了,反正百度出来的教程都是N年前的,现在早就不能用了。...

    欢迎交流。微信公众号:一休日记。

    目录

    前言:

    工具介绍:

    新版本apktool用法:

    Smali2JavaUI


    前言:

    最近我在使用Android Studio混淆打包release版本,打包是否成功?自然想到了反编译。然后百度“apk反编译”,出来最多的是apktool反编译。百度也真是越来越水了,反正百度出来的教程都是N年前的,现在早就不能用了。很多博主也都不跟新博客了,然后随着jdk发展apktool也跟新很多代了。所有有些博主的内容,已经没法儿用了。

    比如:

    http://blog.csdn.net/vipzjyno1/article/details/21039349/#reply

    这个博主,有些地方说得还不错。但是apktool下载版本和用法早就过时了,现在已经没法儿用了。

    工具介绍:

    apktool  

         作用:主要查看res文件下xml文件、AndroidManifest.xml和图片。(注意:如果直接解压.apk文件,xml文件打开全部是乱码)

    dex2jar

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

    jd-gui

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

    新版本apktool用法:

    1、下载:

     
     
    当然了上面这个链接和图片描述的可能也会变。
    目前就是下载两个文件apktool.bat和apktool.jar(这个如果你下载的文件有版本号,比如apktool_2.2.1.jar,就要改名字为apktool.jar),
    然后把上面两个文件都放到C://Windows下面。(我是windows系统,其他系统按照自己的来)
     
    2、使用方法
     
     
    官网教程
     
    $ apktool d test.apk
    I: Using Apktool 2.2.1 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.1 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
            
    其实就是,运行CMD,进入比如app-release.apk所在目录,然后运行apktool d app-release.apk就可以了,默认解压的文件就在app-release.apk所在目录。
     

     

    最后,如果我上面的方法不能用了,请看英文的原网页怎么说。

    原网页在这 https://ibotpeaches.github.io/Apktool/#

    其他比如:

    http://blog.csdn.net/vipzjyno1/article/details/21039349/#reply

    dex2jar

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

    jd-gui

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

    Smali2JavaUI

    对于博主说得,先dex2jar把classes.dex转为jar,再jd-gui把jar转为源码*.java文件。
    现在可以用Smali2JavaUI这个软件,一部到位。可以把这两个步骤化为一个步骤。
     
    所以,如果只想反编译看*.java文件的话,只用Smali2JavaUI软件就可以了。
    这个软件可以直接打开***.apk文件,然后就直接看到*.java文件了。
    Smali2JavaUI最新版本下载链接http://www.hensence.com/cn/smali2java/#Download
     
     
    展开全文
  • Android APK反编译详解(附图)

    万次阅读 多人点赞 2011-08-28 22:42:11
    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的...

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。

    在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。


    本文Android反编译教程,测试环境:

    Win7 Ultimate x64

    Ubuntu 12.04 x86_x64

    反编译工具包 下载 (2012-10-10更新)


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

    下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。

    apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件

    源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码


    dex2jar 和 jdgui 最新版本下载,分别见google code:

    dex2jar(google code)

    jdgui(google code),最新版本请见 官方


    具体步骤:

    首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。

    在命令行下定位到dex2jar.bat所在目录,运行

    dex2jar.bat    classes.dex

    生成

    classes_dex2jar.jar


    然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:



    HelloAndroid源码在反编译前后的对照如下:

     



    二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件

    如果是汉化软件,这将特别有用

    首先还是要下载上述反编译工具包,其中最新的apktool,请到google code下载

    apktool(google code)


    具体步骤:

    下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exeapktool.batapktool.jar 

    注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar


    在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat  d  -f   abc123.apk   abc123,如下图:

     

    上图中,apktool.bat 命令行解释:apktool.bat   d  -f    [apk文件 ]   [输出文件夹]


    反编译的文件如下(AndroidManifest.xml为例):



    将反编译完的文件重新打包成apk,很简单,输入apktool.bat   b    abc123(你编译出来文件夹)即可,命令如下:

     

    打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:

    build

    dist

    其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok



    三、 图形化反编译apk

    上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby

    首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk





    本文反编译工具包整理历史版本:

    Android反编译工具包(升级)  (2012-10-10)

    Android反编译工具 (2012-08-21)

    android反编译工具 (2011-08-28)



    本博客反编译方法,仅供参考学习使用,禁止用于非法和商业等用途,谢谢!


    展开全文
  • Android APK对齐总结

    千次阅读 2017-04-24 22:23:10
    Android APK对齐总结

    本人最近了解了一些关于Android APK对齐的知识,在此写篇博客总结一下:

    什么是字节对齐?

    所谓的字节对齐,就是各种类型的数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这个就是对齐。我们经常听说的对齐在N上(N字节对齐),它的含义就是:数据的存放起始地址%min(N,数据字节大小)== 0。

    需要字节对齐的根本原因在于CPU访问数据的效率问题,数据字节对齐后可以减少CPU访问内存的次数,但相应的,字节对齐也增加了内存空间的消耗(存在某些空内存没被使用)。


    什么是Zipalign?

    首先给出官方链接:https://developer.android.google.cn/studio/command-line/zipalign.html

    zipalign是Android SDK中的一个用于优化APK的新工具,它提高了优化后的Applications与Android系统的交互效率,从而可以使整个系统的运行速度有了较大的提升。

    根据官方文档的描述,Android系统中应用的数据都保存在它的APK文件中,这些文件经常会被多个进程访问:

    • 安装程序通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
    • Home程序读取当前APK的名称和图标等信息
    • System server读取一些与应用运行相关信息
    • APK所包含的内容不仅限于当前应用所使用,而且可以被其它的应用通过内容提供器调用
    zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,通过将apk中的未压缩数据进行字节对齐(一般为4字节对齐),允许系统使用mmap方法直接映射文件至内存空间,降低内存的消耗。

    如何使用Zipalign?

    一般来说,Android Studio会自动帮你进行zipalign相关的优化。
    手动进行优化时,zipalign所在的位置为:sdk目录/build-tools/对应版本号,不同的Android版本对应着不同的zipalign工具。

    对齐一个apk文件的方法如下:
    对齐infile.apk并输出为outfile.apk
    zipalign [-f] [-v] <alignment> infile.apk outfile.apk

    验证一个apk文件是否对齐的方法如下:
    zipalign -c -v <alignment> existing.apk

    <alignment>指的是字节对齐参数,一般来说这个参数的值均为4,否则它起不到任何作用。
    其他参数:
    • -f:输出覆盖已存在的outfile.zip文件
    • -v:输出详细的日志
    • -p:outfile.zip should use the same page alignment for all shared object files within infile.zip(这句并非相当理解……)
    • -c:确认apk是否对齐

    展开全文
  • Android APK优化压缩

    千次阅读 2019-09-10 22:12:35
    ###Android APK优化压缩 欢迎扫码加入QQ群 1.使用SVG图片 新建 vector Asset 在app的build.gradle配置 compile ‘com.android.support:appcompat-v7:23.2.0’ 兼容5.0以下 在gradle defaultConfig下...

    ###Android APK优化压缩

    欢迎扫码加入QQ群

    QQ群

    1.使用SVG图片

    • 新建 vector Asset

      使用svg图片

    • 在app的build.gradle配置

      compile ‘com.android.support:appcompat-v7:23.2.0’

    • 兼容5.0以下

      在gradle defaultConfig下配置

        defaultConfig {
        	//将SVG指定生成维度5.0以下
        	vectorDrawables.generatedDensities('xhdpi','xxhdpi')
        	//5.0以上
        	vectorDrawables.useSupportLibrary = true 
        } 
      

    2.在xml中使用AppCompatImageView代替ImageView

    • 在AppCompatImageView中使用app:srcCompat代替android:src

      使用AppCompatImageView

    3.xml中使用tint着色器

    4.保留指定语言资源

    在gradle defaultConfig下配置

    defaultConfig {
    	resConfigs('zk-rCN')        
    }
    

    5.动态库打包 ndk

    在gradle defaultConfig下配置

    defaultConfig {
    	ndk {
    		//配置so库架构 armeabi真机 x86模拟器
    		abiFilters "armeabi", "armeabi-v7a", "x86_64"
    	}        
    }
    

    6.移除无用资源

    物理删除:
    点击AS上的Analyze菜单按钮,选择Run Inspection by Name 
    会出现一个弹窗,输入unused resources
    
    避免物理删除:
    gradle中设置
    
    buildTypes {
    	release {
    		//混淆
    		minifyEnabled true
    		//移除无用的resource文件
    		shrinkResources true
    		//Zipalign优化
    		zipAlignEnabled true
    		proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    		signingConfig signingConfigs.config
    	}
    }
    
    自定义保留资源
    xml中使用keep, tools:keep="@drawable/ic_launcher_foreground" 
    

    7.webp格式转换

    8.资源混淆和7zip压缩对齐

    https://github.com/shwenzhang/AndResGuard

    在app的build.gradle配置

    apply plugin: 'AndResGuard'
    andResGuard {
        mappingFile = file("./resource_mapping.txt")
        use7zip = true
        useSign = true
        keepRoot = false
        mergeDuplicatedRes = true
        // add <yourpackagename>.R.drawable.icon into whitelist.
        // because the launcher will get the icon with his name
        whiteList = [//https://docs.fabric.io/android/crashlytics/build-tools.html
                     "R.string.com.crashlytics.*",
                     "R.id.*",]
        compressFilePattern = ["*.png",
                               "*.jpg",
                               "*.jpeg",
                               "*.gif",
                               "resources.arsc"]
        sevenzip {
            artifact = "com.tencent.mm:SevenZip:${ANDRESGUARD_SEVENZIP_VERSION}"
        }
    }
    

    在项目的build.gradle配置

    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.17'
    }
    

    微信公众号 -->> 他晓 (欢迎加入)

    公众号

    展开全文
  • [android] 查看 Android apk 信息

    千次阅读 2019-04-20 11:06:24
    查看 Android apk 信息`aapt`查看 `apk` 相关的信息 在国内,由于发行的渠道很多,所以我们经发很多渠道不同版本的包 ,虽然现在有 gradle,我们能很方便的出包,并且使用不同的配置,本着严肃的态度,在给渠道之前...
  • Android APK反编译就这么简单 详解(附图)

    万次阅读 多人点赞 2014-03-11 22:06:09
    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK...
  • Android APK脱壳

    万次阅读 2019-06-26 15:09:45
    众所周知,Android应用开发完成后,除了使用Google官方的混淆外,还需要使用一些第三方的安全软件的加壳处理,比较出名的有腾讯乐固、360加固和爱加密等。我之前所在的公司,就是使用爱加密进行加壳处理的。 虽然...
  • Android apk中so库文件未压缩

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

    千次阅读 2016-12-01 23:57:08
    android apk编译时间获取本方法只适用于使用android 源码编译环境。有时候我们需要在android应用上获取apk的编译时间,但java编译并不像C、C++那样有相应的宏可以在代码中读取到编译时间。我们可以利用android源码...
  • Android apk签名获取方法

    千次阅读 2019-06-14 15:44:32
    Android apk签名获取的一种方法,供大家参考 Windows(黑窗口)或Mac(终端)获取apk的签名: 1,先获取.jks文件路径(复制好备用) 2,在黑窗口或终端中输入 keytool -list -v -keystore 文件位置(例如:...
  • Android APK打包流程

    千次阅读 2019-07-16 18:08:27
    今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。 通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式: 用Eclipse或者Android Studio集成开发环境直接生成APK; 使用Ant...
  • Android apk程序设置开机自动启动

    千次阅读 2018-01-01 20:33:09
    Android apk程序开机自动启动
  • Android APK签名

    万次阅读 2012-03-09 10:56:05
    一、Android Apk签名 Apk签名首先要有一个keystore的签名用的文件。 keystore是由jdk自带的工具keytool生成的。 具体生成方式参考: 开始->运行->cmd->cd到你安装的jdk的目录里,我的是C:\Program Files\Java\...
  • Shell命令打包Android apk

    千次阅读 2018-04-18 18:09:52
    前言空闲时间,了解了一下Shell,Shell是用C语言程序编写的程序,它是用户使用Linux的桥梁,Shell是一种...用Shell命令打包AndroidApk,此项目是开发环境需在AndroidStudio下完成,原理命令行调用工程根目录下的g...
  • QT Creator 构建android apk失败问题

    千次阅读 2019-05-28 16:10:56
    QT Creator 构建android apk失败问题 错误如下 BUILD FAILED D:\Android\android-sdk-windows\tools\ant\build.xml:716: The following error occurred while executing this line: D:\Android\android-sdk-windows\...
  • Android APK打包流程详解

    千次阅读 2016-09-26 11:23:00
    理解apk的打包流程有助于我们加深Android 应用从开发到部署的整个生命周期过程的掌握,也会对Android开发有自己更清晰透彻的认识,本篇着重于介绍这一流程。Android APK内容介绍以apk为后缀的文件是Andro
  • Android Apk签名算法使用SHA256

    千次阅读 2019-11-29 08:00:52
    Android apk签名算法使用SHA256 本文不介绍复杂的签名过程,说一下Android签名算法使用SHA256。 但是SHA1不是相对安全签名算法,SHA256更加安全一些。 一般大公司才会有这种细致的安全要求。 如何查看apk签名是否是...
  • Android APK DEX分包总结

    万次阅读 2016-08-31 17:41:34
    最近几天一直在学习Android APK Dex分包的相关知识,因为Android热修复需要Dex分包,而Android热修复是现在比较火的技术,所以现在将我这几天学到的相关东西做一个总结,这篇主要从AndroidStudio和Eclipse两个方面...
  • Android APK程序的smali动态调试

    千次阅读 2017-05-07 01:32:59
    一、Apktool的下载和安装 ...Apktool是Android逆向分析的基础工具,在进行Android APK的smali动态调试的时候会使用到它。有关Apktool工具的下载、安装、使用以及源码的编译可以参考Apktool工具的官网:https://ib
  • Android apk包生成二维码给他人体验

    千次阅读 2017-08-29 16:38:46
    Android apk包生成二维码给他人体验
  • 如何加密Android apk

    千次阅读 2015-04-13 18:45:51
    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)和运行时修改字节码...
  • Visual Studio 2017为Android APK包签名

    千次阅读 2017-09-14 14:33:08
    Visual Studio 2017为Android APK包签名
  • android apk无法覆盖安装解决

    万次阅读 2017-05-22 11:05:31
    android apk包无法覆盖安装的原因有很多,比如包名问题、签名不一致问题、版本号问题等。在你不确定是什么原因的时候,你可能会一 一去尝试。 那么现在我就告诉你一种终极解决方案。
  • 查看Android apk签名文件的信息

    千次阅读 2019-07-28 15:40:53
    #查看Android apk签名文件的信息: 查看签名文件比较简单,在cmd窗口下输入: keytool -list -v -keystore [jks/keystore] [jks/keystore]:表示jks文件或者keystore签名文件 运行命令后,输入密码即可 比如...
  • Android APK是否需要预解压

    千次阅读 2014-06-27 14:19:00
    Android APK是否需要预解压 今天在逛论坛的时候,发现有一个朋友问的问题。其主要目的,是想实现 玩家首次进入游戏的时候,或者新安装了版本的时候,对APK进行解压,写入SD卡。这样游戏运行过程中,...
  • android APK更新原理以及代码实现

    千次阅读 2017-09-12 17:04:52
    关于androidAPK版本升级,其实是很多APK必须的,现在就分享一下我对于APK更新原理的理解和代码实现。apk更新原理首先需要明白两点: 1:服务器需要提供URL1(服务器存储的apk版本信息) 2:服务器需要提供URL2...
  • 一、前 言Android Apk加固的发展已经有一段时间了,相对来说本篇博客要记录的Android加壳的实现思路是4年的东西了,已经被老鸟玩烂了,Android加固的安全厂商也不会采用这么粗犷的方式来进行Android Apk的加固处理。...
  • Android APK安装完成自动删除安装包

    万次阅读 2018-01-10 16:10:24
    Android APK安装完成自动删除安装包 需要实现此功能,一般实际开发是在自动版本更新上,当更新完开始自动安装完毕后,删除内存卡里的安装包。实现方式很简单,监听应用广播,获取内存卡下的文件,删除! 1、监听...
  • intellij idea 签名android APK

    万次阅读 2014-03-06 13:15:46
    1:ANDROID APK签名文件存放位置:C:\Users\Administrator\.android 的debug.keystore是开发测试用的Apk签名文件; ruo
  • dofile执行ANDROID APK里面的文件

    千次阅读 2014-06-27 14:18:00
    dofile执行ANDROID APK里面的文件 我使用dofile执行APK文件是不行的,比如 dofile("assets/res/flist")只能先拷贝到writablePath然后再dofile拿到数据后再清除这个临时文件虽然满足需求了,但还是略...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,332
精华内容 42,932
关键字:

androidapk