变量名 | 类 型 | 静态 | 数组 | 备 注 |
系统进程 | 进程信息 | | 0 |
系统进程数 | 整数型 | | |
父进程PID | 整数型 | | |
explorerPID | 整数型 | | |
n | 整数型 | | |
系统进程 =
取系统进程列表 ()系统进程数 =
取数组成员数 (系统进程
)
计次循环首 (系统进程数, n
)
如果真 (系统进程
[n
].进程名称 =
取执行文件名 ())
父进程PID = 系统进程
[n
].父进程标识符
跳出循环 ()

计次循环尾 ()
计次循环首 (系统进程数, n
)
如果真 (系统进程
[n
].进程名称 =
“explorer.exe”)explorerPID = 系统进程
[n
].进程标识符
跳出循环 ()

计次循环尾 ()
判断 (父进程PID = explorerPID
)返回 (假)
返回 (真)[/e
[DISCUZ_CODE_0
]来看看如果发现父进程不对 你懂得
OK 这两种方法对于现在的OD完全无效
stronOD的强大之处大家应该都懂 但是 OD会用驱动
所以我们就可以通过遍历驱动名来确定是否有OD
所以大概代码就是
[e=1
].版本 2
变量名 | 类 型 | 静态 | 数组 | 备 注 |
驱动数据 | 文本型 | | 0 |
驱动数据大小 | 整数型 | | |
驱动路径名称 | 文本型 | | 0 |
驱动路径名称大小 | 整数型 | | |
驱动名称 | 文本型 | | |
大小 | 整数型 | | |
原地址 | 整数型 | | |
目的地址 | 内存地址指针 | | |
n | 整数型 | | |
i | 整数型 | | |
j | 整数型 | | |
NtQuerySystemInformation (11, 0, 0, 大小
)原地址 =
申请内存 (大小 × 2,
真)NtQuerySystemInformation (11, 原地址, 大小 × 2, 大小
)RtlMoveMemory (目的地址, 原地址,
GlobalSize (目的地址
))
驱动数据大小 = 目的地址.大小
计次循环首 (驱动数据大小, n
)原地址 = 原地址 + 71 × 4
RtlMoveMemory (目的地址, 原地址,
GlobalSize (目的地址
))
加入成员 (驱动路径名称,
到文本 (目的地址.信息.名称
))
计次循环尾 ()驱动路径名称大小 =
取数组成员数 (驱动路径名称
)
计次循环首 (驱动路径名称大小, n
)驱动名称 =
取文本右边 (驱动路径名称
[n
],
取文本长度 (驱动路径名称
[n
]) -
倒找文本 (驱动路径名称
[n
],
“\”, ,
假))
如果真 (驱动名称 = 驱动名
)返回 (真)


计次循环尾 ()返回 (假)