文档章节

[Android]混淆代码后生成带签名的apk

亭子happy
 亭子happy
发布于 2012/10/11 17:35
字数 688
阅读 1767
收藏 16

    Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来。

    我们可以从android sdk的tools目录下看到有一个proguard目录。说明具有了代码混淆的功能。

    

    至于如何进行代码的混淆。我们需要做的很简单:

    1、在用eclipse生成的android工程中都有一个project.properties文件,我们需要在该文件中增加下面一行代码:

proguard.config=proguard.cfg

    如图所示:

    2、写混淆脚本proguard.cfg

    我测试用的混淆脚本非常简单,只加了优化功能。如图所示:

    对于proguard.cfg脚本的详细介绍参见:http://blog.csdn.net/laoyao_moyan/article/details/7353768

    我们可以看到混淆android代码非常容易,但是需要注意的是:在eclipse下通过Run执行来生成的bin目录下的apk文件并没有被混淆,只有通过加入证书发布的apk才会混淆。

    下面,我们来看看如何打包签名apk。

    1、生成keystore;

    在生成签名apk前,我们需要keystore,这个keystore可以用jdk下的keytool工具生成。

    在cmd下,用命令行生成keystore如图所示:

    

    按照上图中的命令,输入需要输入的内容。

    其中,-alias android.keystore是生成的keystore别名;

              -keyalg RSA是加密和数字签名的算法;

              -validity 20000是有效天数

    最后,会在jdk的bin目录下生成android.keystore文件。(这是因为keytool命令在jdk的bin目录下,当然,这个可以通过环境变量来设置)。

    2、用keystore生成签名apk。

    我们有了keystore,就可以生成签名apk了。

    Eclipse中,右键需要签名的工程->Android tools->export signed application package...

    这时会出现以下对话框:

    

    点击下一步:

    

    键入密码,点击Next:

    

    键入密码,再次点击Next:

    

    最后,点击Finish即可。

    这时会在jdk的bin目录下生成带签名的apk。

    下面是将我在github上的androidexample工程混淆了,效果如下:

    


    最后,我们看运行混淆后的输出文件,在工程中会有生成的proguard文件夹,里面的文件具体内容是:

         dump.txt

                   描述.apk包中所有class文件的内部结构。

         mapping.txt

                   列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。

         seeds.txt

                   列出那些未混淆的类和成员。

         usage.txt

                   列出从.apk剥离的代码。

         这些文件放在以下目录中:

  l  <project_root>/bin/proguard 当你使用Ant

  l  <project_root>/proguard 当你使用Eclipse


© 著作权归作者所有

共有 人打赏支持
亭子happy
粉丝 119
博文 234
码字总数 46492
作品 0
海淀
程序员
私信 提问
加载中

评论(4)

亭子happy
亭子happy

引用来自“貌似掉线”的评论

标题是说混淆工具,文章却对其几句话带过,而说如何签名apk,有种严重跑题的感觉。。

已修改标题
貌似掉线
貌似掉线
标题是说混淆工具,文章却对其几句话带过,而说如何签名apk,有种严重跑题的感觉。。
亭子happy
亭子happy

引用来自“子旺”的评论

啊啊 .cfg文件大脚本 怎么写啊

什么叫大脚本?我文章里有.cfg的详细解释的链接啊
子旺
子旺
啊啊 .cfg文件大脚本 怎么写啊
[转载] Android 代码混淆、第三方应用平台安全加密平台、渠道分发!

第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。 新建一个项目的时候,会自动生成project...

科技创造
2014/10/27
2.5K
27
SimpleNews 项目的重构之旅(5) - Android Gradle 打包&混淆应用

应用场景 之前一直没有做 Android APK 发包管理,所以这次重构把这打包这部分考虑进去,之后可能会发布到一些应用市场。 要实现的功能 混淆代码 实现签名 过滤无用资源 生成 release 版本 AP...

無名小子的杂货铺
2017/06/12
0
0
Android Apk包的签名出库、自动编译与混淆

1.签名与打正式包 右键工程,android tools export signed application 可以帮你生成签名(如果没有的话)以及打签名正式包 这时目录内会自动生成几个需要的文件,并且打一个不混淆的正式包 ...

hawkyoung
2013/11/04
0
0
Android 代码混淆及反编译方法

一、AndroidSDK自带proguard混淆 在Android SDK中自带有proguard代码混淆器,但在默认的情况下该混淆器是没有打开的。该混淆器在SDK中的路径是android-sdk-windows\tools\proguard 启动andro...

鉴客
2011/11/13
9.5K
3
浅析:android的apk文件上线前加密和签名经验分享

第一步加密: 1.加密的意义 如果不对其软件进行加密很容易被人家反编译导致源代码的泄漏,查出服务器的地址而间接的收到攻击,等一系列问题。 2.加密的方法 可以使用爱加密网址: http://www...

科技创造
2015/06/29
2.7K
4

没有更多内容

加载失败,请刷新页面

加载更多

2019 年最好的 7 款虚拟私人网络服务

糟糕的数据安全会带来极大的代价,特别是对企业而言。它会大致大规模的破坏并影响你的品牌声誉。尽管有些企业可以艰难地收拾残局,但仍有一些企业无法从事故中完全恢复。不过现在,你很幸运地...

linuxCool
32分钟前
1
0
OSChina 周一乱弹 —— 加油,还有11个小时就下班了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @_全村的希望 :吴亦凡把大碗面正儿八经做成单曲了,你别说,还挺好听 《大碗宽面》- 吴亦凡 手机党少年们想听歌,请使劲儿戳(这里) @tom_t...

小小编辑
54分钟前
233
12
C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
7
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
6
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部