谁有易语言隐藏进程代码

如题所述

版本 2
.子程序 隐藏进程, 逻辑型, 公开
.参数 pid, 整数型, 可空, 空为隐藏本进程,可输入其它进程PID
.局部变量 eprocess, 长整数型
.局部变量 hand, 整数型
.局部变量 temp, 字节集
.局部变量 fw_, 长整数型
.局部变量 bw_, 长整数型
.局部变量 fw, 字节集
.局部变量 bw, 字节集
.如果 (是否为空 (pid))
hand = OpenProcess (2075311, 0, GetCurrentProcessId ())
eprocess = 取进程EProcess (GetCurrentProcessId ())
CloseHandle (hand)
.否则
eprocess = 取进程EProcess (pid)
.如果结束
.如果真 (eprocess = 0)
返回 (假)
.如果真结束
temp = 读物理内存 (eprocess + 136, 4)
.如果真 (temp = { })
返回 (假)
.如果真结束
fw_ = 取字节集数据 (temp, #长整数型, )
fw = temp
temp = 读物理内存 (eprocess + 140, 4)
.如果真 (temp = { })
返回 (假)
.如果真结束
bw_ = 取字节集数据 (temp, #长整数型, )
bw = temp
.如果真 (写物理内存 (fw_ + 4, bw) = -1)
返回 (假)
.如果真结束
.如果真 (写物理内存 (bw_, fw) = -1)
返回 (假)
.如果真结束
返回 (真)

//读物理内存
.版本 2
.子程序 读物理内存, 字节集
.参数 地址, 长整数型
.参数 长度, 整数型, , <=4096
.局部变量 MEMORY_CHUNKS, 字节集
.局部变量 ret, 字节集
.局部变量 retlen, 整数型
ret = 取空白字节集 (长度)
MEMORY_CHUNKS = 取字节集左边 (到字节集 (地址), 4) + 到字节集 (取指针_字节集 (ret, ret, 0)) + 到字节集 (长度)
NtSystemDebugControl (#SysDbgReadVirtualMemory, MEMORY_CHUNKS, 12, 0, 0, retlen) ' 12为MEMORY_CHUNKS的长度
.如果真 (retlen ≤ 0)
ret = { }
.如果真结束
返回 (ret)

//写物理内存
.版本 2
.子程序 写物理内存, 整数型
.参数 地址, 长整数型
.参数 数据, 字节集, , <=4096
.局部变量 MEMORY_CHUNKS, 字节集
.局部变量 ret, 整数型
.局部变量 retlen, 整数型
.局部变量 len, 整数型
len = 取字节集长度 (数据)
MEMORY_CHUNKS = 取字节集左边 (到字节集 (地址), 4) + 到字节集 (取指针_字节集 (数据, 数据, 0)) + 到字节集 (len)
NtSystemDebugControl (#SysDbgWriteVirtualMemory, MEMORY_CHUNKS, 12, 0, 0, retlen) ' 12为MEMORY_CHUNKS的长度
.如果真 (retlen ≤ 0)
ret = -1
.如果真结束
返回 (ret)

//取进程EProcess
.版本 2
.子程序 取进程EProcess, 长整数型
.参数 pid, 整数型
.局部变量 ret
.局部变量 信息块, 字节集
.局部变量 retlen
.局部变量 temp, SYSTEM_HANDLE_INFORMATION
.局部变量 信息块指针偏移
.局部变量 number
.局部变量 结果, 长整数型
retlen = 1
.循环判断首 ()
信息块 = 取空白字节集 (retlen)
ret = ZwQuerySystemInformation (#system_handle_infomation, 信息块, retlen, 0)
.如果 (ret = #STATUS_INFO_LENGTH_MISMATCH)
retlen = retlen × 2
信息块 = 取空白字节集 (retlen)
.否则
跳出循环 ()
.如果结束
.循环判断尾 (ret = #STATUS_INFO_LENGTH_MISMATCH)
信息块指针偏移 = 取指针_字节集 (信息块, 信息块, 0)
RtlMoveMemory3 (number, 信息块指针偏移, 4)
信息块指针偏移 = 信息块指针偏移 + 4
.计次循环首 (number, )
RtlMoveMemory2 (temp, 信息块指针偏移, 16)
.如果真 (pid = temp.ProcessId 且 temp.ObjectTypeNumber = 5)
返回 (十六文本至长整数 (取十六进制文本 (temp.Object)))
.如果真结束
信息块指针偏移 = 信息块指针偏移 + 16
.计次循环尾 ()
返回 (0)
温馨提示:答案为网友推荐,仅供参考