又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊。好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法。前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)、运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中关于这三种技术的介绍。接下来我们将介绍另一种防止apk反编译的技术-对抗JD-GUI。
一、对抗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 savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
|
(2)将我们的apk经过混淆处理后经过签名导出我们的apk,我们用dex2jar工具将我们的apk转换成jar文件
(3)用JD-GUI打开我们的jar文件就可以看到我们的apk onCreate函数的源码了。如下:
(4)这时我们在apk onCreate函数里面加上不可能的特殊分支语句,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
switch ( 0 )
{
case 1 :
JSONObject jsoObj;
String date= null ;
String second= null ;
try
{
jsoObj= new JSONObject();
date=jsoObj.getString( "date" );
second=jsoObj.getString( "second" );
}
catch (JSONException e)
{
e.printStackTrace();
}
test.settime(date,second);
break ;
}
}
|
1
2
3
4
|
class test
{ public static void settime(String a,String b){}
} |
(5)我们用(2)中同样的方法将apk转成jar文件,然后用JD-GUI打开会看到提示error错误。如下:
根据上面的讲述相信大家对对抗JD-GUI的方法有了一定的了解,我只是举了其中的一个方法,之所以说是特殊的分支语句是因为不是所有的分支语句都可以让JD-GUI提示error。我们可以根据原理多注意一些这样的特殊分支语句以便用来保护我们的apk,下一篇我们将讲解另一种android apk防止反编译技术,期待大家的捧场。如果对这篇讲的技术有任何疑问:
欢迎关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或搜索微信号coder_online即可关注,我们可以在线交流。
相关推荐
反编译用的,大家都知道 jd-gui-windows-1.6.3 / dex2jar-2.0
android 反编译,jd-gui,dex,apktool android 反编译,jd-gui,dex,apktool android 反编译,jd-gui,dex,apktool android 反编译,jd-gui,dex,apktool android 反编译,jd-gui,dex,apktool android 反编译,jd-gui,...
Android apk 的反编译工具(apktool-v2.0.0RC2,dex2jar-0.0.9.8,jd-gui-0.3.3.windows)。apktool-v2.0.0RC2 用来反编译 layout 文件和 manifest 文件。dex2jar-0.0.9.8 用来反编译 classes.dex 文件。jd-gui-0.3.3....
ApkDec是一款免费的绿色APK反编译工具 for android . ApkDec目前版本:ApkDec-Release-0.1 使用帮助 1.选择 all 全部编译内容包括jar、xml、及其他资源文件 2.选择 jar 只反编译并打成jar包 3.反编译后你可以...
2、cmd命令行下进入到dex2jar-0.0.7.9-SNAPSHOT目录下,输入命令dex2jar.bat classes.dex ,等待反编译完成,会在dex2jar-0.0.7.9-SNAPSHOT目录下生成classes.dex.dex2jar.jar; 3、打开jd-gui.exe,openfile打开...
Android APK一键反编译工具 支持Mac 和 Windows系统 内含jd-gui
apk反编译工具 包含apktool(可以反编译资源文件,修改源码) dex2jar-2.0 jd-gui(这两个可以查看源码), 及其下载网址
JD-GUI 是一个由 Pavel Kouznetsov 用 C++ 开发的 Java 反编译工具; luyten是Procyon-Decompiler的GUI,是一款操作简单、功能实用...jadx是一款Android反编译gui工具,它支持apk、dex、jar、class、zip、aar等文件。
apk反编译工具,APKtools,dex-tools ,jd-gui-windows,三个工具,亲测可用!!!!!
android反编译APK----附-具体说明;工具压缩包:XJad2.2.zip,jd-gui-0.3.3.windows.zip,dex2jar-0.0.9.15.zip,AXMLPrinter2.jar
反编译工具合集,apktool_2.0.2、Smali2Java、dex2jar、jd-gui-0.3.5.windows-apk,内包括基本使用方法与资源博客,高版本apktool可解决反编译过程中出现的常见错误。
Java/APK反编译工具(包含apktool jd-gui dex2jar等共4个工具)
安卓反编译工具集合-apktool+dex2jar-2.0+jd-windows-gui-1.4.0
Apk反编译工具包括了apktool、dex2jar和jd-gui三个工具,apktool用于apk反编译获取资源文件等,dex2jar用于分析classes.dex文件,jd-gui可以用于打开dex2jar分析生成的classes-dex2jar.jar文件从而查看源代码。
工具包中包含反编译所需工具:apktool_2.3.1.jar,dex2jar-2.0.zip,jd-gui-windows-1.4.0.zip。以及使用方式。
可视化的查看jar文件的目录结构和代码,代码是通过工具格式化成的,非常方便于查看和定位问题~
很好用的反编译工具。 供学习用 特此上传 以备忘
java反编译工具jd-gui 批量反编译工具是将java语言打包的执行文件回滚为java代码,同时支持单文件反编译和批量操作 支持多种格式,可直接反编译类文件,或j2ee的ear分发包,甚至支持直接反编译android应用 批量反...
反编译apk必备工具jd-gui和dex2jar jd-gui是绿色免安装的工具用以打开jar文件看源代码 dex2jar就是把class.dex转换为classes.dex.dex2jar.jar
apk反编译工具三合一 内含apktool_2.3.4.jar、dex2jar-2.0、jd-gui-windows-1.4.0