Icesword 是如何列出隐藏进程
发布时间:2023-12-12 21:07:58
icesword 是通过 PspCidTable 这个表来遍历进程的, PspCidTable 是一个没有被 ntoskrnl.exe 导出的。这就涉及到如何定位
PspCidTable 的问题。icesword 是通过搜索特征串的方式定位 PspCidTalbe. PspCidTable 是一个 HANDLE_TALBE 结构.
PsLookupProcessByProcessId 函数中会引用 PspCidTalbe 变量。icesword 从 PsLookupProcessByProcessId 函数的前几十个字节
内搜索 PspCidTalbe 变量。在icesword 里面是不能调试的即使是用 windbg , softice,syser 调试器下断点调试,也是断不住的。
当然了你也不能用调试器调试,因为 icesword.exe 会在一个timer 中不停的重新设置 int 1,int 3 的中断处理函数。设置成
windows ntoskrnl.exe 中的缺省处理函数。即使你用硬件断点寄存器也是不管用的。那有的人就会说既然设置成 windows ntoskrnl.exe
中的缺省处理函数就可以使用 windbg 双机调试.icesword 也做了处理,icesword 会通过 KdDebuggerEnabled 变量判断是否允许内核
调试。如果允许调试的话. icesword 会调用 KdDisableDebugger 函数禁止内核调试。
第一部分
(写的太细了,因为怕被 rootkIT 的作者利用.所以就把第一部分给去掉了.如果需要可以单独和我联系)
写第二部分
这里顺便在说两个分析 icesword 中遇到的反调试小陷阱 这里把代码片段列出来,希望作者原谅
.text:000xxxF0 mov [ebp+IoControlCode], eax
.text:000xxxF3 mov eax, [esp+5Ch-6Ch] ; 反调试代码
.text:000xxxF7 push eax
.text:000xxxF8 mov eax, [esp+60h-6Ch]
.text:000xxxFC pop ebx
.text:000xxxFD cmp eax, ebx
.text:000xxxFF jz short loc_1240B ; 如果没有被调试则会跳转
.text:000xxx01 mov eax, 200EDBh
.text:000xxx06 not eax
.text:000xxx08 push eax
.text:000xxx09 pop edi
.text:000xxx0A stosd
.text:000xxxF3 mov eax, [esp+5Ch+6Ch] 当单步执行到这条指令或者在这条指令上设置断点的时候,因为当调试器在这条指令上弹出的时候会
用到被调试程序的堆栈来保存 EFLAGS,CS,EIP, (如果 int 1,或 int 3 处理函数用任务门就可以解决这个问题。)例如 当代码执行到这条指令时
ESP = 805E4320h 执行完这条指令是 eax 的值为 [ESP+5Ch-6Ch]=[ESP-10h]=[805E4320h-10h]=[805E4310h] 的值。
当单步执行到 .text:000xxxF8 mov eax, [esp+60h-6Ch] 指令的时候 ESP=805E432Ch 以为其中入栈了一个 eax 所以 ESP=805E432Ch,
执行完 .text:000xxxF8 mov eax, [esp+60h-6Ch] 条指令的时候 eax = [ESP+60h-6Ch]=[ESP-Ch]=[805E432Ch-Ch]=[805E4310h]
如果不调试的情况下 读的是同一个地址的值,所以两个值比较应该是相同的 也就是 .text:000xxxFD cmp eax, ebx 这条指令的比较结果
应该是相同的。这个指令 .text:000xxxFF jz short loc_1240B 执行后直接跳转到。
如果是被调试器调试的情况下 .text:000xxxFF jz short loc_1240B 不会跳转。 如果不跳转时下面的代码 会覆盖掉系统的当前 ETHREAD
指针。接下来在调用很多系统函数都会导致系统崩溃,并且是崩溃到系统模块里面,这样给你定位错误带来误导。哈哈
.text:000xxx68 push 1 ; Alignment
.text:000xxx6A push 40h ; Length
.text:000xxx6C push CurrentEProcessObject ; Address
.text:000xxx72 call ds:ProbeForRead
这里是故意做个异常来实现跳转。如果你在 .text:000xxx72 call ds:ProbeForRead 指令上单步执行的时候调试器会跑飞了,
也就是说从调试器退出了,没有继续跟踪下去。
第三部分
接下来说我们的 PspCidTable 我们找到了 PspCidTable 变量后, PspCidTable [这个 HANDLE_TABLE 的句柄表中,保存着所有进程和线程对象的指针。
PID(进程ID)和 ThreadID(线程ID)就是在这个句柄表中的索引。这个 HANDLE_TABLE 不属于任何进程,也没有链在 HANDLE_TABLE 链上。全局变量
PspCidTable 中是指向这个 HANDLE_TABLE 的指针。这个 HANDLE_TABLE 还有一点和别的 HANDLE_TABLE 都不同,就是它的 HANDLE_TABLE_ENTRY 中的
第一个32bIT 放着的是对象体指针(当然需要转换)而不是对象头指针(对象指针就是对象体指针)。] (特别注明 在[]的话不是俺写的是在网上抄来的
这里特别感谢 “JIURL玩玩Win2k进程线程篇 HANDLE_TABLE” 文章的作者:JIURL )
我们之要想到办法遍历这个 PspCidTable 句柄表就可以遍历到系统的所有进程。icesword 为了遍历这个表他使用了系统为公开的 ntoskrnl.exe
的导出函数 ExEnumHandleTable 。
icesword 定位到 ntoskrnl.exe 导出的 ExEnumHandleTable函数。
这个函数是未公开的函数。
这个函数的函数原形可能是 VOID STDCALL ExEnumHandleTable (PULONG HandleTable, PVOID Callback, PVOID Param, PHANDLE Handle OPTIONAL);
其中的参数 PULONG HandleTable 就可以用 PspCidTable 做参数.
PVOID Callback 的类型为 bool (*EXENUMHANDLETABLECALLBACK)(HANDLE_TALBE_ENTRY*,DWORD PID,PVOID Param) 函数指针。
PVOID Param 参数就是传送给回调函数的参数。
PHANDLE Handle OPTIONAL 这个参数俺还没搞懂什么意思。在说俺也用不到他,所以也不管他了随他去吧。
当调用 ExEnumHandleTable 函数的时候 函数在每次枚举到表中的一个句柄时都会调用一次回调函数。
当调用的 Callback 回调函数返回值为 0 时继续枚举句柄表,如果返回 1 时则停止枚举。


猜你喜欢
- 使用Win10系统电脑的过程中,很多人都会选择使用系统自带的应用商店进行下载安装各种应用软件。但是有部分小伙伴的Win10系统电脑的应用商店
- 在PPT放映幻灯片的过程中,为了便于观众按照节奏来观看幻灯片,用户可以根据需要控制幻灯片的放映,如切换幻灯片、更改屏幕颜色、对幻灯片中重点内
- 微软今天推送了首个Xbox One版Win10创造者更新预览版,下文小编为大家带来了Xbox One版Win10创造者更新预览版已知问题汇总
- 随着电脑的使用,越来越多的垃圾文件占用着内存,想要给C盘做个大扫除,但又怕删错了重要文件,导致系统的无法正常运行。那么Win10系统电脑C盘
- 当我们使用Win 10系统时,桌面图标突然消失了,在这种情况下,不要担心,我可以尝试探索解决问题。现在编辑器将告诉您如何在Win 10桌面图
- Win10的锁屏界面与此前的Win8.1相差不多,也都支持在锁屏界面显示应用状态,不过在设置方法上有所不同。那么Win10如何查看和添加会在
- 大神码字软件中的强制锁定是一个鸡肋是功能,如果我们大神码字锁定了怎么办?接下来我们一起往下看看大神码字解除强制锁定的方法吧。方法步骤1、大家
- 百度音乐怎么关闭音效增强?百度音乐是一款音乐播放器,在音乐播放器中有个非常好用的音效增强功能,如果我们想要关闭该功能,要怎么进行操作呢?下面
- Word2016怎么绘制带有阴影的三维图形?Word2016中想要绘制三维效果的立体图形并添加阴影,该怎么设置呢?下面我们就来看看详细的教程
- 小伙伴们都知道,我们日常使用的各种软件,各种电子产品的更新换代速度非常地快,版本越高,功能也就越强大。同样的,我们经常使用的PowerPoi
- 制作好的表格文件怎么设置打印呢?下面小编就为你介绍wps表格怎样去设置打印的方法啦!wps表格设置打印的方法:首先点击左上角的“wps表格”
- 余切函数是正切函数的倒数,表示为“1/tan()”。那么Excel怎么使用余切函数?对于很多朋友并不是很清楚,所以下面小编就为大家详细介绍E
- 欢迎观看illustrator教程,小编带大家学习 illustrator 的基本工具和使用技巧,了解如何在 illustrator 中使用
- 在PPT中也可以把节折叠起来,折叠节信息就是把一个节下面的所有幻灯片的浏览信息隐藏起来,通过折叠节信息直接列出演示文稿中的主要架构,ppt2
- 从其他地方复制过来,或者是在编辑过程的暂时留空,使文档中多处留有空行,如果我们想要在wps文字中清除多余的空行,应该如何操作呢?下面就让小编
- win8系统自带的输入法都是内置有英文输入法的,用不到英文输入法的用户可以自己选择卸载删除掉。那么如何删除?下面小编就给大家带来win8系统
- Word文档中插入页码是办公的基本操作,利用微软Office所提供的强大页码功能,我们可以实现丰富多样的页码格式。那么在Word文档中怎么插
- 我们在使用wps文字办公的时候,往往会遇到要删除一些多余页的情况,熟练地掌握删除页面,对于每一个员工来说都是最基础的技能,那么接下来下面小编
- excel规划求解在哪里,你知道吗?如果你打开excel软件,找不到excel规划求解功能,就需要根据下面的操作进行设置。先试试按下Alt+
- 闪存盘和移动卡就被赋予了一项新功能:借助 ReadyBoost 提升系统性能;对于好的功能,Windows 7向来是承袭并发展的,Ready