zoukankan      html  css  js  c++  java
  • Android开发之反编译代码和防止反编译

    一、反编译apk文件

    安装ApkTool工具,该工具可以解码得到资源文件,但不能得到Java源文件。
             安装环境:需要安装JRE1.6


    1> 到http://code.google.com/p/android-apktool/
         下载apktool1.3.2.tar.bz2 和apktool-install-windows-2.2_r01-3.tar.bz2 文件。
         解压两个文件,然后把解压后的文件放在一起,如:c:apktool
    2> 在系统变量PATH中添加进aapt.exe,如:;c:apktoolaapt.exe
    3> 在DOS窗口下进入apktool.jar所在目录。
          执行DOS命令:apktool d -s c:softxxx.apk c:softsource。
         命令格式:apktool d [opts] <file.apk> [dir]  中的d代表解码,[opts]代表选项,-s选项代表不解码源文件。


    2、Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具Dex2Jar,
         该工具可以把dex文件转换成jar文件。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件
         下载地址:http://code.google.com/p/dex2jar/
          1> 把APK安装包中的classes.dex解压到某个目录下,如:c:soft
          2> 在DOS窗口下进入dex2jar.bat所在目录,执行DOS命令:dex2jar.bat c:softsourceclasses.dex c:softsource,命令生成classes.dex.dex2jar.jar文件。


    3、安装jd-gui工具,该工具可以把jar文件反编译成Java源文件
          下载地址:http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip。
          运行该软件,直接打开classes.dex.dex2jar.jar文件即可看到java源代码。


    总结:
         apktool1.4.1.tar.bz2       反编译工具的jar包
         apktool-install-windows-r04-brut1.tar.bz2   windows下调用执行jar 的exe文件
         
        1、 解压这两个文件,将apktool1.4.1中的apktool.jar拷贝到apktool-install-windows-r04-brut1目录下,此时文件有:


           
    红色的为待反编译的apk文件


        cmd切换到该目录,执行:
        > apktool d -s queryNumber.apk  ./source 在当前目录生成source目录,下面放着资源文件
            

         
         2、解压dex2jar-0.0.7.11-SNAPSHOT.zip将classes.dex拷贝该目录,执行:
         > dex2jar class.dex
         生成classes_dex2jar.jar文件   

         里面全是.class文件
            

         
          3、打开jd-gui.exe,将classes_dex2jar.jar拖拽到jd-gui界面
           此时可以看到所有的源文件:

    如何防止反编译。。。。

    由于apk是Android虚拟机加载的,它有一定的规范,加密apk后Dalvik无法识别apk了。
    完全避免是不可能的,总有人能够破解你的代码。但是有几种方式来提高被反编译取代码的难度。


          1 关键代码使用jni调用本地代码,用c或者c++编写,因此相对比较难于反编译


          2 混淆java代码。混淆是不改变代码逻辑的情况下,增加无用代码,或者重命名,使反编译后的源代码难于看懂。
            网上开源的java代码混淆工具较多,一般是用ant的方式来编译的


     

  • 相关阅读:
    SAP OPEN UI5 Step 8: Translatable Texts
    SAP OPEN UI5 Step7 JSON Model
    SAP OPEN UI5 Step6 Modules
    SAP OPEN UI5 Step5 Controllers
    SAP OPEN UI5 Step4 Xml View
    SAP OPEN UI5 Step3 Controls
    SAP OPEN UI5 Step2 Bootstrap
    SAP OPEN UI5 Step1 环境安装和hello world
    2021php最新composer的使用攻略
    Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error
  • 原文地址:https://www.cnblogs.com/superWolf/p/4646908.html
Copyright © 2011-2022 走看看