【Android源码 栏目提醒】:网学会员鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“Android 安全机制 - 编程语言”一文,供大家参考学习
苗忠良mzl626163.com2012-01-01java不同于C/Cjava是解释性语言存在代码被反编译的隐患默认混淆器为proguard最新版本为4.7proguard还可用来压缩、优化java字节码删除无用的类、字段、方法、属性、注释等。
配置方法为在
Android.mk中设置LOCAL_PROGUARD_FLAG_FILES : proguard.flags1.//特定方法2.-keep class com.
android.launcher2.Launcher 3.public void previousScreenandroid.view.View4.public void nextScreenandroid.view.View5.public void launchHotSeatandroid.view.View6.7.//特定类“”表示后面的类是前面的类的内部类8.-keep class com.
android.launcher2.AllApps3DDefines 9.10.11.-keep class com.
android.launcher2.ClippedImageView 12.13.权限主要用来对应用的操作增加限制防止恶意应用进行非法操作给用户造成敏感数据泄漏和设备被非法控制防止恶意收费等
Android的接入权限??Normal权限??Dangerous权限??signatureOrSystem权限??Signature权限框架层权限定义位置frameworks/base/core/res/ AndroidManifest.xml权限可用于整个应用、Activity、Service等。
1.共享用户ID即共用一个进程??
Android源代码树携带的系统证书包括“media”、“platform”、“shared”、“testkey”等其中“media”证书用于多媒体、下载场景中“platform”证书用于系统场景中“shared”证书用于启动器、电话簿场景中“testkey”证书用于开发场景中这些证书位于build/target/product/security目录下??目前支持的“sharedUserId”属性包括“com.
android.cts.shareduid”、“com.
android.cts.process.uidpid_test”、“
android.uid.system”、“com.
android.uid.test”、“
android.uid.calendar”、“
android.media”、“com.
android.framework.externalsharedpermstestapp”、“
android.uid.shared”、“
android.uid.phone”等。
常用的包括“
android.uid.system”、“
android.media”、“
android.uid.shared”等。
设置应用权限????
Android提供了多个方法可用于验证调用方是否具有相应的权限。
如果调用方拥有相应的权限则权限验证的返回值为PackageManager. PERMISSION_GRANTED否则返回PackageManager.PERMISSION_DENIED。
示例1.private intenforceAccessPermission 2.intret 3.mContext.checkCallingOrSelfPermissionandroid.permission.BIND_WALLPAPER4.return ret5.
Android的数字证书是免费的分调试模式和发布模式两种通过命令行和Eclipse可以生成发布模式的数字证书??在命令行方式下利用Keytool来生成数字证书并利用Jarsigner来为APK进行数字签名??使用ADT Export Wizard进行签名只有同一包名且采用同一数字证书的应用才被认为是同一个应用数字证书的最大用途是应用升级和设置应用间通信的权限Keytool生成数字证书??keytool-genkey-v -keystoreandroid.keystore-alias miaozl-keyalgRSA -validity 20000??“keystoreandroid.keystore”表示生成的证书为“
android.keystore”可以加上路径默认在用户主目录下“alias miaozl”表示证书的别名是“miaozl”“keyalgRSA”表示采用的RSA算法“validity 20000”表示证书的有效期是20000天。
另外通过keypass可以设置数字证书私钥的密码通过keysize可以设置算法的位长默认为1024比特推荐2048比特及更长通过storepass可以设置证书的密码。
Jarsigner进行数字签名??jarsigner-verbose -keystoreandroid.keystoredemo.apk 证书别名??接下来jarsigner会提示输入密钥库的口令和证书别名的口令全部输入后即可完成签名查看数字证书签名??jarsigner-verify -verbose -certsdemo.apk加密算法敏感数据??DES对称、3DES对称、RSA非对称、MD5、RC2/RC4对称、IDEA、AES、BLOWFISH等Web服务HTTP层??三种手段WS-Security、SSL、数字签名。
目前ksoap不支持WS-SecurityTCP层SSL、TSL数据链路层??WAPIAndroid采用的SQLite目前采用明文存储数据安全涉及加密、读写、搜索等。
加密方法??加密算法实现方法参考网上??权限设置权限设置??
android:permission??
android:readPermission??
android:writePermission读写权限示例1.