精易论坛

标题: [首发]内核实现修改进程PID以及易语言调用 [打印本页]

作者: BeaFeng    时间: 2022-2-17 09:11
标题: [首发]内核实现修改进程PID以及易语言调用
本帖最后由 BeaFeng 于 2022-2-17 09:31 编辑



开发环境
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的结构体如下
[attach]1153906[/attach]
对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)

[attach]1153907[/attach]

果然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值


[attach]1153915[/attach]

[attach]1153916[/attach]


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


[attach]1153917[/attach]

[attach]1153918[/attach]

功能测试:Win7 X64

[attach]1153919[/attach]

[attach]1153920[/attach]

功能测试:Win10 X64


[attach]1153921[/attach]

[attach]1153922[/attach]

总结


Win7和Win10均无异常,而且不触发PatchGuard,Win11以前测试过也是没有毛病的
最后提一杯,PID改成0可以达到隐藏进程的效果,而且不会蓝屏,有兴趣的伙伴可以自己深入研究一下,请不要用于非法用途,仅限学习


如果大家看完不错对你们有帮助的话就点点好评给个赞吧,有什么问题可以在下方留言一起讨论~







补充内容 (2022-2-19 12:36):
统一回复:Win7修改PID后可以不用还原,Win10进程退出之前需要还原否则蓝屏。
作者: 学习122    时间: 2022-2-17 09:29
感谢分享
作者: 温暖的舌骨    时间: 2022-2-17 09:29
学习了,谢谢
作者: wadsq108    时间: 2022-2-17 10:39
66666666666谢谢分享
作者: gavinfly    时间: 2022-2-17 10:42
支持一下,感谢分享!
作者: MyBin97    时间: 2022-2-17 10:50
66666666666666
作者: X.lycs    时间: 2022-2-17 10:51
内核实现修改进程PID以及易语言调用
作者: 超级萌新    时间: 2022-2-17 10:52
学习一下
作者: X.lycs    时间: 2022-2-17 10:53
测试无法改0
作者: huayinzhe    时间: 2022-2-17 10:58
大哥6666666
作者: 2296196057    时间: 2022-2-17 11:09
11111111111111111111111111
作者: 深爱者    时间: 2022-2-17 11:16
支持开源!感谢分享,论坛有你更精彩~
作者: a457803910    时间: 2022-2-17 11:21
大哥6666666
作者: 汉族    时间: 2022-2-17 11:22
可以啊            
作者: 黑猫66    时间: 2022-2-17 11:23
支持开源!感谢分享,论坛有你更精彩~
作者: 虚vs伪    时间: 2022-2-17 11:25

支持开源,感谢分享!
作者: gaoqing    时间: 2022-2-17 11:30
谢谢分享!你发的隐藏进程就这个原理?
作者: 内存Hook专业户    时间: 2022-2-17 11:36
支持开源,感谢分享!
作者: hhhql    时间: 2022-2-17 11:41
        新技能已get√
作者: BeaFeng    时间: 2022-2-17 11:42
gaoqing 发表于 2022-2-17 11:30
谢谢分享!你发的隐藏进程就这个原理?

是的,明白人
作者: kantal    时间: 2022-2-17 11:46
        新技能已get√
作者: 1150262043    时间: 2022-2-17 12:03
哈哈哈那你
作者: 划落的天空    时间: 2022-2-17 12:04
看下这个东西
作者: XiaMoi    时间: 2022-2-17 12:13
厉害了,正好需要这个

作者: 冬夏    时间: 2022-2-17 12:18
#在这里快速回复#大神出品,此贴必火!
作者: 会飞的猫    时间: 2022-2-17 12:20
内核实现修改进程PID
作者: DuerKai    时间: 2022-2-17 12:22
牛啊牛啊牛啊牛啊

作者: 夜的静night    时间: 2022-2-17 12:34

作者: 掠过    时间: 2022-2-17 12:50
内核实现修改进程PID
作者: 冬夏    时间: 2022-2-17 12:52
“ID改成0可以达到隐藏进程的效果”这个改不了成0哦,直接没反应,不过改成其他的ID也结束不了
作者: 74596877    时间: 2022-2-17 12:57
支持一个!!!
作者: e小鸟168    时间: 2022-2-17 13:00
非常有用的一个功能
作者: zjchxj    时间: 2022-2-17 13:04
可以改和其他进程想同的ID吗?可以改成负数的ID吗
作者: 易父    时间: 2022-2-17 13:29
内核实现修改进程PID
作者: Quattro    时间: 2022-2-17 13:37

内核实现修改进程PID
作者: 依窗听1    时间: 2022-2-17 13:44
新技能已get√
作者: han15070727425    时间: 2022-2-17 13:50

作者: Frieza    时间: 2022-2-17 13:51
        感谢分享,很给力!~
作者: pjm123    时间: 2022-2-17 13:54
支持一个!!!
作者: Fate    时间: 2022-2-17 14:03
感谢分享
作者: 风云诶i    时间: 2022-2-17 14:25
看看                             
作者: tvvvhg    时间: 2022-2-17 14:26
修改PID后。如果不还原。关闭进程会蓝屏的
作者: asfor78    时间: 2022-2-17 14:31
感谢分享,很给力!~
作者: Kyu    时间: 2022-2-17 14:37

作者: xelloss0618    时间: 2022-2-17 15:05
新技能已get√
作者: 小恒浩    时间: 2022-2-17 16:04
新技能已get√
作者: 忧11    时间: 2022-2-17 18:44
大佬6666666
作者: 菠菜521    时间: 2022-2-17 22:32
及易语言调用 [修改]
作者: fyh505099    时间: 2022-2-17 23:14
感谢大佬分享 看看长知识
作者: xiouluote    时间: 2022-2-17 23:17
666666666666666666666
作者: 794229345    时间: 2022-2-18 00:57
感谢楼主分享!
作者: zx896825328    时间: 2022-2-18 01:08

感谢楼主分享!
作者: kmskik    时间: 2022-2-18 08:53
感谢楼主的无私分享,谢谢!
作者: kmskik    时间: 2022-2-18 09:12
修改后在pchunter里看到的还是原来修改前的PID
作者: q1872    时间: 2022-2-18 10:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: q1872    时间: 2022-2-18 10:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: SoloCat    时间: 2022-2-18 20:52

作者: 难寻。    时间: 2022-2-18 21:08
感谢分享 下载收藏

作者: atglkm123    时间: 2022-2-18 21:40
修改PID后。如果不还原。关闭进程会蓝屏的
作者: 小虎来了    时间: 2022-2-18 22:17
这个要支持啊




作者: dzscuz    时间: 2022-2-19 00:40
看看什么好东西
作者: xuanpeng    时间: 2022-2-19 03:05
如果大家看完不错对你们有帮助的话就点点好评给个赞吧,有什么问题可以在下方留言一起讨论~
作者: 2858745253    时间: 2022-2-19 05:06
修改PID后。如果不还原。关闭进程会蓝屏的
作者: kmskik    时间: 2022-2-19 08:29
2858745253 发表于 2022-2-19 05:06
修改PID后。如果不还原。关闭进程会蓝屏的

不卸载驱动关闭软件没事
作者: 网络、大老板    时间: 2022-2-19 11:13
风哥开个班吧
作者: 小Ye夜    时间: 2022-2-19 11:16
支持分享学习
作者: BeaFeng    时间: 2022-2-19 12:35
网络、大老板 发表于 2022-2-19 11:13
风哥开个班吧

击剑班??
作者: jy896009    时间: 2022-2-19 13:22
试试、。。。。。。。。。
作者: 晓月Am    时间: 2022-2-19 13:33
感谢分享了
作者: oycs429    时间: 2022-2-19 13:34
楼主辛苦了,谢谢楼主发的好帖子~
作者: huihui0794    时间: 2022-2-19 14:11
下来看看看
作者: 凌lingy    时间: 2022-2-19 15:53
6666666666666666
作者: 我来了嘿嘿嘿    时间: 2022-2-19 16:39
感谢分享
作者: xzh2lp    时间: 2022-2-19 16:47
学习一下
作者: fanfall    时间: 2022-2-19 17:23
内核实现修改进程PID以及易语言调用
作者: 重大开源    时间: 2022-2-19 18:31
如果大家看完不错对你们有帮助的话就点点好评给个赞吧,有什么问题可以在下方留言一起讨论~
作者: 淡淡香草味    时间: 2022-2-19 19:16
修改PID后。如果不还原。关闭进程会蓝屏的
作者: 心理疾病患者    时间: 2022-2-19 19:19
牛皮6666我的宝贝
作者: gmq460412232    时间: 2022-2-19 19:22
这个是真的牛,,感谢大佬的分享
作者: 740949011    时间: 2022-2-19 19:36
不错不错,谢谢分享!!!!
作者: 医生很爱希尔薇    时间: 2022-2-19 19:47
66666666666666
作者: mr1998    时间: 2022-2-19 20:30
改进程pid用在哪方面呢?知道的大佬能发指点一下。
作者: qq1529195115    时间: 2022-2-19 20:48
内核实现修改进程PID以及易语言调用
作者: 小时候的幽梦    时间: 2022-2-19 21:09
貌似很厉害
作者: 梦想ol    时间: 2022-2-19 21:53
感谢分享,很给力!~
作者: 落风    时间: 2022-2-19 22:24
感谢分享!!
作者: a393518964    时间: 2022-2-20 00:01
谢谢分享
作者: 香菇蓝瘦    时间: 2022-2-20 01:23
谢谢分享
作者: F17各种绝    时间: 2022-2-20 01:24
太屌了吧!
作者: 784570816    时间: 2022-2-20 02:21
666666666666666666666666
作者: static007    时间: 2022-2-20 02:23

作者: freeocean    时间: 2022-2-20 04:15
感谢分享
作者: 1032214947    时间: 2022-2-20 04:51
        新技能已get√
作者: zmalskqp    时间: 2022-2-20 07:04
谢谢分享
作者: samny    时间: 2022-2-20 07:10
感谢分享
作者: fanhyluo    时间: 2022-2-20 09:28
感谢分享
作者: cwgwww    时间: 2022-2-20 09:35
感谢分享,很给力!~
作者: zichenhung    时间: 2022-2-20 09:40

作者: snufgpl    时间: 2022-2-20 09:50
很牛逼很牛逼
作者: jxxypxh    时间: 2022-2-20 10:02
来学习下,谢谢




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4