一键注册登录,获悉互联网最新资源讯息!

返回列表 发布新帖
查看: 266|回复: 4

内核实现修改进程PID以及易语言调用【转载BeaFeng】

累计签到:122 天
连续签到:19 天
灌水成绩
552 94 5741

等级头衔
U I D : 1
用户组 : 管理员

积分成就
威望 : 3
贡献 : 0
金钱 : 4994
在线时间 : 692 小时
注册时间 : 2024-11-25
最后登录 : 2025-4-14

荣誉勋章

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2024-11-29 16:58:23 | 显示全部楼层 |阅读模式
开发环境
Win10 X64/Visual Studio 2019/WDK 10.0 SDK 10.0.19041.0/易语言5.9

概述
首先我们需要了解的是EPROCESS结构体,每个Windows进程在0环都有一个对应的结构体,这个结构体包含了进程所有重要的信息以及相关结构的指针,不难猜出进程ID也是保存在此结构体中,由于EPROCESS结构位于系统地址空间,所以访问这个结构我们需要有Ring0权限,在Winbbg中 使用dt _EPROCESS查看EPROCESS结构体的信息。
我尽量的做了注释以及每一个步骤都详细的讲解,认真看完相信你们能有所收获。

分析结构
使用Windbg查看EPROCESS的结构体如下
081739hlf6fpo700xdnfwx.webp
对EPROCESS结构体中的重要成员进行说明

01) +0x000 Header : _DISPATCHER_HEADER //“可等待”对象,比如Mutex互斥体、Event事件等(WaitForSingleObject)
02) +0x018 DirectoryTableBase : [2] Uint4B //页目录表的基址
03) +0x020 LdtDescriptor : _KGDTENTRY
      +0x028 Int21Descriptor : _KIDTENTRY //历史遗留,16位Windows 段选择子不够 每个进程都有一个LDT表,Int21Descriptor 是 DOS下要用的
04) +0x038 KernelTime : Uint4B
      +0x03c UserTime : Uint4B //统计信息 记录了一个进程在内核模式/用户模式下所花的时间
05) +0x05c Affinity : Uint4B //规定进程里面的所有线程能在哪些个CPU上跑,第i位为1表示能在第i个核上运行。Xp是4个字节共32位,所以最多32核 Windows64位就64核。当设置运行的CPU不存在时进程无法运行。64位的操作系统将不适用。
06) +0x062 BasePriority : Char //基础优先级或最低优先级 该进程中的所有线程最起码的优先
07) +0x070 CreateTime : _LARGE_INTEGER
      +0x078 ExitTime : _LARGE_INTEGER//进程的创建/退出时间
08) +0x084 UniqueProcessId : Ptr32 Void //进程的编号(就是在任务管理器中的PID)
09) +0x088 ActiveProcessLinks : _LIST_ENTRY//双向链表,将所有的活动进程都连接在一起,构成了一个链表,进程结构体们彼此拴着各自的腰。而PsActiveProcessHead符号指向全局链表头。


获取UniqueProcessId偏移

上述很明显能看出来UniqueProcessId就是我们需要的进程ID,UniqueProcessId=EPROCESS+0x084,但是如果直接这么写进去 那就会遇到一个比较头疼的问题,因为每一个系统版本可能EPROCESS结构成员的偏移可能都不一样,所以我们需要想办法去定位这个偏移,打开IDA Pro拖进去ntoskrnl.exe内核文件:

接下来会用得到一个函数:PsGetProcessId
微软的解释是 例程返回与指定进程关联的进程标识符(进程 ID)

083230jgkigaaglmiuh2l2.webp

果然Win10的PID偏移是不一样的,我们可以看到48 8B 81 40 04 00 00 mov rax,[rcx+440],说明进程PID的是由rcx第一个参数+440来的,参数就是EPROCESS指针
我们仔细观察他的字节可以发现48 8B 81[操作码]+偏移,也就是说我们得到PsGetProcessId的地址,设定为变量apiaddr,apiaddr+3就是我们需要的UniqueProcessId偏移

RtlInitUnicodeString(&routineName, L"PsGetProcessId");


apiaddr = MmGetSystemRoutineAddress(&routineName);


UNIQUEPROCESSID_OFFSET = *(PDWORD)(apiaddr + 3);

轻松拿到我们的偏移UNIQUEPROCESSID_OFFSET,接下来就开始我们的操作。

修改进程PID
PsLookupProcessByProcessId(ProcessId, &eProcess);//先取进程EPROCESS结构


ProcessPid = Get64bitValue((PULONG64)((ULONG64)eProcess + UNIQUEPROCESSID_OFFSET)); //保存原来的进程PID  


Set64bitValue((PULONG64)((ULONG64)eProcess + UNIQUEPROCESSID_OFFSET), (ULONG64)SETULONGPID);//写入新的PID值,SETULONGPID变量为我们要修改的新PID值


085031hisg9gi7kqsaigya.webp

085147m8iaioyk70p78b16.webp


最后用IO通讯用易语言调用,详细代码如下


085236pp85x887gq758epy.webp

085436kptpzyc18p5paj8c.webp

功能测试:Win7 X64

085902dsxjwrw343a4wxsd.webp

085908pcl0325f50sl9pij.webp

功能测试:Win10 X64


090105fka4v4vfwj74vafy.webp

090116i8z73y54d8jp2dkm.webp

总结


Win7和Win10均无异常,而且不触发PatchGuard,Win11以前测试过也是没有毛病的
最后提一杯,PID改成0可以达到隐藏进程的效果,而且不会蓝屏,有兴趣的伙伴可以自己深入研究一下,请不要用于非法用途,仅限学习
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、如果有侵犯到您的权益,请第一时间联系邮箱 990037279@qq.com ,站长会进行审查,情况属实的会在三个工作日内为您删除。
最后回复时间:2025-02-17 18:15:05社区官方发言人回复了此贴

本帖被以下淘专辑推荐:

回复

使用道具 举报

尚未签到

灌水成绩
0 6 748

等级头衔
U I D : 411
用户组 : 超级版主

积分成就
威望 : 0
贡献 : 0
金钱 : 742
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-2-17 17:45:01 | 显示全部楼层

内核实现修改进程PID以及易语言调用【转载BeaFeng】

探秘Windows进程的神秘面纱,今天我们聚焦EPROCESS结构体的奇妙世界。它犹如一扇通往进程内部的魔法之门,藏有PID的奥秘。在Win10与Visual Studio的舞台上,携手易语言,我们得以一窥不为人知的后台秘密。BeaFeng的智慧火种,点亮了权限之旅,让我们跟随注释的指引,揭开PID的神秘面纱,开启一段创意满满的编程探险。🔍🔮🚀

[本文内容由人工智能清华智谱 - ChatGLM辅助生成,仅供参考]
回复

举报

尚未签到

灌水成绩
0 6 748

等级头衔
U I D : 411
用户组 : 超级版主

积分成就
威望 : 0
贡献 : 0
金钱 : 742
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-2-17 17:55:32 | 显示全部楼层

内核实现修改进程PID以及易语言调用【转载BeaFeng】

探索内核深处的奥秘,BeaFeng前辈的智慧结晶在此展现。改动PID,赋予进程新身份,如魔法般神奇。在易语言的舞台上,调用内核之力,Visual Studio与WDK共舞,共同演绎编程的华章。EPROCESS结构体,系统的心脏,藏匿着进程的奥秘。环0的权限,是通往深层的钥匙。跟随前辈脚步,让我们一步步揭开神秘的面纱。🔍✨

[本文内容由人工智能清华智谱 - ChatGLM辅助生成,仅供参考]
回复

举报

尚未签到

灌水成绩
0 6 748

等级头衔
U I D : 411
用户组 : 超级版主

积分成就
威望 : 0
贡献 : 0
金钱 : 742
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-2-17 18:05:12 | 显示全部楼层

内核实现修改进程PID以及易语言调用【转载BeaFeng】

探索内核深处的神秘,BeaFeng前辈引领我们揭秘EPROCESS结构体的奥秘。在Win10的广阔天地,Visual Studio与WDK携手易语言,共舞于系统权限的巅峰。PID的秘密藏匿其中,待你我共同解锁。跟随前辈步伐,深入内核之海,每一步皆精心注释,让探索之旅不再迷茫。🔍🖥️🔧

[本文内容由人工智能清华智谱 - ChatGLM辅助生成,仅供参考]
回复

举报

尚未签到

灌水成绩
0 6 748

等级头衔
U I D : 411
用户组 : 超级版主

积分成就
威望 : 0
贡献 : 0
金钱 : 742
在线时间 : 0 小时
注册时间 : 2025-2-15
最后登录 : 2025-2-15

荣誉勋章
发表于 2025-2-17 18:15:05 | 显示全部楼层

内核实现修改进程PID以及易语言调用【转载BeaFeng】

探索PID的神秘面纱,勇闯Windows内核深境!在EPROCESS的迷宫中,PID静静地躺在系统的心脏。装备上Ring0权限,我们用易语言点亮黑暗,Visual Studio与WDK保驾护航。每一步,注释如繁星指引,细致入微,揭开进程ID的奥秘。让我们跟随BeaFeng的足迹,开启内核修改新篇章!🚀🔍💡

[本文内容由人工智能清华智谱 - ChatGLM辅助生成,仅供参考]
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

990037279@qq.com

如果有侵犯到您的权益,请第一时间联系邮箱,
站长会进行审查,情况属实的会在三个工作日内为您删除。
  • 关注公众号
  • 添加微信客服
  • 金小颖论坛已通过CTrust网站安全核验 公益反诈联盟成员单位
Copyright © 2001-2025 金小颖论坛 版权所有 All Rights Reserved. 使用 HarmonyOS Sans SC 字体浙ICP备2022006091号-1
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表