android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。
因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习。
2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的。
2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。
Android - proguard混淆器使用,有引用第三方jar包的时候报错:
You may need to specify additional library jars (using '-libraryjars')
处理方法:在proguard.cfg文件顶部加入
-dontwarn com.motorola.**
-keep class com.motorola.** { *;}
说明:-dontwarn和-keep结合参数使用来保持第三方库中的类而不乱,-dontwarn com.motorola.**意思是保持com.motorola.**这个包里面的所有类和所有方法而不混淆
-keep class com.motorola.** { *;}意思是ProGuard不要警告找不到com.motorola.**这个包里面的类的相关引用。对应包名改成你对应的jar包顶层package
详细可以查看官方文档http://developer.android.com/tools/help/proguard.html
有些应用反编译后java代码用jd-ui根本都无法打开,连混淆的代码都看不到的,本人尝试多次都做不到(网上有说是混淆工具针对反编译工具的),希望知道的告知下怎么处理的。
--注:上面的问题经过本人多次尝试终于找到部分原因了,一.使用的版本比较低,现在最新版的是dex2jar-0.0.9.7,二.dex2jar目录不要有中文的,三.需要把class.dex直接拖到dex2jar.bat,生成
classes.dex.dex2jar.jar。如果生成jar过程中报一堆at com.googlecode.dex2jar.ir.ts.TopologicalSort.dfsRemove(TopologicalSort.java:135)错误的话还是不能打开的,看了下官方的问题报告有很多人有类似的问题,貌似进入了一个死循环,跟apk文件大小有点关系,应该是dex2jar的一个bug。
注意:上面的功能只是把java代码混淆了,xml和资源文件、图片并没有混淆,有些游戏应用图片比较重要需要转换成dat文件 再加上自己的加密解密算法还原。
另外加了混淆功能后还有压缩的功能,混淆后的apk比原来的小(具体比例看你的代码重复量了)
说完防止反编译再来说说怎么反编译吧
先说一下反编译的流程和原理:
1.用apktool 把apk--> 资源包(java代码变成smali文件看不懂的),可以修改资源包里面的文件。
2.apk后缀名改成zip或rar解压,获取classes.dex 文件,用dex2jar转换成jar包(注:直接解压出来的资源文件是不能直接打开的,要用第一步的反编译工具,dex2jar.bat文件目录不要有中文)。
------------------------------------------
新版使用说明(不用把apk换成zip解压了,可以直接把apk文件拖到dex2jar.bat上--不能包含中文名称)
下载dex2jar最新版http://code.google.com/p/dex2jar/downloads/list
解压dex2jar-version.zip文件到一个目录. 比方说 /home/panxiaobo/, C:\
unzip -x dex2jar-version.zip -d /home/panxiaobo
使用 dex2jar 来生成 .jar 文件. dex2jar会在someApk.apk所在目录下生成一个someApk_dex2jar.jar文件.
linux sh /home/panxiaobo/dex2jar-version/dex2jar.sh /home/panxiaobo/someApk.apk
windows C:\dex2jar-version\dex2jar.bat someApk.apk
--------------------------------------------------
3.用jd-ui等java反编译工具直接查看java代码。
4.把java代码和第一版的资源包整到一起重新组成一个新的应用。
5.用apktool重新编译。
6.用签名工具重新签名。
7.重新发布带新的签名的应用。
注:如果不用改java代码,只是换换风格和汉化2.3.4步则不用做。
google code上的开源项目
apktoolhttp://code.google.com/p/android-apktool/
dex2jarhttp://code.google.com/p/dex2jar/ ps:这个是中国人写的
另外有人做了个工具套装,集成了apktooldex2jar jd-ui,不过我下载了运行不了 不知道是不是相应环境没有配对导致的
hackapkhttp://code.google.com/p/hackapk/
另外有人把apktool做了个封装 弄成exe文件 图形界面的方便使用,截个图出来给大家看看吧
注:上面那个软件不能签名的,要用另外一个软件(APKSign)来进行签名,截图如下:
另给出上面两个工具的下载连接 机锋论坛上面的,估计直接点击连接下载不了
Xwindows,带图形界面:apktool.rar(3.33
MB)-->这个下载后可以自己到http://code.google.com/p/android-apktool/下载最新版的apktool.jar替换原来的。
签名工具:Auto-sign.rar(312.45
KB)
另外还有些命令行的工具,本人给APK编辑器不同版本上面的说明不对应浪费了很多时间
1.普通apk文件(就是从各种网站上下载下来的第三方软件)
(1)把他放到place-apk-here-for-modding文件夹里面。(不要有空格和中文,中文的改成英文的)
(2)打开Script.exe,在CMD窗口中输入22或23(设置目前的工程),选择要编辑的apk文件的编号,回车确认
如上:有些版本设置目前的工程选项改成23了,但说明文件没有改过来,按22一直都无法选择apk,原因很不好找。
建议还是使用图形界面。
分享到:
相关推荐
Android如何防止apk程序被反编译 亲自测试 完美混淆
APK防止反编译工具,包内的README.doc有介绍
android decompiler dex2jar 反编译 简易教程android decompiler dex2jar 反编译 简易教程android decompiler dex2jar 反编译 简易教程android decompiler dex2jar 反编译 简易教程android decompiler dex2jar 反...
讲解一些关于反编译相关的知识,主要分三篇,第一篇介绍反编译的工具和方法, 第二篇,介绍smali的语法,第三篇介绍如何防止反编译
Android如何防止apk程序被反编译 作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在...
反编译xml文件,Android的AndroidManifest、布局layout文件等等都能反编译,只需要一句命令!!!另附源码
我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就...由于这些APK反编译工具的存在,我们迫切地希望能有方法去防止别人来反编译我们的APK,从而保护自己的商业机密和利益。
防止java反编译的一些方法
通过混淆android代码来防止黑客反编译,防止黑客破解app的方法 你辛辛苦苦编写的app,被黑客轻易就破解,替换资源了,重新打包发布市场,抢占了你的利润,你是不是会很心疼?现在我教你,如何让你的APP更安全,黑客别说修改其...
首先声明本文的目的是为了通过例子讲解反编译和二次打包的原理和方法,继而作为后续讲解防止二次打包和App安全的依据,并不是鼓励大家去重新打包别人的App,盗取他人劳动成果。 本文首先介绍几种Android反编译工具...
Android Studio 基于NDK加密,防止反编译获取加密key,使用说明http://blog.csdn.net/u012927188/article/details/52638951
安卓反编译软件和防止反编译方法文档
如何混淆Android项目代码(ProGuard)防止反编译.rar
一、反编译apk文件 安装ApkTool工具,该工具可以解码得到资源文件,但不能得到Java源文件。 安装环境:需要安装JRE1.6 1> 到http://code.google.com/p/android-apktool/ 下载apktool1.3.2.tar.bz2 和apktool-...
我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就...由于这些APK反编译工具的存在,我们迫切地希望能有方法去防止别人来反编译我们的APK,从而保护自己的商业机密和利益。
用于app加固,防止反编译,逆向分析
非常详细的Android 防止反编译的教程,开发者必须学习的好教程
主要介绍了Android编程之防止反编译的实现方法,涉及Android针对运行环境、签名及程序相关信息的获取与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下