- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 使用gdb调试android用户态代码
如图,windows上运行虚拟机,虚拟机中安装linux系统,主要用于android 系统编译调试环境。至于为什么要这样搞,而不直接在windows上运行gdb程序是因为运行于设备上的gdbserver要和运行于调试pc上的gdb要配套。而目前windows上gdb编译的程序往往是很老的。但是linux环境下的gdbserver和gdb程序是和android编译环境完全匹配的,并且已经预制在android源代码中了(具体位置可以在prebuilts/gdb下找到)。
2023-06-25 10:25:22
653
1
原创 Android按键亮屏之旅
生活中有许多我们习以为常的事情,然而其中的细节往往为我们所忽略。今天,我们将深入探讨 Android 设备从按键到屏幕点亮的一系列过程,以期更好地理解它们的实现方式。注:本文所参考的源代码基于 Android-13.0.0_r3 和 MTK 平台。
2023-03-22 18:53:50
672
转载 RCU设计
显然让替换立刻生效来实现 RCU 的方式,只能说你创造了一个新的同步机制,但它永远也不会有人用。那么为了能超过 rwlock 的性能,一方面不能做读者与写者之间的锁同步,从而让 RCU 能在特定场景下有性能优势,另一方面,如果不做锁同步,那就意味着读者不知道写者什么时候更新,写者也不知道更新时是否存在读者,唯一的方案是:即使 writer 在更新完之后,reader2 读取的依旧是 D1 的旧数据(因为 reader2 不知道数据有更新),而更新完之后新来的读者读到的自然是新数据。
2023-03-17 22:35:06
240
原创 虚拟机中通过模拟器调试android kernel
也可以通过修改device\generic\goldfish\x86_64-kernel.mk文件中KERNEL_MODULES_PATH和 EMULATOR_KERNEL_FILE将kernel和kernel ko加入到emulator镜像中重新编译aosp系统,而无需定制emulator的启动命令。虚拟机安装ubuntu(此处略),需要注意的是虚拟机要开启嵌套虚拟化(即在虚拟机中再次使能虚拟化功能)可使用国内镜像源替换android源(git config --global url.
2023-02-20 23:02:30
769
原创 qemu调试linux内核
有了qemu后我们可以使用一台电脑就能模拟出多种cpu架构的单板,不需要去进行重复复杂的编译烧写调试工作了,提高开发的效率。
2023-02-06 19:05:36
541
原创 android 模拟器运行arm镜像
按照提交注释是说apilevel > 28,就是新的android 9.0及以后版本上不在支持host和guest (android)不匹配的情况,说白了就是x86上只能跑x86版本的android,arm机器上只能跑arm版本的android镜像。具体为什么也没有说,但是我想说这个限制完全和qemu设计的初衷不匹配了,qemu本就是支持在一个实体cpu上模拟出不同架构的cpu,对于需要针对cpu相关的调试可能就没办法用模拟器验证调试了。win10上安装了最新的android studio。
2023-02-02 18:29:26
4897
3
原创 drm框架简介
1、 DRM简介(Direct Rendering Manager)传统linux显示设备驱动开发时,通常使用FB驱动架构,随着显卡性能升级:显示覆盖(菜单层级)、GPU加速、硬件光标,传统FB架构无法很好支持,此外,对于多应用的访问冲突也无法很好控制。在这样的背景下,DRM应用而生。DRM是linux内核中负责与显卡交互的管理架构,用户空间很方便的利用DRM提供的API,实现3D渲染、视频解码和GPU计算等工作。
2023-01-17 13:44:46
777
转载 【转】自上而下解读Android显示流程
假如没有这样一个模块,所有合成任务都将有GPU完成,则会带来性能与功耗的负担,GPU主要用于绘制,参与合成则会造成资源的浪费,特别是在10年前,GPU参与合成,性能会急剧下降——对于如今来说,并没有那么大影响了,基本顺手捎带着就完成了,如今的考虑主要在于功耗,GPU合成的效率太低了。这里的原则也是减小带宽。这是Android发展到2.0之后才出现的概念,算是SF的附属子模块,之前是运行在SF主线程的,如今改成单独的Service,这是Android的设计理念,效率其实是下降了,两个进程的交互是相当频繁的。
2023-01-15 19:48:43
3299
2
原创 Windows上支持大小写敏感的目录文件
unix上文件是区分大小写的,但是unix上不支持大小写,所以需要将windows目录转换为区分大小写的文件目录。需要目录所在分区是ntfs格式。新的目录必须初始的时候为空。安装powershell (
2023-01-15 12:24:34
340
转载 Android深入浅出之Binder机制
一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:l ServiceManager,这是Android OS的整个服务的管理程序l
2017-11-09 22:23:57
135
转载 zergRush 提权代码
https://github.com/revolutionary/zergRush/blob/master/zergRush.c /* android 2.2/2.3 libsysutils root exploit use-after-free * * Exploited by rewriting a FrameworkCommand object making the runCom
2017-10-08 19:36:22
840
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人