安卓的代码加固和其他安全问题

news2024/12/23 3:52:18

文章目录

  • 安卓加固
    • apk文件结构
    • dex加固过程
  • 其它安全问题

安卓加固

在这里插入图片描述
从App的加固技术来看:主流分为dex加密和so加密,目前来看保护dex文件更为重要,因为dex反编译后的java代码可读性更强。

android-ndk: Native Development Kit
官网解释:这套工具使您能在 Android 应用中使用 C 和 C++ 代码

在这里插入图片描述

apk文件结构

文件或目录说明
assets存放资源文件
lib存放ndk编译出来的so文件
META-INF签名信息
res存放资源文件
AndroidManifest.xml清单文件
classes.dexjava源码编译后的dalvik字节码
resources.arsc编译后的二进制资源文件

dex加固过程

在这里插入图片描述
上图中的重打包签名的详细图:
在这里插入图片描述
ProxyApplication就是壳dex的入口。

其它安全问题

除了混淆源码、加固源码,还有以下问题需要注意:

风险名称风险解决方案
篡改和二次打包修改文件资源,添加病毒、广告,
窃取支付密码,拦截短信
混淆资源文件,
对签名过后的hash进行验签
资源文件被窃取钓鱼网站混淆资源文件
webview明文存储密码风险用户使用webview默认存储密码到databases/webview.db
root的手机可以产看webview数据库
关闭webview存储密码的功能
调试日志函数调用日志中含有敏感信息关闭调试日志函数,删除日志文件
不安全加密ECB模式和OFB模式改用CBC或CFB
密钥硬编码逆向窃取密钥应该模仿best practice去随机生成
动态调试gdb调试,java调试在so文件中对调试进程进行监听
android:debuggable=“false”
应用数据被备份清单文件中allowbackup=true
攻击者可以使用adb命令对APP应用数据进行备份
allowbackup=false
全局可读写内部文件不同软件之间不必要的数据共享
其它应用可以读取或修改内部文件
MODE_WORLD_READABLE
android: sharedUserId
使用MODE_PRIVATE模式创建内部存储文件;加密后存储;或者干脆脱敏
内网测试信息残留通过测试的Url,测试账号等对正式服务器进行攻击等清除测试痕迹
随机数不安全使用不够随机不使用setseed方法
使用/dev/urandom /dev/random
http/https明文传输,中间人攻击X509TrustManager checkServerTrusted校验函数要按需实现,不能留空白
HostnameVerifier 检查证书的主机名和使用证书的主机名是否一致
输入监听窃取密码等自定义键盘
截屏攻击对app界面进行截图或录屏添加属性getWindow().setFlags(FLAG_SECURE)
不让用户截图和录屏
模拟器运行风险刷单,模拟位置禁止在模拟器上运行
四组件导出风险Activity被第三方应用访问导致被任意应用恶意调用自定义权限
动态注册Receiver风险使用带权限检验的registerReceiver API进行动态广播的注册
PendingIntent错误使用Intent风险使用PendingIntent的时候,如果使用了一个空Intent,会导致恶意用户劫持修改Intent的内容禁止使用一个空Intent去构造PendingIntent
Intent组件隐式调用风险使用隐式Intent没有对接收端进行限制导致敏感信息被劫持对接收端进行限制
建议使用显示调用方式发送Intent
fragment注入攻击风险PreferenceActivity的子类中,没有加入isValidFragment方法,进行fragment名的合法性校验,攻击者可能会绕过限制,访问未授权的界面(1).如果应用的Activity组件不必要导出,或者组件配置了intent filter标签,建议显示设置组件的“android:exported”属性为false(2).重写isValidFragment方法,验证fragment来源的正确性
webview远程代码执行风险风险:WebView.addJavascriptInterface方法注册可供JavaScript调用的Java对象,通过反射调用其他java类等建议不使用addJavascriptInterface接口,对于Android API Level为17或者以上的Android系统,Google规定允许被调用的函数,必须在Java的远程方法上面声明一个@JavascriptInterface注解
zip文件解压目录遍历风险Java代码在解压ZIP文件时,会使用到ZipEntry类的getName()方法,如果ZIP文件中包含“…/”的字符串,该方法返回值里面原样返回,如果没有过滤掉getName()返回值中的“…/”字符串,继续解压缩操作,就会在其他目录中创建解压的文件(1). 对重要的ZIP压缩包文件进行数字签名校验,校验通过才进行解压。 (2). 检查Zip压缩包中使用ZipEntry.getName()获取的文件名中是否包含”…/”或者”…”,检查”…/”的时候不必进行URI Decode(以防通过URI编码”…%2F”来进行绕过),测试发现ZipEntry.getName()对于Zip包中有“…%2F”的文件路径不会进行处理。
Root设备运行风险已经root的手机通过获取应用的敏感信息等检测是否是root的手机禁止应用启动
从sdcard加载Dex和so风险未对Dex和So文件进行安全,完整性及校验,导致被替换,造成用户敏感信息泄露(1).放在APP的私有目录 (2).对文件进行完成性校验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法通关村第十关 | 快速排序

1.快速排序的基本过程 快速排序是分治法运用到排序问题的典型例子,基本思想是:通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right,其中left中的元素都比pivot小,right的都比pivot的大,然后再次对l…

springboot引入校验注解

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>jakarta.validation</groupId><artifactId>jak…

Android音视频剪辑器自定义View实战!

Android音视频剪辑器自定义View实战&#xff01; - 掘金 /*** Created by zhouxuming on 2023/3/30** descr 音视频剪辑器*/ public class AudioViewEditor extends View {//进度文本显示格式-数字格式public static final int HINT_FORMAT_NUMBER 0;//进度文本显示格式-时间…

Nginx 解决api跨域问题

环境: nginx 1.22.1 宝塔8.0 php lavarel 在nginx里加入下面的设置 #这里填*就是任何域名都允许跨域add_header Access-Control-Allow-Origin "*";#CORS请求默认不发送Cookie和HTTP认证信息。但是如果要把Cookie发到服务器&#xff0c;要服务器同意&#xff0c…

web连接桌面打开gptmap

一&#xff1a;环境配置 需要的材料&#xff1a; python-3.10.4 我使用的是这个版本的&#xff0c;3.8.10 该版本和以下版本组件组合&#xff0c;验证过能正常运行&#xff08;python 3.6.8测试异常&#xff09; websockify 该项目有python版本和node js版本 noVNC 形式的app…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——性质——第二节——并非命题

真题&#xff08;2012—52&#xff09;—性质—并非之后&#xff0c;所有有的互相变&#xff0c;必然可能互相变&#xff0c;肯定否定互相变。 52.近期流感肆虐&#xff0c;一般流感患者可采用抗病毒药物治疗&#xff0c;虽然并不是所有流感患者均需接受达菲等抗病毒药物的治疗…

excel之数学函数、excel中的通配符

学习excel前需要明确的是事&#xff1a;   在学习excel函数之前&#xff0c;大家需要明确一件事&#xff0c;excel现在设计到了一些新函数&#xff0c;这些新函数只能存在于office365、office2019及更 新版本之中&#xff0c;所以建议大家在学习时安装较新的版本&#xff0c;…

OLED透明屏采购指南:如何选择高质量产品?

着科技的不断进步&#xff0c;OLED透明屏作为一种创新的显示技术&#xff0c;在各个行业中得到了广泛应用。 在进行OLED透明屏采购时&#xff0c;选择高质量的产品至关重要。在这篇文章中&#xff0c;尼伽将为您提供一个全面的OLED透明屏采购指南&#xff0c;帮助您了解关键步…

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现QRGRU门控循环单元分位数回归时间序列区间预测。基于分位…

详细整合Spring+SpringMVC+MyBatis+logback(SSM)项目

整体目录结构 表结构 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

Java中List排序的4种方法

开发过程中经常会遇到读取文件内容的情况&#xff0c;需要判断文件是否为文本文件&#xff0c;及文件编码格式&#xff0c;防止无法读取内容或乱码出现情况。 我们可以通过 java.io.File 类包找出文件是目录还是常规文件。java.io.File 类包含两种方法&#xff0c;它们分别是&…

[机器学习]特征工程:主成分分析

目录 主成分分析 1、简介 2、帮助理解 3、API调用 4、案例 本文介绍主成分分析的概述以及python如何实现算法&#xff0c;后续会再出一篇关于主成分分析算法原理讲解的文章&#xff0c;敬请期待&#xff01; 感谢大家支持&#xff01;您的一键三连&#xff0c;就是我创作的…

深入解析 Axios Blob 的使用方法及技巧

在 Web 开发中&#xff0c;处理文件传输是一个常见的需求。Blob&#xff08;二进制对象&#xff09;是一种表示二进制数据的方式&#xff0c;常用于处理文件和多媒体数据。本文将介绍如何使用 Axios 和 Blob 来处理文件传输。 Axios Blob 概念 在开始之前&#xff0c;让我们先…

智慧水利利用4G物联网技术实现远程监测、控制、管理

智慧水利工业路由器是集合数据采集、实时监控、远程管理的4G物联网通讯设备&#xff0c;能够让传统水利系统实现智能化的实时监控和远程管理。工业路由器利用4G无线网络技术&#xff0c;能够实时传输数据和终端信息&#xff0c;为水利系统的运维提供有效的支持。 智慧水利系统是…

stm32_ADC电源、通道、工作模式

0、ADC功能框图 1、ADC的电源 1.1、工作电源 VSSAVSS&#xff0c;VDDAVDD&#xff0c;简单来说&#xff0c;通常stm32是3.3V&#xff0c;ADC的工作电源也是3.3V&#xff1b; 1.2、参考电压 VREF和VREF-并不一定引出&#xff0c;取决于封装&#xff0c;如果没有引出则VREF连接到…

Debian查询硬件状态

很早以前写过一个查询树霉派硬件状态的文章&#xff0c;用是Python写的一个小程序。里面用到了vcgencmd这个测温度的内部命令&#xff0c;但这个命令在debian里面没有&#xff0c;debian里只有lm_sensors的外部命令&#xff0c;需要安装&#xff1a;apt-get install lm_sensors…

ZLMediaKit推流测试

推流测试 ZLMediaKit支持rtsp/rtmp/rtp推流&#xff0c;一般通常使用obs/ffmpeg推流测试&#xff0c;其中FFmpeg推流命令支持以下&#xff1a; 1、使用rtsp方式推流 # h264推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transp…

STM32 CubeMX (Freertos任务通信:队列、信号量、互斥量,事件组,任务通知)第二步

STM32 CubeMX STM32 CubeMX ____Freertos任务通信&#xff1a;队列、信号量、互斥量&#xff0c;事件组&#xff0c;任务通知 STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用…

最新ChatGPT网站AI系统源码+详细图文搭建教程/支持GPT4.0/AI绘画/H5端/Prompt知识库/

一、前言 SparkAi系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。 那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01…

LeetCode ——二叉树篇(三)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 二叉树的定义及创建见&#xff1a; LeetCode ACM模式——二叉树篇&#xff08;一&#xff09;_要向着光的博客-CSDN博客 目录 116. 填充每个节点的下一个右侧节点指针 117. 填…