Android安全-数据安全1-代码中的字符串安全
2016-02-17 11:31
309 查看
Android安全-数据安全1-代码中的字符串安全
Android 应用程序开发中难免会使用到字符串,如服务器的地址等一些敏感信息,对于
这些字符串如果使用硬编码的方式,容易通过静态分析获取,甚至可以使用自动化分析工具
批量提取。例如若在 Java 源代码中定义一个字符串如下:
代码:
则在反编译的.smali 代码中对应的代码如下(寄存器可能会有区别):
代码:
对于自动化分析工具,只需要扫描到 const-string 关键字就可以提取到字符串值。因此应该
尽量避免在源代码中定义字符串常量,比较简单的做法可以使用 StringBuilder 类通过 append
方法来构造需要的字符串,或者使用数组的方式来存储字符串。使用 StringBuilder 构造字符
串反编译后的代码如下,使用这种方式可以增加自动化分析的难度,如果想要完整提取一个
字符串,如果仅仅采用静态分析方法就必须要进行相应的词法语法解析了。
另外也可以对字符串进行加密处理,例如一些具有重要功能的代码会将服务器地址等重要信息进行加密处理,运行时再进行解密。
Android 应用程序开发中难免会使用到字符串,如服务器的地址等一些敏感信息,对于
这些字符串如果使用硬编码的方式,容易通过静态分析获取,甚至可以使用自动化分析工具
批量提取。例如若在 Java 源代码中定义一个字符串如下:
代码:
1. String str = "I am a string!";
则在反编译的.smali 代码中对应的代码如下(寄存器可能会有区别):
代码:
1. const-string v0, "I am a string!"
对于自动化分析工具,只需要扫描到 const-string 关键字就可以提取到字符串值。因此应该
尽量避免在源代码中定义字符串常量,比较简单的做法可以使用 StringBuilder 类通过 append
方法来构造需要的字符串,或者使用数组的方式来存储字符串。使用 StringBuilder 构造字符
串反编译后的代码如下,使用这种方式可以增加自动化分析的难度,如果想要完整提取一个
字符串,如果仅仅采用静态分析方法就必须要进行相应的词法语法解析了。
另外也可以对字符串进行加密处理,例如一些具有重要功能的代码会将服务器地址等重要信息进行加密处理,运行时再进行解密。
相关文章推荐
- 制作图片浏览器
- 【Android 一般进阶】ListView滑动到顶部smoothScrollToPosition
- Android中拍照Camera的简单实用
- Mac Android Studio常用快捷键总结
- AndroidStudio 工具栏的显示
- Android Framework简记
- Android 最火的快速开发框架XUtils
- Android 利用SharedPreferences存储数据
- Android中启动活动的最佳写法
- 详解Android自定义控件属性
- android点击ListView的item后变色
- Android自定义ViewPager实例
- WRANGLING DALVIK: MEMORY MANAGEMENT IN ANDROID
- Android实现平铺图片效果
- android DisplayMetrics
- android remount失败
- Android数据库更新并保留原来数据的实现
- Android下数据库线程安全问题
- Android的service的生命周期
- Android之RecyclerView简单使用(三)