关于内核层使用dma读取数据,我也不确定我说得对不对
我们正常情况下(内核读取)是
用户虚拟地址->翻译其的物理页->映射的内核虚拟地址
然后我们读取的就是(映射的内核虚拟地址),相当于(映射的内核虚拟地址)指向物理地址
如果你重新映射一份就是
用户虚拟地址->翻译其的物理页->重新映射一份内核虚拟地址
然后读取的就是这个新映射的地址,和上面一样值向同一个物理页
如果使用dma的话就是
用户虚拟地址->翻译其的物理页->翻译成dma认识的地址->dma把数据弄回你的内核虚拟地址或者翻译一份缓存区的物理地址
我感觉本质都差不多,目标都是同一个物理地址,linux上,CPU由于有mmu,所以只认识虚拟地址,dma没有mmu可以直接操作物理地址(内部还是需要翻译成dma认识的地址),如果没有mmu,能直接操作物理地址的就是CPU,本质上它们两都是操作同一块物理地址,没有那个更安全那个不安全之说,在安卓上用户态无root权限应该没有那么大的权限能看到缓存
我们正常情况下(内核读取)是
用户虚拟地址->翻译其的物理页->映射的内核虚拟地址
然后我们读取的就是(映射的内核虚拟地址),相当于(映射的内核虚拟地址)指向物理地址
如果你重新映射一份就是
用户虚拟地址->翻译其的物理页->重新映射一份内核虚拟地址
然后读取的就是这个新映射的地址,和上面一样值向同一个物理页
如果使用dma的话就是
用户虚拟地址->翻译其的物理页->翻译成dma认识的地址->dma把数据弄回你的内核虚拟地址或者翻译一份缓存区的物理地址
我感觉本质都差不多,目标都是同一个物理地址,linux上,CPU由于有mmu,所以只认识虚拟地址,dma没有mmu可以直接操作物理地址(内部还是需要翻译成dma认识的地址),如果没有mmu,能直接操作物理地址的就是CPU,本质上它们两都是操作同一块物理地址,没有那个更安全那个不安全之说,在安卓上用户态无root权限应该没有那么大的权限能看到缓存
❤14👍14
ditPro_kpm(1.0.5).zip
58.6 KB
ditpro_kpm更新1.0.5
◾️增加对5.10的隐藏进程/抹除触摸驱动
◾️优化整体的代码,去除原本的系统API的函数调用,此版本开始使用更多的汇编以进一步提高性能
◾️加回无缓存读取(仅支持5.10以上),使用汇编编写,不依赖系统调用,性能和有缓存差不多(这里指建立的过程),一秒依旧700万次吞吐量,无缓存可过缓存检测,即计算读取时间来判断是不是有人一直读我的地址
◾️原本的只读取活跃地址(这个是直接不读)和无缓存(这个是无管什么都读)差不多
⭐ 关于开发者对接,此版本不建议对接,因为使用了大量的汇编,所以没有太多的安全判断,对于用户态的交互中直接汇编操作用户的地址(不开ttbr0),如果你的缓冲区地址不是分配在堆/栈上的话会直接崩溃重启以及一些对齐越界问题,反正ditpro_kpm里面的操作都很底层原始就对了⭐
◾️增加对5.10的隐藏进程/抹除触摸驱动
◾️优化整体的代码,去除原本的系统API的函数调用,此版本开始使用更多的汇编以进一步提高性能
◾️加回无缓存读取(仅支持5.10以上),使用汇编编写,不依赖系统调用,性能和有缓存差不多(这里指建立的过程),一秒依旧700万次吞吐量,无缓存可过缓存检测,即计算读取时间来判断是不是有人一直读我的地址
◾️原本的只读取活跃地址(这个是直接不读)和无缓存(这个是无管什么都读)差不多
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰10❤8
ditPro_kpm(1.0.6).zip
59.1 KB
ditpro_kpm更新1.0.6
◾️重写无缓存读取,硬件层兼容,完美适配一加这种瞎七八乱改安卓内核的
◾️本次无缓存支持3.18~6.12(具体看CPU)
◾️修复4系无效果问题,不小心又把4系给排除了
◾️重写无缓存读取,硬件层兼容,完美适配一加这种瞎七八乱改安卓内核的
◾️本次无缓存支持3.18~6.12(具体看CPU)
◾️修复4系无效果问题,不小心又把4系给排除了
🥰12❤8🤓5
ditPro_kpm(1.0.7).zip
59.4 KB
ditpro_kpm更新1.0.7
◾️优化CPU预测,减少CPU预测错误带来的惩罚,和性能有关
◾️进一步提升无缓存的性能,100万次读取仅为0.2秒
◾️hook改为内联而非跳转,不确定联发科能不能用?
◾️优化CPU预测,减少CPU预测错误带来的惩罚,和性能有关
◾️进一步提升无缓存的性能,100万次读取仅为0.2秒
◾️hook改为内联而非跳转,不确定联发科能不能用?
❤25
ditPro_kpm(108).zip
61.4 KB
ditpro_kpm更新108
◾️适当牺牲一点性能换取安全性,这里安全是指乱传数值导致崩溃
◾️优化有缓存读取性能,0.2->0.16
◾️负优化无缓存读取性能,0.2->0.5
◾️适当牺牲一点性能换取安全性,这里安全是指乱传数值导致崩溃
◾️优化有缓存读取性能,0.2->0.16
◾️负优化无缓存读取性能,0.2->0.5
❤23👍2🤬1
ditPro_kpm(109).zip
61.4 KB
ditpro_kpm更新(109)版本
◾️完美版本,以后不会在出现任何大变化
◾️hook更换,解决原本的天玑可以用但是又不能用的问题
◾️完美版本,以后不会在出现任何大变化
◾️hook更换,解决原本的天玑可以用但是又不能用的问题
❤🔥13❤5
ditPro_kpm(112).zip
66.6 KB
ditpro_kpm更新112
◾️自动释放初始化资源,无需手动调用,段错误除外
◾️因为需要所以增加获取模块头地址和尾地址
◾️因为需要所以增加直接在内核遍历数组头,大幅度减少系统调用开销
◾️读取链条默认过滤b4000
◾️自动释放初始化资源,无需手动调用,段错误除外
◾️因为需要所以增加获取模块头地址和尾地址
◾️因为需要所以增加直接在内核遍历数组头,大幅度减少系统调用开销
◾️读取链条默认过滤b4000
❤13❤🔥4
ditPro_kpm(113).zip
68 KB
ditpro_kpm更新113
◾️功能性扩展,增加获取完整的内存段信息,须自己解析,扫内存或者内核扫指针开发会用到
◾️须5.10以上(不包括5.10)
◾️功能性扩展,增加获取完整的内存段信息,须自己解析,扫内存或者内核扫指针开发会用到
◾️须5.10以上(不包括5.10)
❤12