lzth.net
当前位置:首页 >> AnDroiD代码混淆为什么不混淆ACtivity >>

AnDroiD代码混淆为什么不混淆ACtivity

不混淆activity 的类是因为这个在manifest中声明了,如果混淆了就找不到了. 所有在xml中注册的都不能混淆,而且设置的是不混淆这些类名或某些方法,如果是这样写:-keepclassmembers class * extends android.app.activity {*;},就是内部所有都不混淆,要是只写:-keep public class * extends android.app.activity,只是类名不会混淆,可以反编译下自己混淆过的代码就看出来了.更多关于安卓混淆的办法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载.下面是截图.

所谓代码混淆,也只是对类名方法名一类进行打乱,让人难以阅读而已.无法起到真正的保护作用.android客户端的东西都是不安全的,也容易被破解,你可以试试反编译一些知名软件的安装包,也是一样能出来的.如果实在有安全需要的东西,可以使用ndk,将重要敏感的代码用c写,变成so文件,就比较安全,不容易被反编译.

当项目中有第3方jar包时,怎么实现混淆打包,而不对第3方包混淆 在项目中有第3方包时打包出错日志: [2012-06-14 14:14:28 - humei_cc] Proguard returned with error code 1. See console [2012-06-14 14:14:28 - humei_cc] Note: there were

Android代码混淆,是为了你的apk被他人反编译之后拿到源码,如果你混淆了,那反编译后的apk所有的java类都被改成了a.java/c.java之类的文件名,类里面的属性也变成abc之类的了,想拿到你的源码就不可能了,直接在gradle(app)文件的android节点下加上下边代码.buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }}

配置文件是不会混淆的,混淆的本质是将class里的类名,进行映射替换成像abc等这些没有意义的名称,LZ可以在生成的map文件里进行查看.显然,配置文件是无法混淆的,它只是一个xml的配置文件,本身就是一个映射,而且它和class文件也没可比性

如果你没用到第三方的library或者jar包,那么只要在工程目录下project.properties里面,把#proguard.config=xxxxxx前面的#去掉就好了.如果有第三方的jar包,那么把需要的配置加到proguard-project.txt里面就好.

代码混淆技术基本原理是使反编译工具反编译出来的代码人难以阅读,从而达到防止被逆向破解的目的.PC上的代码混淆技术已经很成熟,有加花指令、多态变形等技术手法,Android代码混淆技术才刚刚起步,目前已知的技术手法如下.Java

以Android studio 工具举例,如要指定不混淆的内容可以在项目根目录下编写proguard-rules.pro 举例:-keep public class * extends android.app.Activity # 保持哪些类不被混淆-keep public class com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆就是继承于你指定的类/你直接指定的类不被混淆,所以你先看看你第三方的jar的包名类目然后填上即可

四大组件初始化时在AndroidManifest里面根据名字来的,骚年你把它混淆了,名字变成a,b,c,d,当然就找不到啦

混淆androidmainfest的话,就会导致无法找到程序的主入口,因为很多activity都是在这里配置,才能找到运行的,混淆的话,就无法实例化activity

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com