在笔者上一篇文章《内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过NtCreateThreadEx这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中未被导出使用时需要首先得到该函数的入口地址,NtCreateThreadEx函数最终会调用ZwCreateThread,本章在寻找函数的方式上有所不同,前一章通过内存定位的方法得到所需地址,本章则是通过解析导出表实现。内核导出表远程线程是一种实现DLL注入的常见技术之一。通过使用该技术,注入代码可以利用目标进程的导出表中已有的函数来加载DLL,并在远程线程中执
摘要:内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息。本文分享自华为云社区《鸿蒙轻内核-内存调测-内存信息统计》,作者:zhushy。内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。本文分析下内存信息统计。1、基础概念内存信息包括内存池大小、内存使用量、剩余内存大小、最大空闲内存、内存水线、内存节点数统计、碎片
我在一家使用Linux构建嵌入式系统的公司工作。从历史上看,我们一直使用CVS来存储我们的内核工作。我们的内核最终成为以下内容的集合:我们专有硬件的驱动程序随机修复我们使用的Linux部分非专有硬件驱动程序为我们的应用定制Linux的随机yukkyhack我们正处于这样一个阶段,我们希望将一些较旧的内核重新定位到较新的版本上,并将我们陈旧的CVS工作流程修复为基于变更集的东西。显而易见的选择是git。我正在努力想出一个合理的工作流程。我已经为我们的一个内核导出了我们的CVS存储库,并且在适当的基本Linus内核之上有一组变更集。我从这里去哪里?我想要一个中央存储库,供所有开发人员提交更
我在一家使用Linux构建嵌入式系统的公司工作。从历史上看,我们一直使用CVS来存储我们的内核工作。我们的内核最终成为以下内容的集合:我们专有硬件的驱动程序随机修复我们使用的Linux部分非专有硬件驱动程序为我们的应用定制Linux的随机yukkyhack我们正处于这样一个阶段,我们希望将一些较旧的内核重新定位到较新的版本上,并将我们陈旧的CVS工作流程修复为基于变更集的东西。显而易见的选择是git。我正在努力想出一个合理的工作流程。我已经为我们的一个内核导出了我们的CVS存储库,并且在适当的基本Linus内核之上有一组变更集。我从这里去哪里?我想要一个中央存储库,供所有开发人员提交更
6月24日消息,Canonical于今天宣布,代号为ManticMinotaur的Ubuntu23.10发行版本已升级基于LinuxKernel6.3内核。Ubuntu23.10于今年4月下旬进入开发阶段,初期基于和Ubuntu23.04(LunarLobster)相同的LinuxKernel6.2内核,在开发2个月之后,每日构建ISO镜像现升级到6.3版本。Canonical计划于2023年10月发布Ubuntu23.10发行版,后续可能还会根据情况,进一步升级LinuxKernel,候选版本预估将于8月底/9月初推出。IT之家此前报道,LinuxKernel6.3在架构方面,为ARM和RI
在笔者上一篇文章《驱动开发:内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能的实现一般可在应用层进行,而驱动层只需要保留一个读写字节的函数即可,将复杂的流程放在应用层实现是一个非常明智的选择,与《驱动开发:内核实现进程反汇编》中所使用的读写驱动基本一致,本篇文章中的驱动只保留两个功能,控制信号IOCTL_GET_CUR_CODE用于读取函数的前16个字节的内存,信号IOCTL_SET_ORI_CODE则用于设置前16个字节的内存。之所以是前16个字节是因为一般的内联Hook
摘要:CPUP(CentralProcessingUnitPercentage,CPU占用率)分为系统CPU占用率和任务CPU占用率。用户通过系统级的CPU占用率,判断当前系统负载是否超出设计规格。通过系统中各个任务的CPU占用情况,判断各个任务的CPU占用率是否符合设计的预期。本文分享自华为云社区《鸿蒙轻内核M核源码分析系列十五CPU使用率CPUP(1)》,作者:zhushy。CPUP(CentralProcessingUnitPercentage,CPU占用率)分为系统CPU占用率和任务CPU占用率。用户通过系统级的CPU占用率,判断当前系统负载是否超出设计规格。通过系统中各个任务的CPU
目录1、用管理员身份打开AnacondaPrompt2、Install3、Activate4、pywin32_postinstall.py-install 5、打开6、问题6.1、Jupyter-notebook默认文件夹位置(Home)6.2、再次打开3.9版本需要重复操作5、打开因为调用matplotlib库时出现版本不兼容的问题,我想将Python版本升级到3.9以上,搞了一下午没解决,出现了诸如需要我重装Anaconda和Jupyter、在下载时各种Warning以及"Theenvironmentisinconsistent,pleasecheckthepackageplancare
当我们在Windows系统的电脑上试图拉取Linux内核git仓库时,由于Windows和Linux的不兼容会遇到很多问题。踩过好几个坑后,我将针对遇到的问题提出解决方案,并给出完成这项工作的避雷方式。 Linux内核git仓库: 由于以下有些配置仅对新创建子文件夹生效,为避免重复clone花费时间和流量,建议完成下述配置后再进行gitclone操作。 第一个问题是Linux和Windows的默认大小写敏感设定不同导致的。Linux里大小写敏感,Windows则不然。因此我们需要通过手动设置本机Windows使其大小写敏感。问题一:warning:thef
在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,EProcess结构表示一个进程,而HANDLE是一个句柄。为了实现进程与句柄之间的转换,我们需要使用一些内核函数。对于进程PID和句柄的互相转换,可以使用函数如OpenProcess和GetProcessId。OpenProcess函数接受一个PID作为参数,并返回一个句柄。GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。对于进程PID和EProcess结构的互相转换,可以使用函数如PsGetProcessId和PsG