文档章节

IpuWadeMobile客户端简单混淆解决方案 及 非普通jar混淆(android工程的jar)

天堂之镜
 天堂之镜
发布于 2015/02/16 14:10
字数 607
阅读 258
收藏 5

一、场景描述:

  在你已经知道如何使用Export打包一个签名的Apk的前提下,当你使用最新版的开发工具开发完客户端工程,你或许会考虑将客户端工程进行混淆,以保证客户端的安全性。

二、具体需求:

  使用Android SDK自带的ProGuard工具,将客户端工程进行混淆。

三、解决方案:

A、实现思路:

  配置好project.properites和proguard-project.txt(这两个文件由开发工具自动生成,如没有生成,将确保你使用的是最新的开发工具):不混淆包路径,不混淆公开的方法和受保护的类,成员,不进行多余的代码优化(缺nu.xom包),不进行异常提示(也可以使用injars和libraryjars这两个参数取代之),保持异常,签名,内部类,以及不赞成的方法(默认都会被去掉)。

B、具体实现:

1.配置project.properties

proguard.config=proguard-project.txt

2.配置proguard-project.txt

旧版(混淆apk)

-keeppackagenames

-keepattributes Exceptions

-keepattributes Signature

-keepattributes InnerClasses

-keepattributes Deprecated


-keep class android.** {

    public protected *;

}


-keep class net.** {

    public protected *;

}


-keep class org.** {

    public protected *;

}


-keep public class com.** {

    public protected *;

}


-dontoptimize


-dontwarn **.*

新版(混淆jar):

-injars  wade-mobile-com.jar
-outjars wade-mobile-com.jar.jar
-verbose

-libraryjars rt.jar
-libraryjars lib
-libraryjars classes

-dontpreverify
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keeppackagenames
-keepattributes Exceptions
-keepattributes Signature
-keepattributes InnerClasses
-keepattributes Deprecated
-keepnames class * implements java.io.Serializable
-keep public class com.** {
	public protected *;
}
-keepclassmembers class **.R$* {
    public static <fields>;
}
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}


3.从现在开始,你Export出的Apk便会被自动混淆。之后,你可以使用dex2jar+jd进行反编译测试,也可以使用adb命令将其安装到模拟器上测试。

4.注意事项

(1).请保证你apk的解压工具是7z

(2).dex2jar反编译的命令为: dex2jar.bat classes.dex

(3).当反编译工具报错时,请尝试重新打开反编译工具后再次尝试

(4).请确保你使用的开发工具来自:http://114.215.100.48:8080/doc/resource-list.html

(5).请确保你使用的混合开发框架为最新的jar包。http://114.215.100.48:8080/doc/resource-list.html

(6).请确保你新建的类的包路径心com开头,否则请参照自行添加。

5.附:给新手的多余提示

(1).adb的安装命令为:adb install **.apk

(2).Export的导出方法为:

工程-右键-Export-Android-Export Android Application - Project(你需要导出的工程) - Create new keystore - ……(如果后面的还不知道,那也无能为力了)。

© 著作权归作者所有

共有 人打赏支持
天堂之镜
粉丝 5
博文 6
码字总数 5734
作品 0
长沙
高级程序员
AndroidStudio封装SDK的那些事

首先SDK是提供给别人调用的工具。所以常见的SDK都是以jar包,so库,aar包等方式导入APP项目中。然后提供一些公开的API供接入方调用。所以在Androidstudio中如果需要生成jar或者aar,就需要将...

尘封的落叶
06/23
0
0
黑客破译android开发代码真就那么容易?

很多程序员辛辛苦苦开发出的android开发代码,很容易就被黑客翻译了。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windowstools下面多了一个proguard文件夹 progua...

wujiachen
2012/10/17
0
0
android应用程序的混淆打包

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示: target=android-8 proguard.config=proguard.cfg Eclipse会通过此配置在工程目录生成proguard.cfg文件......

AlexZhuang
2012/04/11
0
0
Jean同学的Proguard私房物语

由于项目中自主研发的一个Android平台工具库需要提供给外部人员使用,我们决定使用android sdk自带的proguard tool混淆源码。在动用了google之后得到的大量资源文中,拨云见雾、去糟存精,融...

jeanwoo
2012/08/10
0
0
解决Android单个dex文件不能超过65536个方法问题

当我们的项目代码过大时,编译运行时会报Unable to execute dex: method ID not in[0, 0xffff]: 65536)错误。当出现这个错误时说明你本身自己的工程代码中含有的太多的方法,或者你的工程lib...

hejunbinlan
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
27分钟前
7
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
30分钟前
6
0
OSChina 周二乱弹 —— 老司机表示右手无处安放

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @花间小酌 :分享李宗盛的单曲《鬼迷心窍》--春风再美也比不上你的笑 《鬼迷心窍》 - 李宗盛 手机党少年们想听歌,请使劲儿戳(这里) 每天早...

小小编辑
42分钟前
225
5
复习2

10月22日任务 awk 中使用外部shell变量 awk 合并一个文件 把一个文件多行连接成一行 awk中gsub函数的使用 awk 截取指定多个域为一行 过滤两个或多个关键词 用awk生成以下结构文件 awk用print...

hhpuppy
50分钟前
5
0
原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
62
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部