`
damengjiejie
  • 浏览: 9897 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android apk 自我保护技术-让JD-GUI显示error

 
阅读更多

又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊。好了我们利用周末的时间继续介绍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.1.zip

    JD-GUI是一款专为开发者设计的实用工具,尤其在处理Java和Android应用时,它能帮助我们以可视化的方式查看.jar或.apk文件的源代码和目录结构。标题中的"jd-gui-windows-1.6.1.zip"表明这是JD-GUI的Windows版本,版本...

    Mac-apktools-jd-gui.zip

    "Mac-apktools-jd-gui.zip"这个压缩包正是为这样的需求准备的,它包含了一系列适用于Mac OS系统的Android反编译工具。 首先,我们来了解一下其中的关键组件: 1. **Apktool**:这是一个开源工具,用于反编译...

    apk反编译工具 apktool dex2jar-2.0 jd-gui

    总的来说,apktool、dex2jar-2.0和jd-gui是Android应用反编译过程中的关键工具,它们共同构成了一个从资源解析到源码查看的完整流程,为开发者提供了深入了解APK结构和功能的途径。通过熟练掌握这些工具的使用,...

    android apk 反编译工具 带 jd-gui

    总之,"android apk 反编译工具 带 jd-gui"涉及到的关键技术包括Android APK结构、Java字节码反编译、JD-GUI的使用以及可能的其他反编译工具。掌握这些知识对于Android开发者进行代码分析、安全审计或逆向工程具有...

    MAC版apk-tool和jd-gui

    总之,MAC版的apk-tool和jd-gui是Android开发和分析过程中的得力助手。它们提供了查看APK内部结构和源代码的能力,对于学习、调试和安全分析具有重要意义。通过熟练掌握这两款工具的使用,开发者可以更高效地理解和...

    反编译apk神器(jadx-gui)

    今天我们将聚焦于一款名为"jadx-gui"的反编译神器,它以其用户友好的图形界面和强大的功能,让APK文件的内部结构一目了然。本文将详细介绍jadx-gui的使用,以及如何借助它进行Android应用的逆向分析。 首先,让我们...

    android反编译 jd-gui-windows-1.6.3 和 dex2jar-2.0

    在Android应用开发的世界里,有时候开发者需要对已有的APK文件进行分析或研究,这就涉及到反编译技术。本文将详细介绍两个重要的工具:jd-gui-windows-1.6.3和dex2jar-2.0,它们是Android反编译过程中的关键组件。 ...

    apk反编译工具,APKtools,dex-tools ,jd-gui-windows

    总之,APKTools、dex2jar和JD-GUI是Android开发者和安全研究人员常用的工具,它们共同构成了一个强大的APK反编译和分析工具链,对于理解APK的工作机制、查找漏洞、学习代码实现等方面具有很高的价值。正确使用这些...

    APK反编译工具apktool-dex2jar-luyten-jd-gui

    总的来说,apktool、dex2jar、luyten和jd-gui是Android反编译过程中不可或缺的工具,它们提供了从资源到源代码的全方位分析能力,极大地帮助了开发者深入理解APK的内部结构和功能。通过熟练掌握这些工具,你可以在...

    jd-gui.rar_JD-GUI apk abcde_itzzi_jd-gui_反编译工具

    这个名为"jd-gui.rar_JD-GUI apk abcde_itzzi_jd-gui_反编译工具"的压缩包包含了JD-GUI的相关资源,主要用于处理APK应用的反编译工作。 1. **JD-GUI介绍**:JD-GUI是一款独立的图形化用户界面工具,它允许用户直接...

    jd-gui.rar_android_android gis_android gui_android jd-g_安卓反编译

    标题中的“jd-gui.rar_android_android gis_android gui_android jd-g_安卓反编译”指出,这个压缩包包含了一个用于Android应用反编译的工具,名为“jd-gui”。jd-gui是Java反汇编器GUI(图形用户界面)的一个版本,...

    Android反编译工具apktool、dex2jar-2.0、jd-gui

    本篇将详细介绍三个常用的Android反编译工具:apktool、dex2jar-2.0以及jd-gui,并探讨它们如何协同工作以揭示APK文件的秘密。 首先,让我们来看看apktool。apktool是由IzzySoft开发的一款开源工具,专门用于反编译...

    dex2-jar-2.0 jd-gui apktool三件套

    在Android应用开发领域,了解和使用“dex2jar-2.0”,“jd-gui”以及“apktool”这三款工具是至关重要的。这些工具主要用于Android应用的逆向工程,帮助开发者分析APK文件的内部结构,查看或修改代码,以及对Dalvik ...

    dex2jar-2.0.zip和jd-gui-windows-1.6.6.zip

    总之,`dex2jar`和`jd-gui`是Android逆向工程中常用的工具,它们可以帮助开发者查看APK的内部工作原理,进行代码调试或学习其他应用的设计思路。然而,使用这些工具应遵守软件许可协议,尊重他人的知识产权,且仅...

    apk2.3.4-dex2jar-jd_gui

    本篇将详细介绍"apk2.3.4-dex2jar-jd-gui"这个压缩包中包含的工具及其在APK反编译过程中的作用。 首先,`apktool`是一款由IzzySoft开发的开源工具,用于解编译Android的APK文件。`apktool.bat`是Windows环境下运行...

    dex2jar-2.0 + jd-gui-1.4.0 最新更新日期:2017-11-28

    总的来说,dex2jar和jd-gui是Android逆向工程的重要工具,它们可以帮助开发者了解APK的工作原理,进行安全分析或学习他人的编程技巧。但同时,也应尊重软件知识产权,仅在合法和合理的范围内使用这些工具。

    反编译apk必备工具jd-gui和dex2jar

    总的来说,jd-gui和dex2jar是Android开发者和安全研究人员的强大工具,它们提供了一种查看APK内部结构和代码的方法,这对于调试、学习和安全评估具有重要意义。掌握这些工具的使用,可以提升你在Android应用开发和...

    android反编译工具jd-gui

    "android反编译工具jd-gui"就是这样一个工具,它可以帮助开发者将已编译的Java字节码转换回源代码,便于阅读和分析。JD-GUI是一款强大的反编译工具,特别适用于快速查看和理解Android应用的Java代码。 JD-GUI的主要...

    jd-gui-windows-1.4.0.rar

    《JD-GUI:Windows平台上的反编译利器》 在Android应用开发的世界中,了解APK文件内部的工作原理是至关重要的。有时,我们可能需要查看已编译的Java代码,以便学习、调试或者分析第三方应用的功能。这时,反编译...

    dex2jar-2.0,jd-gui-1.4,apktool_2.3反编译apk

    本篇将详细介绍使用dex2jar、jd-gui和apktool这三款工具进行APK反编译的基本步骤和相关知识点。 首先,dex2jar是一款将Dalvik Executable (DEX) 文件转换为Java字节码(JAR)的工具,它是反编译过程中的关键环节。...

Global site tag (gtag.js) - Google Analytics