Android反编译代码和防止反编译_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:\apktool\aapt.exe

3> 在DOS窗口下进入apktool.jar所在目录。
      执行DOS命令:apktool d -s c:\soft\xxx.apk c:\soft\source。
     命令格式: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:\soft\source\classes.dex c:\soft\source,命令生成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的方式来编译的

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-08-02 19:59:26

Android反编译代码和防止反编译_Android的相关文章

linux下exec创建一个gcc进程来编译代码,如何判定编译是否成功?

问题描述 linux下exec创建一个gcc进程来编译代码,如何判定编译是否成功? 代码在下面-- 1 #include 2 #include 3 #include 4 #include 5 #include 6 8 char * cmdargv[20] = {0}; 9 int main(void) 10 { 11 pid_t pid; 13 int retval; 16 17 while(1){ 20 if((pid = fork()) < 0){ 21 perror("fork&qu

Android编程之代码创建布局实例分析_Android

本文实例讲述了Android编程之代码创建布局使用方法.分享给大家供大家参考,具体如下: 大概描述一下效果:最外层是一个 RelativeLayout 里面有自定义个LinearLayout,每个LinearLayout有两个TextView.that's it !!! private void initView() { // 获取xml的RelativeLayout layout = (RelativeLayout) findViewById(R.id.liner); for (int i =

Android如何防止apk程序被反编译

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从 而达到保护代码的作用. 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用

android-混淆代码问题,反编译

问题描述 混淆代码问题,反编译 我proguard-rules加的混淆代码: -optimizationpasses 5 # 指定代码的压缩级别-dontusemixedcaseclassnames # 是否使用大小写混合-dontpreverify # 混淆时是否做预校验-verbose # 混淆时是否记录日志-optimizations !code/simplification/arithmetic!field/*!class/merging/* # 混淆时所采用的算法-keep publi

Android开发apk反编译和二次打包教程_Android

作为Android开发者,工作中少不了要反编译别人的apk,当然主要目的还是为了学习到更多,取彼之长,补己之短.今天就来总结一下Android反编译和二次打包的一些知识.首先声明本文的目的是为了通过例子讲解反编译和二次打包的原理和方法,继而作为后续讲解防止二次打包和App安全的依据,并不是鼓励大家去重新打包别人的App,盗取他人劳动成果.        本文首先介绍几种Android反编译工具的使用,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali文件实现修改apk逻辑功能的

ienumerator-如何查看C#代码的反编译代码

问题描述 如何查看C#代码的反编译代码 在详细了解 IEnumerable IEnumerator yield等相关的,很多文章提到查看反编译代码.请问是一定要通过第三方软件查看导出的.exe文件才能看到吗,我用的VS开发,在VS开发上是否可以直接查看的 解决方案 .net reflector或者ilspy,前者支持vs集成但是收费.新版本的可以反编译出yield return.linq lambda等. 解决方案二: 如果是exe文件是经过编译了的.只能通过相关软件进行反编译,vs只能打开相关

【IOS-COCOS2D-X 游戏开发之七】整合COCOS2DX的ANDROID项目到XCODE项目中,XCODE编写&amp;编译代码,ANDROID导入打包运行即可!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/667.html 此篇针对较早的-x引擎讲解的,最新的可以参考: [Cocos2d-X(2.x) 游戏开发系列之二]cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!   之前有两节介绍了mac下配置Android NDK并搭建Cocos2dX以

【COCOS2D-X(2.X) 游戏开发系列之二】COCOS2DX最新2.X版本跨平台整合NDK+XCODE,XCODE编写&amp;编译代码,ANDROID导入打包运行即可!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2dx-v2-0/962.html 前段时间有事情不在北京也很少上网所以一直没有更新博客,那么今天Himi向大家分享一下最新cocos2dx 2.0.1版本整合Xcode 编译运行Android的博文: 首先Himi使用的引擎版本是cocos2dx 2.0: 主要特点: 使用opengl es2.0支持CocosBuilder集成了

Ubuntu Android源码以及内核下载与编译_Android

本教程是基于Ubuntu下Android6.0.1源码以及内核的下载和编译,记录一下,以后也就不用自己去找资料,一遍一遍的尝试了.可以翻墙的,英语好的,直接去AndroidSource. 系统环境:Ubuntu14.04LTS Android版本:6.0.1 重要网址 清华大学镜像 AndroidSource 下载前的准备 安装OpenJdk sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get in