http://vaero.blog.51cto.com/blog/4350852/856014
一、Android混淆
1)概述
新建Android工程,根目录下会有个proguard.cfg。简单的混淆,你只需要在project.properties内加入一行“proguard.config=proguard.cfg”即可。
注意:在签名发布apk时才会混淆,直接Run As在bin目录下的apk是不被混淆的。签名发布:右键工程->Android Tools->Export Signed Application Package…
如何生成签名,可以参考《Android 数字签名学习笔记》。
2)外部jar
未混淆过的,只加个类库声明就好。例如,用到“SDK目录\ extras\android\support\v4\ android-support-v4.jar”时,可以在-keep前加如下内容即可:
- -dontwarnandroid.support.**
- -libraryjarslib/android-support-v4.jar
第一行,表示去除警告,第二行是声明jar(jar包拷到工程内了,所以是相对目录==)。
这样混淆后,引用的jar包也会一起被混淆。
如果用的第三方jar包是被混淆过的,或你不想混淆,则用-keep去除即可。例如,之前android-support-v4.jar,如果不需要混淆它的话,可以增加这么一句:
- -keepclassandroid.support.v4.**{
- *;
- }
此时的话,jar包就不会被混淆了^^。
更详细的使用方法,请参看小节3。
1. 在手册的样例中,有两篇即是讲述Android的,如下:
Manual->Examples->A simple Android
activity&A complete Android application
中文相关的话,可以参考下述网址,呼呼~
4)可能问题
4.1)新建工程下没有proguard.cfg
你的环境太老了吧==。
ProGuard是2.2才加的?记得我起初低于2.2的混淆时,要从2.2工程下把proguard.cfg拷过去。当时建2.1的目录下是没proguard.cfg的。
不过现在建立个1.5都是有这个文件的。
二、Android反编译
1)概述
具体做什么用的或如何操作,参看小节2。
easyTool.bat
- @echooff
- titleAPK反编译[byJoin]
- remapktool目录
- setp_at="E:\zhao\environment\decompile\apktool"
- remdex2jar目录
- setp_dj="E:\zhao\environment\decompile\dex2jar-0.0.9.8"
- remdex2jar后缀
- setsuffix=_dex2jar.jar
- if"%~1"==""echo请将apk直接拖放至bat文件!&goto:over
- rem增加apktool路径
- setpath=%p_at%;%p_dj%;%path%
- setlocalenabledelayedexpansion
- if/i"%~x1"==".apk"(
- echoapktool处理"%~nx1"中...
- apktoold"%~1""%~dpn1"
- echodex2jar处理"%~nx1"中...
- dex2jar.bat"%~1"
- remdex2jar执行后直接结束了==
- echo移动文件"%~n1!suffix!"中...
- )else(
- echo文件类型错误:不支持%~x1!
- )
- :over
- echo.
- @pause>nul
保存成bat,修改下apktool目录&dex2jar目录,将apk拖上去即可。会有一个“同名”文件夹和一个“同名_dex2jar.jar”的文件。文件夹是apktool生成的资源,jar则是dex2jar反编译出的代码。然后用jd-gui打开jar即可。
注意:dex2jar需要用最新的,可以直接用于apk。代码增加了zip解压,不再需要手动了,不清楚哪个版本开始的==。才发现的,bat也刚升级了下。
2)更多
三、Android反破解
那位版主现总结了四篇文章,如下:
还有一些回复和摘录,如下:
1)可以介绍一下openssl工具,挺好用的。
2)以下为一段整合的回复:
-> 呵呵~!代码混淆能避免被别人破解吗?
-> 不能,只是会增加别人破解的难度。如果要防别人破解的话,最好的方法是使用NDK,用C、C++写的代码,用NDK编成so库,用JNI进行调用!
-> SO库文件包含符号,调试也比java代码方便,所以某种意义上说逆向so里面的nativecode比逆向java还容易。
-> OpenSource成就了GNUTool-chain.ELF里面符号表是“一等公民”.所以默认选项生成的目标文件里面带符号,虽然可以通过选项分离符号,但是很多时候都会忽略了这一点。
不过我相信OpenSource模式才是未来软件工程的王道。
3)可以多关注dalvik是怎么实现java对JNI调用的。其中会涉及到怎么定位一个nativefunc,有文章可做。
4)Dalvik虚拟机类加载机制的SDK类
A class loader that loads classes from.jarand.apkfiles containing aclasses.dexentry.
Provides a simpleClassLoaderimplementation that operates on a list of files and directories in the local file system, but does not attempt to load classes from the
network.
四、后记
我用Proguard觉得最大的好处不在于混淆,而在于压缩了代码,apk整整能瘦一圈呢^^
五、补充——反编译odex文件
没关注过ROM,在反编译4.0系统framework.jar定制SDK时,才发现odex这个东西==。
这里也就直接以这举例了^^
1. 下载baksmali-1.3.2.jar & smali-1.3.2.jar
2. 模拟器导出整个/system/framework/
baksmali反编译是自动找5个核心的BOOTCLASSPATH,当然某些可能会涉及其他的CLASSPATH需要指定-c再添加。
总之全部弄出来得了,ROM的话也一样吧?不同公司应该会涉及自己的一些包,就这边加吧?
3. 把两个jar放进导出的framework目录
4. 进入framework目录
5. 以下命令进行反编译啦~
java -Xmx512m -jar baksmali-1.3.2.jar -x framework.odex -o out(反编译进out目录)
java -Xmx512M -jar smali-1.3.2.jar -o classes.dex out(重新生成classes.dex)
第一条命令的话,现版本-a默认为14。出UNEXPECTED TOP-LEVEL EXCEPTION,可能是这出错,记得指定正确。-c,默认会找5个核心CLASSPATH,其他自己指定了。
6. 继而的话,可以用来整成一个apk,或继续dex2jar反编译咯~
参考网址:
apk生成odex & 合并odex和少dex的apk为完整apk。
当然用这两个jar时,可以先-h看参数说明也差不多。
分享到:
相关推荐
Android如何防止apk程序被反编译 亲自测试 完美混淆
代码混淆—关于android被反编译的两种解决方案,使用方法参见我的博文:http://blog.csdn.net/online1989/article/details/7058743
jock java 混淆反编译
两大最受欢迎的C#工具 一个是反编译的工具.NET Reflector 8.0.2.313 官方最新破解版 一个是dll混淆工具Xenocode Postbuild 2010 for .NET 另附破解教程以及使用教程 亲测绝对可用
通过混淆android代码来防止黑客反编译,防止黑客破解app的方法 你辛辛苦苦编写的app,被黑客轻易就破解,替换资源了,重新打包发布市场,抢占了你的利润,你是不是会很心疼?现在我教你,如何让你的APP更安全,黑客别说修改其...
用此工具反混淆后 然后用reflector软件反编译下就能还原任何经过混淆后的代码 百度下reflector网上有下载
Android 反编译和代码混淆里面工具和文档都很全,欢迎大家下载!
绝对可用,个人收藏整理的,和大家分享一下,使用很方便,主要有java代码的混淆编译,java编译后class文件的反编译,javascript代码的压缩、混淆,js是在线版的,很好用,可以自己定义混淆级别,混淆后仍可以使用,...
c# .net exe应用程序代码混淆 反反编译必用工具
java混淆和反编译 jocky支持最新jdk
包括android工程源码混淆方法、apk签名方法和apk反编译方法
在 android studio 使用自定义混淆字典进行混淆,增加app被反编译后阅读的难度, 内容为16位由0,o,O,3个字符生产的如OoO0oOoOoO0O0oO0这样的不重复字符串,使用方式:将下载的dictoO0.txt放在proguard-rules.pro同级...
一款本地运行的js反混淆反压缩js反编译工具,不是在线使用的那种,不建议使用在线js混淆压缩服务,因为在线工具都有人服务日志等,可能会泄露JS内容。设置选项:缩进一个制表符、缩进3个空格、缩进8个空格花括号独占...
所谓工欲善其事必先利其器,拿到最新的反编译工具 准备一个测试apk(eclipse或androidstudio打包,混淆文件为eclipse或android...之后就得到反编译的Test_android文件夹,里面的资源文件基本和原文件一样,还原率超高。
可以先使用 proguard来混淆加密,然后再使用 jd-gui看看加密是否成功,正常情况下被混淆加密之后的jar包,无法再被反编译出来看到。 ===> 注意不要有中文名称文件夹。
如何混淆Android项目代码(ProGuard)防止反编译.rar
android源码混淆避免反编译定义.pdf
Android混淆打包不混淆第三方jar包Android 混淆打包不混淆第三方jar包
在学习Android开发的过程中,往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行...
android源码混淆避免反编译[参照].pdf