反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载;
-- CSDN 下载地址 :http://download.csdn.net/detail/han1202012/8221787
octopus@octopus:~/decompiler$ tree -L 2
.
├── linux
│ ├── apktool
│ ├── dex2jar-0.0.9.15
│ └── jd-gui
├── mac
│ ├── apktool
│ ├── dex2jar-0.0.9.15
│ └── jd-gui-0.3.5.osx.i686.dmg
├── windows
│ ├── apkTool
│ ├── dex2jar-0.0.9.15
│ └── jd-gui.exe
└── 源码
└── apktool-source.zip
10 directories, 4 files
一. 反编译 至 Java 源码
1. 工具介绍
dex2jar 简介 : 将 .dex 或者 .class 后缀文件转换成 .jar 文件;
-- 最新版本 : 目前最新版本 0.0.9.15;
-- 官方地址 (需要) :http://code.google.com/p/dex2jar/ ;
-- 下载地址 (需要) :http://code.google.com/p/dex2jar/downloads/list;
jd-gui 简介 : 使用该工具可以查看 .jar 中的 java 代码;
-- 官网地址:http://jd.benow.ca/ ;
2. 反编译过程
(1) Ubuntu 系统反编译
a. 获取 .dex 后缀文件 : 修改 apk 文件后缀, 获取 class.dex 文件;
b. 执行反编译 : 将 classes.dex 拷贝到 dex2jar 目录下, 执行./d2j-dex2jar.sh classes.dex 命令;
-- 执行结果 :
octopus@octopus:~/decompiler/linux/dex2jar-0.0.9.15$ ./d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
c. jd-gui 中查看源码 : 将 classes-dex2jar.jar 文件拖入 jd-gui 中, 查看源码;
3. 混淆代码
注意 : 如果不使用签名文件进行打包的话, 直接从 eclipse 中拷贝的文件是无法混淆的;
(1) 配置混淆文件
编辑 progard.cfg :
-- 文件内容 :
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#组件相关的类不进行混淆, 保留
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
# 所有类中的 native 方法不混淆
-keepclasseswithmembernames class * {
native <methods>;
}
# 对全部类的指定方法的方法名不进行混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
#对全部类的指定方法的方法名不进行混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# 保留 Activity 子类
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
# 对枚举类型enum的全部类的下面指定方法的方法名不进行混淆
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# 实现了 Parcelable 序列化接口的类不混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
--project.properties 配置混淆文件 :
target=android-19
proguard.config=proguard.cfg
(2) 打包 apk 文件 (创建新的 keystore)
a. 设置打包项目 : 右键点击工程 选择 Android Tools --> Export Signed Application Package 选项, 弹出以下对话框, 选择要打包的程序, 设置好后点击 Next;
b. 创建 keystore : 选择 Create new keystore, 选择一个文件, 然后设置 keystore 的用户名 和 密码;
-- Location : keystore 文件;
-- Password : 密码;
-- Confirm : 确认密码, 重新输入密码;
c. 输入 keystore 详细信息 :
-- Alias : 别名;
-- Password : 别名密码;
-- Confirm : 确认密码;
-- Validity(years) : 有效期限, 推荐 25 年;
-- First and Last Name : 开发者姓名;
下面的参数可以不填写
-- Orgnizational Unit : 组织名称;
-- Orgnization : 组织;
-- City or Location : 城市;
-- State or Provience : 省 或者 州;
-- Country Code : 国家;
d. 选择 apk 文件并打包 : 点击 finish 按钮后打包完毕;
(3) 打包 apk 文件 (使用现有的 keystore 文件)
a. 选择打包的工程 : 右键点击工程, 选择 Android Tools --> Export Signed Application Package 选项;
b. 选择签名文件 : 输入签名文件密码;
c. 输入别名密码 :
d. 打包 apk : 选择要打包的 apk 文件 :
(4) 验证混淆效果
反编译 : 将 apk 文件后缀改为 .zip, 之后取出 classes.dex 文件 到 dex2jar 根目录中, 执行./d2j-dex2jar.sh classes.dex 命令;
octopus@octopus:~/decompiler/linux/dex2jar-0.0.9.15$ ./d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
在 jd-gui 中查看 Java 代码 :
二. Apktools 反编译
1. Apktools 介绍
Apktools 简介 :
-- 最新版本 : 2.0.0 ;
-- 官方网站 (需要) :https://code.google.com/p/android-apktool/ ;
-- 新版本下载地址 :https://bitbucket.org/iBotPeaches/apktool/downloads ;
-- 老版本下载地址 (需要) :https://code.google.com/p/android-apktool/downloads/list ;
需要下载的文件 :
-- apktool jar 包 :apktool1.5.2.tar.bz2
-- apktool 引导工具 (Linux) :apktool-install-linux-r05-ibot.tar.bz2
--apktool 引导工具 (mac):apktool-install-macosx-r05-ibot.tar.bz2
--apktool 引导工具 (wondows):apktool-install-windows-r05-ibot.tar.bz2
2. 反编译
将下载的文件放到一个文件中 :
反编译 : 将 apk 文件放入上面的目录, 执行命令./apktool d WheelView.apk ;
-- 反编译过程 :
octopus@octopus:~/decompiler/linux/apktool$ ./apktool d WheelView.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /home/octopus/apktool/framework/1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...
octopus@octopus:~/decompiler/linux/apktool$ ls
aapt apktool apktool.jar WheelView WheelView.apk
--
反编译结果 : 反编译结果都在 WheelView 目录中, res 中是相关资源文件, smali 中是 smali 汇编文件;
3. 重新编译
重新编译命令格式 : ./apktool b apk源目录 apk文件名称;
-- 执行命令 :./apktool b WheelView WheelView1.apk , 可以生成 WheelView1.apk 文件;
octopus@octopus:~/decompiler/linux/apktool$ ls
aapt apktool apktool.jar WheelView WheelView.apk
octopus@octopus:~/decompiler/linux/apktool$ ./apktool b WheelView WheelView1.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
octopus@octopus:~/decompiler/linux/apktool$ ls
aapt apktool apktool.jar WheelView WheelView1.apk WheelView.apk
分享到:
相关推荐
在学习Android开发的过程中,往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行...
作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个...
APK反编译工具(代码混淆过或者用第三方加固工具的Apk,反编译无法看到源代码)里面用教程,最后将smali 转java。
安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,对代码和资源...9.支持防止反编译功能,可以有效防止一些主流的APK反编译工具对APK文件进行反编译
非常好用的android反编译工具,apk反编译工具。解压到任何目录,可以直接使用。
Android如何防止apk程序被反编译 亲自测试 完美混淆
android端 apk反编译神器 超级好用 exe文件打开选中需要反编译的apk即可自动反编译 而且还有反混淆功能 找了好久都没有找到最新的 终于下载了一个最新版本 跟大家交个朋友 解压直接可用!!! jadx用过都说好 资源...
安卓APK资源混淆加密重签名工具,可以对安卓APK文件的代码和资源文件进行混淆加密处理,可以对安卓APK文件进行加固,...9.支持防止反编译功能,可以有效防止一些主流的APK反编译工具对APK文件进行反编译 解压密码1234
android端 apk反编译神器 超级好用 exe文件打开选中需要反编译的apk即可自动反编译 而且还有反混淆功能 找了好久都没有找到最新的 终于下载了一个最新版本 跟大家交个朋友 解压直接可用!!! jadx用过都说好 资源...
准备一个测试apk(eclipse或androidstudio打包,混淆文件为eclipse或androidstudio默认带的),如Test_android.apk,复制一个副本重命名为Test_android.zip,然后解压,你就可以看到一些东西了,不过这种方式看到的大...
包括android工程源码混淆方法、apk签名方法和apk反编译方法
android端 apk反编译神器 超级好用 exe文件打开选中需要反编译的apk即可自动反编译 而且还有反混淆功能 找了好久都没有找到最新的 下载了一个最新版本 跟大家交个朋友 解压直接可用 jadx用过都说好 小白一键反编译 ...
android端 apk反编译神器 超级好用 exe文件打开选中需要反编译的apk即可自动反编译 而且还有反混淆功能 找了好久都没有找到最新的 下载了一个最新版本 跟大家交个朋友 解压直接可用 jadx用过都说好 小白一键反编译 ...
android端 apk反编译神器 超级好用 exe文件打开选中需要反编译的apk即可自动反编译 而且还有反混淆功能 找了好久都没有找到最新的 下载了一个最新版本 跟大家交个朋友 解压直接可用 jadx用过都说好 小白一键反编译 ...
android项目在发布的时候为了安全,首先要混淆文件,软后使用反编译工具查看是否混淆成功。这个是我在发布前使用的反编译工具,非常好用。
android apk反编译工具 可以用来反编译别人未经代码混淆的apk。可以用来做技术研究使用。请勿用于其它用途。
APK反编译说明: 1.用到的工具有三个: (1)apktool.主要负责反编译,得到apk的资源文件,像图片、xml、语言,颜色等等。也可以重新打apk包。 (2)dex2jar.主要将classes.dex,编译为jar包。 (3)jd-gui.主要是将...
我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就...由于这些APK反编译工具的存在,我们迫切地希望能有方法去防止别人来反编译我们的APK,从而保护自己的商业机密和利益。