Android学习:签名与反编译

来源:互联网 发布:大数据主要做什么 编辑:程序博客网 时间:2024/06/05 14:39
1:为什么要apk签名
AndroidManifest.xml下面
package="com.example.helloworld"
定义一个apk程序。
如果另外一个程序用相同的包名安装,就会覆盖之前的应用。
需要进行apk签名:
为了保证每个应用程序开发商合法Id,防止部分开发商可能
通过使用相同的Package Name来混淆替换已经安装的程序,
我们需要对我们发布的APK文件进行唯一的签名,保证我们

每次发布的版本的一致性。

所以,apk版本升级时,每次都用公用的签名文件打包。


Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。


      初学者,可能就疑惑了。我写的HelloWorld怎么可以在android设备中安装呢?
      其实平时用eclipse开发得到的android应用程序,其实已经添加有默认的debug签名了。 
 Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。Android系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。         
   Android通过数字签名来 标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定用户可不可以安装该应用程序。android的这个签名由应用程序的作者完成,并不需要权 威的数字证书签名机构认证,他只是用来让应用程序包自我认证的。Android系统默认自动给应用程序签名,ADT会自动使用debug密钥为应用程序签 名,debug密钥是一个名为debug.keystore的文件,位置位于电脑的:
/Documents and Settings/liuhua/.Android/debug.keystore,其中的liuhua是电脑的用户名。


2:如何签名
工程-Android Tools-export signed Application Package
签名步骤:(1)创建key(2)使用生成的key对apk签名。




3:apk的反编译


apk其实是一个压缩文件,可以解压缩。
META-INF
res
classes.dex (src下的java类,R类等
resources.arsc(资源文件)


4:如何反编译:

1:使用dex2jar
cmd进入dex2jar的dex2jar.bat所在目录
将classes.dex拖拽到该目录
执行 dex2jar.bat  classes.dex
执行完成,就会在该目录下生成一个classes_dex2jar.jar文件
2:使用jd-gui工具
直接将jar文件拖拽到jd-gui工具中,就可以实现android文件的反编译。
0 0
原创粉丝点击