Android 打包与反编译

    Android 独有的安全机制:一:权限机制,二:签名机制。签名机制的使用场合:升级App和权限检查;

一、优点:
1. 有利于程序的升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本,如果新版程序和旧版程序的数字签名不同,则Android系统认为是不同程序,并产生冲突。

2. 有利于程序的模块化设计和开发。Android允许同一个数字签名的程序运行在同一个进程中,Android会视为一个程序。

3. 可以通过权限permision的方式在多个程序之间共享数据和代码。Android提供基于证书的权限机制。 如果一个 permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应 用程序才能取得该权限。

二、 Android数字证书的要点:
    1. 所有的应用程序必须有证书;
    2. Android的程序包可以是自签名的,不需要权威数字证书机构签名认证;
    3. 如果要正式发布,必须使用一个合适死要生成的数字证书来给程序签名,而不能使用adt插件或ant工具生成的调试证书来发布。
    4.  有效期:强烈要求2033年之后,范围是1~1000

三、 调试证书
    没有签名的程序也可以在手机和模拟器上运行?为方便开发和调试程序,ADT会自动使用debug密钥为应用程序签名。位置:系统盘符:/Documents and Settings/用户名/.android/debug.keystore

四、签名步骤
    有两种签名方式,一种通过dos,另一种通过图形化界面,这里采用第二种。
   
五、 覆盖安装

     为程序覆盖安装主要检查两点:
      1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
      2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。
      另外,可能有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
      1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;
      2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了。但要是你的软件有很多使用客户,这就是大问题了,就相当于软件不具备升级功能!


六、 反编译:
    1. 反编译工具:
         需要下载四个工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
            dex2jar:将apk中的classes.dex转化成Jar文件。

    JD-GUI:反编译工具,可以直接查看Jar包的源代码。

    apktool:反编译工具,通过反编译APK中XML文件,直接可以查看。

    apktool-install-windows-r05-ibot:辅助windows批处理工具。

    2. 具体步骤:
            1) 解压apk包,
                  apk也是常见的zip,用压缩文件可以得到图片资源文件;这里只取出classes.dex文件,是java文件编译后经过dx工具打包而成。
            2)反编译dex文件
                使用dex2jar 工具:dex2jar classes.dex
            3) 反编译jar包
                得到jar包后,下载自己的反编译工具,这里使用JD-GUI,打开上一步生成的jar包,即可看到源代码;
            4) 反编译xml文件
                利用后两个工具解压后得到的三个文件放到同一个目录,具体命令:apktool d ./app.apk app

七、 代码混淆
   1.   在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。

如果需要对项目进行全局混码,只需要进行一步操作:

将project.properties的中

“#  proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。


    2. 在老版本中,创建项目的时候,会给出proguard.cfg,但是在的新版中创建项目则不会有任何提示。这个时候需要只要将proguard.cfg的内容加入到proguard-project.txt中,再根据自己的需要进行编辑即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值