android反编译

Android APK反编译就这么简单

混江龙づ霸主 提交于 2019-12-10 18:30:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用工具: CSDN上下载地址: apktool (资源文件获取) 下载 dex2jar(源码文件获取) 下载 jd-gui (源码查看) 下载 工具介绍: apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar 作用:将apk反编译成java源码(classes.dex转化成jar文件) jd-gui 作用:查看APK中classes.dex转化成出的jar文件,即源码文件 二、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文件,便可以看到源码了,效果如下: 被混淆过的效果图

[转]移动APP安全测试

让人想犯罪 __ 提交于 2019-12-06 11:41:35
1 移动App安全 风险分析 1.1 安全威胁分析   安全威胁从三个不同环节进行划分,主要分为客户端威胁、数据传输端威胁和服务端的威胁。     1.2 面临的主要风险       1.3 Android 测试 思维导图    1.4 反编译工具   有两种反编译方式,dex2jar和apktool,两个工具反编译的效果是不一样的,dex2jar反编译出 java 源代码,apktool反编译出来的是java汇编代码。   dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的   jd-gui主要是用来打开Jar包的    2 本地客户端安全 2.1 反编译保护 2.1.1 问题描述   APP源代码对于一个公司是非常重要的信息资源,对APP的保护也尤为重要,APP的反编译会造成源代码被恶意者读取,以及APP的逻辑设计,    反编译方法   我们一般想要反编译一个apk,无非就是想获得三样东西:图片资源、XML资源、代码资源   一. 图片资源获取   首先准备一个apk,这里是一个.apk后缀的文件,我们先把后缀改成,zip,打开zip文件在res目录下,我们就可以获取到我们需要的图片了。   二. XML资源获取   我们可以在刚刚打开的zip文件目录下看到很多.xml的文件,这个xml文件是无法直接打开的

java如何防止反编译

跟風遠走 提交于 2019-12-06 03:03:06
出处: java如何防止反编译     一些防止java代码被反编译的方法 综述(写在前面的废话)   Java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于有今天之风光!但随着java的应用领域越来越广,特别是一些功能要发布到终端用户手中(如Android开发的app),有时候,公司为了商业技术的保密考虑,不希望这里面的一些核心代码能够被人破解(破解之后,甚至可以被简单改改就发布出去,说严重点,就可能会扰乱公司的正常软件的市场行为),这时候就要求这些java代码不能够被反编译。   这里要先说一下反编译的现象。因为java一直秉持着开放共享的理念,所以大家也都知道,我们一般共享一个自己写的jar包时,同时会共享一个对应的source包。但这些依然与反编译没有什么关系,但java的共享理念,不只是建议我们这样做,而且它自己也在底层上“强迫”我们这么做!在java写的.java文件后,使用javac编译成class文件,在编译的过程,不像C/C++或C#那样编译时进行加密或混淆,它是直接对其进行符号化、标记化的编译处理,于是,也产生了一个逆向工程的问题:可以根据class文件反向解析成原来的java文件!这就是反编译的由来。   但很多时候,有些公司出于如上述的原因考虑时,真的不希望自己写的代码被别人反编译

android apk 防止反编译技术第四篇-对抗JD-GUI(转)

依然范特西╮ 提交于 2019-12-04 22:20:58
一、 对抗 JD-GUI 原理 通常在对 apk 进行反编译的时候用到的最多的两个工具就是 apk-tool 和 dex2jar 。利用这两个工具将 apk 首先反编译成 classes.dex 然后再将 classes.dex 反编译成 jar 文件或者将 apk 直接反编译成 jar 文件;得到 jar 文件以后就可以利用 JD-GUI 将得到的 jar 文件打开就可以直接查看 apk 的 java 源码了。我们花了那么大心思写的程序就这么容易被别人拿到源码是不是很不甘心,现在我就告诉你对抗 JD-GUI 查看源码的方法。我们在用 JD-GUI 查看源码时有时有些函数的根本看不到直接提示 error 错误,我们就利用这点来保护我们的 apk 。原来 JD-GUI 在将经过混淆处理的 jar 里面的 class 字节码文件转成 java 文件时,遇到函数中根本走不到的分支的特殊实现时就会提示函数 error 。这时我们只要查看这些提示 error 的文件或者函数对应的源码是有什么语句引起的,将这些语句加到我们的源码中就可以防止利用 JD-GUI 去查看我们的 apk 源码了。 二、 原理实现 (1) 假如我们的 apk onCreate 的函数实现如下: ? 1 2 3 4 5 @Override protected void onCreate(Bundle

android apk 防止反编译技术第五篇-完整性校验(转)

回眸只為那壹抹淺笑 提交于 2019-12-04 22:20:12
一、完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改。其中常用的方法就是计算一个文件的 CRC32 的值或者计算一个文件的哈希值。我们在防止 apk 被反编译的方法中也可以采用这种方法。我们知道 apk 生成的 classes.dex 主要由 java 文件生成的,它是整个 apk 的逻辑实现。所以我们可以对 classes.dex 文件进行完整性校验,来保证整个程序的逻辑不被修改。如果我们想要保证整个 apk 文件的完整性,也可以对整个 apk 文件进行完整性校验。下面我们分别来实现对 classes.dex 文件和 apk 文件的完整性校验。 二、用crc32对classes.dex文件的完整性进行校验 (1)可以打印出来我们的apk生的classes.dex文件的crc32的值,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public class MainActivity extendsActivity { @Override protected void onCreate

android apk 防止反编译技术第五篇-完整性校验

陌路散爱 提交于 2019-12-03 20:29:26
关于防止 android apk 被反编译的技术我们前面已经讲了四种。 加壳技术 运行时修改字节码 伪加密 对抗 JD-GUI 如果有不明白的可以查看我的博客的前四篇中关于这四种技术的介绍。接下来我们接着介绍另一种防止 apk 反编译的技术 - 完整性校验。 一、完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改。其中常用的方法就是计算一个文件的 CRC32 的值或者计算一个文件的哈希值。我们在防止 apk 被反编译的方法中也可以采用这种方法。我们知道 apk 生成的 classes.dex 主要由 java 文件生成的,它是整个 apk 的逻辑实现。所以我们可以对 classes.dex 文件进行完整性校验,来保证整个程序的逻辑不被修改。如果我们想要保证整个 apk 文件的完整性,也可以对整个 apk 文件进行完整性校验。下面我们分别来实现对 classes.dex 文件和 apk 文件的完整性校验。 二、用crc32对classes.dex文件的完整性进行校验 (1)可以打印出来我们的apk生的classes.dex文件的crc32的值,代码如下: public class MainActivity extendsActivity { @Override protected void onCreate

Android odex的反编译,回编译

徘徊边缘 提交于 2019-12-03 16:30:36
现在,许多Android手机的ROM包在生成过程中都启用优化,把jar文件抽空,生成odex和vdex文件,以在运行时省掉编译时间。如果想对这些jar进行修改,就要修改它们所对应的odex文件。本文以 /system/framework/oat/arm64/am.odex 为例,讲解它的反编译和回编译过程 本文用到的工具:baksmali.jar和smali.jar 下载地址: https://bitbucket.org/JesusFreke/smali/downloads 将odex反编译 在执行反编译前,先将odex和它的依赖复制到同一目录下。如果在反编译odex的时候,没有找到依赖,就会报类似于下面的错误: Exception in thread "main" org.jf.dexlib2.DexFileFactory$DexFileNotFoundException: Could not locate the embedded dex file /system/framework/am.jar. Is the vdex file missing? at org.jf.dexlib2.dexbacked.OatFile$OatDexEntry.getDexFile(OatFile.java:586) at org.jf.dexlib2.dexbacked.OatFile

android反编译工具

六月ゝ 毕业季﹏ 提交于 2019-12-03 04:08:03
网络抓包工具 反编译工具 apktool 2.0.2 查看修改xml、smali文件,还可以把修改后的文件打包apk 使用: apktool d test.apk #解包xml apktool b test #打包apk 下载: http://ibotpeaches.github.io/Apktool/ dex2jar-2.0 将classes.dex转换成jar 使用: d2j-dex2jar.bat ./../classes.dex #classes.dex转换成classes-dex2jar.jar java -jar apktool.jar d -d test.apk -o out #smali代码到out文件夹,-d参数反编译出来的代码后缀是java jd-gui-windows-1.4.0 查看jar文件, 看到java class文件 下载: http://jd.benow.ca/ 参考资料 使用smali语法写的HelloWorld AndroidStudio+ideasmali动态调试smali汇编 eclipse中调试smali Decoding values / XMLs... eption in thread "main" brut.androlib.err.UndefinedResObject: resource spec: android反编译

mac下 反编译apk

匿名 (未验证) 提交于 2019-12-03 00:30:01
使用apktool+dex2jar+jd-gui反编译apk 1.安装apktool 下载apktool 解压apktool.zip,把apktool和apktool.jar放到usr/local/bin文件下; 终端下输入命令: apktool --v Apktool v2.3.3 - a tool for reengineering Android apk files with smali v2.2.2 and baksmali v2.2.2 Updated by Connor Tumbleson <connor.tumbleson@gmail.com> 下载 (直接解压zip即可) 2.1:把*.apk重命名为*.zip,解压zip可以看到classe.dex文件; d2j-dex-recompute-checksum.bat d2j-jasmin2jar.sh 要使用的就是d2j-dex2jar.sh; sh d2j-dex2jar.sh */classes.dex 附注:如果使用sh d2j-dex2jar.sh */classes.dex命令,输出为: d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied 直接输入命令授权: sudo chmod +x d2j_invoke.sh classes

使用ApkTool反编译App

匿名 (未验证) 提交于 2019-12-03 00:19:01
该文章教大家如何去反编译一个App,所谓工欲善其事必先利其器,首先我们要下载相应的反编译工具: apkTool下载地址 http://code.google.com/p/android-apktool/downloads/list dex2jar下载地址 http://www.jb51.net/softs/353141.html jd-gui下载地址 http://jd.benow.ca/ apkTool下载后官方建议我们放在C:\windows目录下,如果不放在C:\windows目录下我们需要配置环境变量。在这里我放在了E盘下的apkTools文件夹下所以需要配置环境变量,不然在cmd中会出现apkTook不是内部命令…提示语。配置环境变量很简单,在这里不做概述。 配置好之后,打开cmd控制台。如果当前是在C盘,则需要输入 apktool d E: \apkTools \test .apk -o E: \apkTools \test E: \apkTools \test .apk 表示的是apk文件路径 E: \apkTools \test 表示的是文件存放的路径 如果进入了E盘apkTools文件夹下,则只需要输入 apktool d test .apk 执行完成之后会如上图所示,出现test文件夹。文件夹的内容如下,主要是一些资源以及smali文件。