- 博客(94)
- 资源 (29)
- 收藏
- 关注
原创 android AVB2.0学习总结
看了一阵子android AVB2.0相关的内容,准备梳理一下相关知识点。平时一般都用word整理,现在想想感觉还是用CSDN来整理看着直观些,方便自己查看的同时,也把自己学到的知识与其他人分享,共勉!因为AVB相关的内容比较多,一篇博客可能写不清楚里面的实现细节,所以准备分如下几个部分来介绍,得抽出总够的时间来码字和做图。一、AVB2.0介绍AVB2.0的工作原理vbmeta镜像介绍二、AVB2.0的配置和编译AVB的配置开关AVB key配置介绍AVB编译镜像三、Uboot阶段安全启动
2021-04-28 19:51:33 8973 7
原创 android selinux报avc denied权限和编译报neverallow解决方案
android avc denied解决方案,以及nerverallow编译报错解决方案
2022-06-02 17:25:35 6988 2
原创 android audit2allow工具使用步骤
在dmesg里面经常会看到很多的avc denied的打印,如果有很多这种打印,那可以借助于android提供的audit2allow工具帮我们转换成allow语句。使用步骤如下:一、将dmesg中的相关avc denied的打印语句,复制到一个txt文件中,我这里取名为tee-supplicant.txt(因为我正在操作的进程是tee-supplicant)avc: denied { read append } for comm="tee-supplicant" name="kmsg_debug"
2022-03-15 13:41:51 7845 2
原创 C语言宏定义值为函数返回值
在C语言编程过程中可能会遇到定义一个宏,但是这个宏的值是从另一个接口运行返回值。可以使用如下我这种方式,demo代码如下:#include <stdio.h>#include <stdlib.h>#define TEST_VALUE 0x00000005#define TEST_VALUE_OTHER 0x00000006#define TEST_VALUE_MODE()\({\unsigned int tmp;\unsigned int sta
2022-03-04 10:11:03 2050
原创 android使用perfetto工具步骤
Perfetto 是 Android 10 中引入的全新平台级跟踪工具,可以用来抓systrace,用来分析性能等问题。一、开启perfetto功能步骤1、打开开发者选项中的“System Tracing”,位置在Develop options -> System Tracing。2、点击“Record trace”选项,打开此功能,这时状态栏会显示“Trace is being recorded”。3、做你想要的操作,完成操作后,可以点击状态栏中的“Trace is being record
2022-02-16 20:07:16 5893
原创 密码编码学之数字签名
目录一、数字签名1、 数字签名关键部分的描述2、 数字签名的要求3、 DSA数字签名算法4、 椭圆曲线数字签名算法(ECDSA)5、 RSA-PSS数字签名算法一、数字签名1、 数字签名关键部分的描述数字签名具有认证功能,下面是数字签名关键部分的描述:Bob:对消息M使用Hash函数计算得到hash值h;使用Bob的私钥,对h使用数字签名生成算法生成签名S;将S附在消息M的后面。Alice:使用Hash函数,计算消息M的hash值h,hash函数对通讯双方是已知的;使用Bob提供的公钥
2022-02-16 16:33:09 4976
原创 密码编码学之公钥密码学及RSA
文章目录一、公钥密码学1.公钥密码的基本原理2.公钥密码的应用场景3.公钥密码的依赖条件4.公钥密码的抗攻击性二、RSA1.RSA基本原理一、公钥密码学公钥密码与传统密码不同,传统密码是对称加密,而公钥密码是使用两个独立的密钥 非对称的。使用两个密钥,在消息的保密性、密钥分配和认证领域意义非常很大。公钥密码和传统密码同样重要,不存在哪个比哪个更重要之说。1.公钥密码的基本原理公钥算法依赖于一个加密密钥和一个与之相关的解密密钥。有以下特点:拿到加密密钥和加密算法,无法推导出解密密钥,在计算上
2022-01-19 19:48:20 7391
原创 【OPTEE开发】从TA到PTA的功能设计
文章目录一、功能需求二、TA到PTA的总体设计1. 软件层总体设计1.1 总体结构图设计1.2 TA调用其他TA的接口设计2. 设计思路三、详细设计1. 修改代码清单2. 子模块设计2.1 libhanlerot库设计2.2 PTA模块设计2.3 TA模块设计一、功能需求上篇”从TA到安全驱动的功能设计“介绍了TA通过syscall的方式调用到driver的功能,那本篇主要描述一下如何实现TA调用PTA 完成基本功能的通路。主要包括新增PTA实现几个基本接口功能、新增和封装PTA对应的lib库 便于T
2022-01-18 14:44:02 2107 1
原创 【OPTEE开发】从TA到安全驱动的功能设计
文章目录一、功能需求二、TA到Driver层的架构1. 软件层架构2. 实现思路2.3 封装libutee层系统API2.2 core中增加系统服务层2.1 Driver侧接口和实现三、详细实现1. 修改清单2. 详细设计2.1 libutee对外接口设计2.2 core服务设计2.3 Driver驱动侧设计2.4 TA应用侧实现一、功能需求实现普通TA通过系统调用到增加的Driver侧功能,实现完整的通路。功能:在TA中通过系统调用安全驱动中的write和read功能,增加rot service系统
2022-01-17 14:41:14 3432
原创 查看pem证书的ASN数据结构的方法
搞过的同学应该都弄过google 的keybox.xml,里面有google 的attestition key证书内容,类似如下: <Key algorithm="ecdsa"> <PrivateKey format="pem">-----BEGIN EC PRIVATE KEY-----MHcCAQEEIGy6AjEzbgGKmraHakjGX7Ld01MaK+d+SUv99GpUSosToAoGCCqGSM49AwEHoUQDQgAENr+geskxIlY
2022-01-11 13:52:33 1152
原创 SageMath安装及使用
一、下载Sage安装包Sage下载地址我选择的是ubuntu 18的,下载的sage-9.4-Ubuntu_18.04-x86_64.tar.bz2这个。二、安装Sage解压包tar xvf sage-9.4-Ubuntu_18.04-x86_64.tar.bz2解压时间比较久点,解压成功后,有SageMath文件夹出来。然后cd SageMathsage/SageMath$ tree -L 1.├── COPYING.txt├── Makefile├── Pipfile├──
2022-01-05 13:41:27 10849 2
原创 Android KeyStore流程
文章目录一、Keystore二、Keystore架构及接口函数1. Keystore组件架构2. IKeymasterDevice.hal中的几个重要接口函数2.1 begin函数2.2 update函数2.3 finish函数2.4 abort函数3. Keymaster TA4. 对称密码函数API三、从Keystore到Keymaster的完整分析1. cts问题2. 代码流程分析2.1 模块调用关系2.2 代码分析一、Keystorekeystore主要是对密钥库的控制操作,包括密钥的生
2022-01-02 10:43:54 8450 4
原创 密码编码学之AES及其工作模式详解
文章目录一、AES0. 总体结构1. Feistel密码结构2. AES概述3. 工作模式3.1 电码本(ECB)3.2 密文分组链接(CBC)3.3 密文反馈(CFB)3.4 输出反馈(OFB)3.5 计数器(CTR)一、AESAES是对称密码,高级加密标准。0. 总体结构1. Feistel密码结构子密钥产生算法:子密钥产生越复杂,密码分析越困难;迭代轮数:单轮不能提供安全性,多轮加密可取得很高的安全性;密钥长度:密钥越长越安全,但会降低加解密速度;轮函数:越复杂,抗攻击的能力强分组
2021-12-30 19:29:32 6272
原创 android AVB2.0(七)AVB移植经验
文章目录前言一、移植需求二、分解需求三、详细设计1. RSA密钥生成2. 镜像签名和生成vbmeta镜像3. VeritySetup程序设计3.1 主程序设计3.1 公钥比对接口设计3.2 读取vbmeta分区设计3.3 DM verity设计3.4 分区挂载校验总结前言本篇应该是AVB系列的最后一篇博客了,前面的六篇博客基本上把AVB涉及到的技术点都过了一遍,因为平时要开发项目比较忙 所以有点时间就上来写写,文笔不是很好 大家将就着看看了~~感兴趣的朋友可以从这里开始android AVB2.0
2021-12-24 11:19:35 5224 6
原创 android AVB2.0(六)Super动态分区介绍
文章目录一、Super分区是什么?二、Super分区工作原理三、Super分区的配置和编译1.分区表的配置2. Super镜像的编译2.1 Super镜像的编译日志2.2 Super镜像的生成过程四、Super分区在AVB中的校验一、Super分区是什么?Super分区,也叫dynamic动态分区,动态分区是 Android 的用户空间分区系统,在Android R版本开始引入。android引入了super动态分区的设计,目的是为了解决像system,vendor等分区size大小不能动态调整的问题
2021-12-23 21:03:56 14444 3
原创 android AVB2.0(五)Device Mapper和Dm verity详解
文章目录一、Device Mapper1. Device Mapper概述2. Device Mapper的使用二、Dm Verity1. Dm Verity验证思想2. Hashtree脚本处理2.1 镜像编译2.2 创建verity tree2.3 创建metadata3. Dm verity设备的创建3.1 SetUpDmVerity函数3.2 hash table处理一、Device Mapper1. Device Mapper概述Device mapper是LINUX提供的一种逻辑设备到物理
2021-12-23 20:41:29 6693 1
原创 AVB之镜像的签名及验证签名详解
文章目录1.签名流程1.1 镜像的签名1.2 镜像的内容2.验证镜像的hash和signature签名2.1 计算hash2.2 验证签名1.签名流程我们以一下空的dtbo.img镜像为例,进行说明1.1 镜像的签名调用external/avb/avbtool.py脚本的add_hash_footer 函数@build/core/Makefile# dtbo imageINSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img$(INSTALL
2021-12-23 17:03:48 5454 1
原创 OPTEE之安全存储详解
文章目录安全存储是什么?二、安全存储相关技术点1.加载dirf.db文件2. dirf.db文件和安全存储文件的格式2.1 安全文件的三个区域2.2 重要结构体的关系框图2.3 FEK和IV介绍3. 安全的基本操作3.1 安全文件的创建3.2 安全文件的读取3.3 安全文件的写入4. 安全存储中的加密解密4.1 数据结构的组成与作用4.2 元数据的加密4.3 数据块数据的加密总结安全存储是什么?OP-TEE的安全存储功能是OP-TEE为用户提供的安全存储机制。用户可使用安全存储功能来保存敏感数据、密钥
2021-12-22 15:41:58 3497
原创 OP-TEE之TA签名、验签及TA加载过程
OP-TEE的TA签名、验签以及TA加载过程文章目录OP-TEE的TA签名、验签以及TA加载过程一、TA的签名及验签1.TA的签名2.TA的public key处理3.TA的验签二、TA的加载1.RPC请求加载TA2.获取TA文件内容到共享内存3.加载TA到OP-TEE的用户空间从本篇开始整理OP-TEE相关的技术点,整理过程中自己也慢慢归类和学习。使用的op-tee版本号是3.12一、TA的签名及验签1.TA的签名optee-os/ta/ta.mk# Copy the scripts
2021-12-16 16:06:48 3139
原创 UBI文件系统和镜像的制作及分区挂载说明
定义:无排序区块图像文件系统(Unsorted Block Image File System, UBIFS),主要适用于nand flash设备。三个子系统:UBIFS文件系统可以理解为用户层,工作于UBI之上。比如我们设备中挂载可见的分区。/dev/ubi3_0 22616 3068 19548 14% /dataUBI是MTD设备的高层次表示,一般用户层也可以在这里做开发定制,比如升级,通过ioctl控制MTD设备的读写。MT
2021-12-16 10:13:11 5147
原创 adb remount overlayfs的说明
在android R项目中执行adb remount的时候,能看到"Using overlayfs for xxx"的打印,类似如下:#adb rootrestarting adbd as root#adb remountDisabling verity for /systemUsing overlayfs for /systemDisabling verity for /system_extUsing overlayfs for /system_extDisabling verity f
2021-12-08 15:17:10 6629
原创 android OEM unlocking分析
在测试CTS Verifier测试的时候,有一项为开发者选项"OEM unlocking"功能,测试的时候需要人为进行判断是否成功。测试此项前,需要执行如下动作:adb shell settings put global hidden_api_policy 1adb install -r -g CtsVerifier.apkadb install -r -t CtsEmptyDeviceOwner.apkadb shell dpm set-device-owner com.android.
2021-12-06 10:49:17 5417
原创 android AVB2.0(四)libavb库介绍
本篇android AVB2.0学习总结系统的第四篇,接上篇[android AVB2.0(三)Init阶段安全启动流程], 这里介绍一下libavb库的详细实现。(https://blog.csdn.net/jackone12347/article/details/120088394)首先要介绍一下本篇文章的两个目标,带着这两个目标我们来分析一下libavb库的实现。1、android AVB是如何完成verify校验这项任务的?2、采用了什么样的设计来完成verify校验任务?上篇内容之一:“I
2021-12-02 17:23:48 5334 7
原创 [git] git fsck --lost-found命令用法
在修改代码的修改,有时候切换branch时不小心把修改的内容干掉了,这时候可以使用git fsck --lost-found命令,把刚修改的内容找回来。xxx$ git fsck --lost-foundChecking object directories: 100% (256/256), done.Checking objects: 100% (237/237), done.dangling commit 8d9e9caada0279be9135d78bf67acac926f26416然后g
2021-11-09 16:24:23 5151
原创 C语言指针操作字符数组demo
C语言指针操作字符数组demo,本意是使用指针操作source,函数调用一次取16个字节,调用两次获取到整个数据。char source[32] = {0};int *header = (int *)source;int *pos = (int *)source;void print_value(int *arg0, int *arg1, int *arg2, int *arg3){ if ( 4 * (pos - header) >= 32) pos = header; *ar
2021-11-04 11:13:00 304
原创 [XTS] VTS测试VtsSecurityAvbTest分析
为什么要写篇博客来记录这个呢,因为已经被这个测试逼疯了好几天,所以还是写下来记录一下。前提:测试版本是android R,kernel版本是5.4VtsSecurityAvbTest测试时一直报“The GKI image is not signed”下面是VtsSecurityAvbTest.cpp的部分测试代码TEST(AvbTest, Boot) { /* Skip for devices running kernels older than 5.4. */ struct utsnam
2021-10-19 19:35:21 4487 8
原创 android fastboot常见命令
关于fasboot锁定/解锁引导加载程序 ,请参考google source中的说明FlashingFlash all partitions from an update.zip package.fastboot update ZIPFlash all partitions from $ANDROID_PRODUCT_OUT. On A/B devices, flashed slot is set as active. Secondary images may be flashed to inac
2021-10-14 16:58:59 7901
原创 vim xxd命令查看二进制文件内容
使用xxd命令查看xxx.img内容vim -b xxx.img默认是乱码,输入命令:%!xxd就可以看到内容了。如果想看文件的开头部分,请输入命令:0想直接跳到文件的尾部,请输入命令:$
2021-09-29 20:27:01 1618
原创 android编译VTS测试组件
需要进行VTS测试时,可以自已编译出VTS测试组件,方法如下:1、source build/envsetup.sh2、lunch选择自己需要的工程3、make vts编译完成后,在out/host/linux-x86/vts目录下能看到测试组件[100% 42332/42332] build out/host/linux-x86/vts/android-vts.zipVTS的测试代码路径在:android\test\vts-testcase这里以avb的测试代码为例,看看里面都有哪些内容├
2021-09-27 10:51:04 6264 2
原创 C语言实现去掉字符串中指定的字符
需求:将常量字符"2021-04-30"中的字符“-”去掉,函数返回int类型的20210430的日期。实现:#define CHAR_LEN 10int del(const char* str, char c, int len){ int j = 0; int i = 0; int ret = 0; char *temp = NULL; temp = (char *)malloc(CHAR_LEN + 1); memcpy(temp, str, CHAR_LEN + 1); pri
2021-09-07 13:54:47 3553 1
原创 VSCode工具常用命令总结
进入函数后返回命令:ALT + <高亮命令:首先安装highlight-words工具然后在代码中,双击变量,按住ctrl + shift + p键,调出命令界面,然后输入hightlight(输入过一次就方便了,后面直接用),选择Highlight Current命令,这样这个变量全局就着色了,用起来就方便多了。查找上一个变量和下一下变量查找下一个变量:输入F3查找上一个变量:shift + F3更多的命令的快捷键这个简直就是神器啊,VSCode支持的命令全有了。..
2021-09-06 15:28:46 1332
原创 android AVB2.0(三)Init阶段安全启动流程
文章目录概要一、Init中哪个阶段校验及校验哪些分区?二、Init代码分析FirstStageMount流程FirstStageMountVBootV2校验流程概要前提:本篇android AVB2.0学习总结系统的第三篇,前面两篇分别介绍了AVB2.0的配置,和Uboot中的AVB校验流程。本篇将介绍Android Init阶段如何校验,以及相关会涉及的技术知识点。本篇文档是基于android R版本代码。============原创不易,转载就注明出处:https://editor.c.
2021-09-03 21:12:02 5857 1
原创 AVB Digest转换成ASCII码
有AVB验证过程中,有时候要计算最后计算出来的digest,是否和calculate_vbmeta_digest命令计算的值相等,需要将十六进制的数据转换成ascii码转换的方法如下 char Digest[32] = {0xa,0xb,0xc,0xd,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4,0x1,0x2,0x3,0x4}; char HexDi
2021-09-03 14:59:12 345
原创 python实现RSA加密解密 及 签名验签功能
私钥签名公钥验签的python脚本举例说明:私钥签名def rsa_private_sign(data): private_key = get_key('rsa_private_key.pem') signer = PKCS1_signature.new(private_key) digest = SHA.new() digest.update(data.encode("utf8")) sign = signer.sign(digest) signatur
2021-09-01 15:48:21 4465 1
原创 AVB2 avbtool.py脚本常用命令
AVB2 avbtool.py脚本提供了一些非常实用的命令,便于编译完版本后可以查看镜像的一些信息,便于调试的时候使用。1. info_image在源码根目录下执行如下info_image就可以查看vbmeta.img镜像中的情况了./android/external/avb/avbtool.py info_image --image android/out/target/product/xxx/vbmeta.img显示类似如下内容:Minimum libavb version: 1.0H
2021-09-01 14:33:22 2659 1
原创 android P开机后启动一个service的方法
比如在android设备启动后,想在开机后起个服务,但又不想去直接接收Bootcompleted广播,因为广播接收者比较多,可能轮到你那个service处理的时候就比较晚了,所以还是修改源码看看。修改ActivityManagerService.java的finishBooting函数,在这里去启动想要的服务。 final void finishBooting() {...编译services.jar后推进设备,发现会报错08-24 10:57:07.116: W/ContextImpl(
2021-08-24 20:53:29 1109
原创 AVB中将公钥转换成字符数组头文件的实现
之前有同事问到如何将一个公钥,转换成与之对应的.h头文件,然后头文件中是公钥的字符数组。实现其实也比较简单,主要有如下几个步骤,跟着我的步骤就可以实现:1、先生成一个私钥这部分就自己openssl自己生成一个就可以了。2、抽出私钥对应的public key直接调用android提供的avbtool.py脚本就可以实现./avbtool.py extract_public_key --key yourprivate.key --output mypublickey.bin3、生成.h头文件.
2021-08-16 17:18:22 1814 5
androidpn客户端zip
2012-07-04
[Android应用程序开发].
2011-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人