登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 306|回复: 0

[源码] 进程保护防止在任务管理器中结束【纯源码不用DLL不用驱动】

[复制链接]

42

主题

-7

回帖

48

积分

网站编辑

积分
48
发表于 2024-12-27 21:27:37 | 显示全部楼层 |阅读模式
.版本 2

.程序集 窗口程序集1
.程序集变量 ShellHook
.程序集变量 old_

.子程序 __启动窗口_创建完毕

开启 ()

.子程序 开启
.局部变量 hwnd
.局部变量 pid_anti
.局部变量 pid_pro

hwnd = FindWindow (“#32770”, “Windows 任务管理器”)
.如果真 (hwnd > 0)
    GetWindowThreadProcessId (hwnd, pid_anti)
    pid_pro = GetCurrentProcessId ()
    .如果真 (At_OP (pid_anti, pid_pro))
        标签1.标题 = “保护成功,现在可以尝试结束我,PID:” + 到文本 (pid_pro) + “,EXE:” + 取执行文件名 ()
    .如果真结束

.如果真结束

ShellHook = RegisterWindowMessageA (“SHELLHOOK”)
RegisterShellHookWindow (取窗口句柄 ())

old_ = GetWindowLongA (取窗口句柄 (), -4)
SetWindowLong (取窗口句柄 (), -4, 到整数 (&窗口处理))

.子程序 窗口处理, 整数型
.参数 hwnd, 整数型
.参数 msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 pid_ant
.局部变量 hwnd_, , 静态
.局部变量 pid_pro

.如果真 (msg = ShellHook)
    .判断开始 (wParam = 1)
        .如果真 (取窗口标题_ (lParam) = “Windows 任务管理器”)
            hwnd_ = lParam
            GetWindowThreadProcessId (lParam, pid_ant)
            pid_pro = GetCurrentProcessId ()
            .如果真 (At_OP (pid_ant, pid_pro))  ' pid_pro 可换成自己要保护的进程PID
                标签1.标题 = “保护成功,现在可以尝试结束我,PID:” + 到文本 (pid_pro) + “,EXE:” + 取执行文件名 ()
            .如果真结束

        .如果真结束

    .判断 (wParam = 2)
        .如果真 (lParam = hwnd_)
            标签1.标题 = “进程已退出”
        .如果真结束

    .默认

    .判断结束

.如果真结束
返回 (CallWindowProcA (old_, hwnd, msg, wParam, lParam))

.子程序 取窗口标题_, 文本型
.参数 hWnd, 整数型
.局部变量 buf, 文本型

buf = 取空白文本 (256)
GetWindowText (hWnd, buf, 256)
返回 (buf)

.子程序 进程名取PID, 整数型
.参数 tx, 文本型
.局部变量 hSnapShot, 整数型
.局部变量 End, 整数型
.局部变量 buffer, PROCESSENTRY32

hSnapShot = CreateToolhelp32Snapshot (2, 0)
buffer.dwSize = 296
End = Process32First (hSnapShot, buffer)
.判断循环首 (End ≠ 0)
    .如果真 (到小写 (tx) = 到小写 (到文本 (buffer.szExeFile)))
        CloseHandle (hSnapShot)
        返回 (buffer.th32ProcessID)
        跳出循环 ()
    .如果真结束
    End = Process32Next (hSnapShot, buffer)
.判断循环尾 ()
CloseHandle (hSnapShot)
返回 (-1)

.子程序 At_OP, 逻辑型
.参数 pid_ant, 整数型
.参数 pid_pro_, 整数型
.局部变量 Asm_1, 字节集, , , 27
.局部变量 Asm_2, 字节集
.局部变量 tmp, 字节集
.局部变量 Asm, 字节集
.局部变量 Jmp, 字节集
.局部变量 addr_Func, 整数型
.局部变量 addr_buf, 整数型
.局部变量 hPro, 整数型
.局部变量 pid_pro

hPro = OpenProcess (2035711, 0, pid_ant)
.如果真 (hPro = 0)
    返回 (假)
.如果真结束

pid_pro = pid_pro_

addr_Func = GetProcAddress (LoadLibraryA (“Kernel32”), “OpenProcess”)
.' 如果真 (addr_Func = 0)
    ' 返回 (假)
.如果真结束
addr_buf = VirtualAllocEx (hPro, 0, 27, 4096, 64)
.如果真 (addr_buf = 0)
    返回 (假)
.如果真结束
tmp = 取空白字节集 (4)
RtlMoveMemory_字节集 (tmp, addr_buf - addr_Func - 5, 4)  ' 计算跳转偏移地址
Jmp = { 233 } + tmp
tmp = 取空白字节集 (4)
RtlMoveMemory_字节集 (tmp, pid_pro, 4)
Asm_1 = { 139, 255, 85, 139, 236, 129, 125, 16 } + tmp + { 15, 133 }
Asm_2 = { 184, 0, 0, 0, 0, 93, 194, 12, 0 }
tmp = 取空白字节集 (4)
RtlMoveMemory_字节集 (tmp, addr_Func - addr_buf - 13, 4)  ' 计算 回跳 偏移地址
Asm_2 = tmp + Asm_2
Asm = 取空白字节集 (27)
Asm = Asm_1 + Asm_2
WriteProcessMemory_字节集 (hPro, addr_buf, Asm, 27, 0)
WriteProcessMemory_字节集 (hPro, addr_Func, Jmp, 5, 0)
CloseHandle (hPro)
返回 (真)
' translate by 泆寒

.子程序 __启动窗口_将被销毁

SetWindowLong (取窗口句柄 (), -4, old_)
DeregisterShellHookWindow (取窗口句柄 ())


完整代码: 进程保护.rar (4.36 KB, 下载次数: 0)


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

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-1-18 13:08 , Processed in 0.079892 second(s), 29 queries .

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表