又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊。好了我们利用周末的时间继续介绍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即可关注,我们可以在线交流。
相关推荐
可视化的查看jar文件的目录结构和代码,代码是通过工具格式化成的,非常方便于查看和定位问题~
apk反编译工具 包含apktool(可以反编译资源文件,修改源码) dex2jar-2.0 jd-gui(这两个可以查看源码), 及其下载网址
MAC版apk-tool和jd-gui 前者反编译apk 后者用来查看.class文件
apk反编译工具,APKtools,dex-tools ,jd-gui-windows,三个工具,亲测可用!!!!!
apk反编译工具: apktool 查看apk资源文件 dex2jar 把dex转换成jar luyten 查看jar源码,支持jdk新版 jd-gui 查看jar源码,需要jdk 1.7.0
dex2-jar-2.0 jd-gui apktool三件套。一次下载,终身无忧。
反编译用的,大家都知道 jd-gui-windows-1.6.3 / dex2jar-2.0
Android8.0以下手机自带的android-system-webview版本过低使用
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反编译工具、apktool、dex2jar-2.0、jd-gui供大家学习使用
android反编译APK----附-具体说明;工具压缩包:XJad2.2.zip,jd-gui-0.3.3.windows.zip,dex2jar-0.0.9.15.zip,AXMLPrinter2.jar
反编译apk必备工具jd-gui和dex2jar jd-gui是绿色免安装的工具用以打开jar文件看源代码 dex2jar就是把class.dex转换为classes.dex.dex2jar.jar
APK反编 2018最新版本 dex2jar-2.0+jd-gui-windows-1.4.0
ApkDec是一款免费的绿色APK反编译工具 for android . ApkDec目前版本:ApkDec-Release-0.1 使用帮助 1.选择 all 全部编译内容包括jar、xml、及其他资源文件 2.选择 jar 只反编译并打成jar包 3.反编译后你可以...
宝利通rpm-android-phone-release-3.7-64806移动应用程序是一个易于使用的视频系统,提供优质的音频和视频体验。与专有应用程序不同,RealPresence移动应用程序是基于标准的,可扩展您组织的视频网络,使您在任何...
包含dex2jar-0.0.7.9-SNAPSHOT和jd-gui2个文件; 使用:1、将apk文件后缀修改.zip,将classes.dex解压出来,放到dex2jar-0.0.7.9-SNAPSHOT目录下; 2、cmd命令行下进入到dex2jar-0.0.7.9-SNAPSHOT目录下,输入命令dex...
apk反编译工具,包括apk2java+dex2jar-2.0+jdgui,apktool版本为2.3.0,内有使用说明UnComplile.txt
jd-gui-windows-1.4.0.zip Android APK反编译详解.pdf 所有版本均为2016年7月最新版本 Apktool v2.1.1: 07 May 2016 - Apktool v2.1.1 Released 截至2016-7-27 这个是,地球上最新的版本了。 用法参考附件的PDF或...
包含apk所需的三个工具apktool_2.3.4+dex2jar-2.0+jd-gui-windows-1.4.0
JD-GUI 是一个独立的显示“.class” 文件Java源代码的图形用户界面工具。您可以使用JD-GUI浏览和重建源代码的即时访问方法和字段,以代码高度方式来显示反编译过来的代码。