吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7258|回复: 14
收起左侧

[C&C++ 转载] NSudo 恶魔模式 - 一个面向希望无视文件和注册表访问检查的开发者的解决方案

  [复制链接]
Mouri_Naruto 发表于 2020-1-16 20:28
本帖最后由 Mouri_Naruto 于 2020-1-17 00:44 编辑

由于曾经在吾爱论坛发布的 NSudo 帖子因为我去年一年都没有更新 NSudo 而被锁帖,而且 NSudo 恶魔模式并不像 NSudo 是针对 WIndows 爱好者和脚本开发者的工具,所以请理解我另开一个帖子。

NSudo 恶魔模式介绍

NSudo 恶魔模式 (NSudo Devil Mode) 是为想无视文件和注册表操作权限检查的开发者量身定做的一个用起来还算优雅的解决方案。

其原理是使用开源的 Microsoft Detours 库对 Windows NT 内核的文件和注册表相关的系统调用进行 Inline Hook 以传入选项让开发者基本不用修改自己的实现也能充分的利用管理员权限所提供的特权,这也使得开发者只需要把 NSudo 恶魔模式的动态链接库加载入自己的以管理员身份运行的应用进程的地址空间内即可启用 NSudo 恶魔模式。

由于 NSudo 恶魔模式可以在大部分情况下替代类似 NSudo 的工具,于是 NSudo 未来的功能会变得更加专业向。毕竟作为 NSudo 的作者的我可不希望 NSudo 就这么轻易地被替代掉。

当然,由于 NSudo 恶魔模式属于 Dism++ 春哥附体的后续版本,于是未来 Dism++ 的春哥附体的实现会被替换成 NSudo 恶魔模式以帮助我更好的重构 Dism++ 的实现。当然,NSudo 也会支持以恶魔模式运行应用。

NSudo 恶魔模式的起源、命名和意义

正如上文所说,NSudo 恶魔模式属于 Dism++ 春哥附体的后续版本,而且你也能在本文中了解 NSudo 恶魔模式和 Dism++ 春哥附体的区别。

命名为 NSudo 恶魔模式的灵感来源是《入间同学入魔了》的被蛋爷改造过的拥有四个档位的入间手中的“恶食戒指”。

最开始听到 MSMG Toolkit 的作者希望我能提供 NSudo 的 SDK 方便他进行二次开发的时候,我试着做了基于 COM 接口的 NSudo Shared Library 即 NSudoAPI,但是由于 NSudoAPI 暴露的细节太多,如果不是对 Windows 安全特性足够了解的开发者是很难驾驭的。于是我觉得得换个方向,于是就做了 NSudo 恶魔模式。

NSudo 恶魔模式挂钩的 Windows NT 内核系统调用列表

内核调用名称 起源
NtCreateKey 在 Dism++ 春哥附体中引入
NtCreateKeyTransacted 在 NSudo 恶魔模式中引入
NtOpenKey 在 Dism++ 春哥附体中引入,在 NSudo 恶魔模式中得到增强
NtOpenKeyTransacted 在 NSudo 恶魔模式中引入
NtOpenKeyEx 在 Dism++ 春哥附体中引入
NtOpenKeyTransactedEx 在 NSudo 恶魔模式中引入
NtCreateFile 在 Dism++ 春哥附体中引入
NtOpenFile 在 Dism++ 春哥附体中引入

如何使用 NSudo 恶魔模式

调用 LoadLibrary 加载 NSudo 恶魔模式的动态链接库以启用 NSudo 恶魔模式,调用 FreeLibrary 释放 NSudo 恶魔模式的动态链接库的 HMODULE 句柄即可禁用 NSudo 恶魔模式。

当然,你的应用需要在管理员权限下运行,相对于原本要求 SYSTEM 和 TrustedInstaller 权限的情况下其实好了不少。

注:如果你有本事把 NSudo 恶魔模式远程注入到以管理员或者更高权限的进程内(譬如 7-Zip),也能为该进程赋能(无视文件和注册表的权限)。

下面提供一个使用 C# 编写的测试用例。(遍历 C:\System Volume Information 目录的内容,当启用 NSudo 恶魔模式的情况下可以正常显示,禁用后会抛出文件夹拒绝访问的异常。)

using System;
using System.IO;
using System.Runtime.InteropServices;

namespace Demo
{
    class Program
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
        static extern IntPtr LoadLibrary(string lpLibFileName);

        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool FreeLibrary(IntPtr hLibModule);

        static void Main(string[] args)
        {
            IntPtr NSudoDevilModeModuleHandle = LoadLibrary(
                @"E:\GitHub\M2Team\NSudo\Output\Release\x64\NSudoDevilMode.dll");

            {
                DirectoryInfo Folder = new DirectoryInfo(
                @"C:\System Volume Information");

                foreach (FileInfo File in Folder.GetFiles())
                {
                    Console.WriteLine(File.FullName);
                }
            }

            FreeLibrary(NSudoDevilModeModuleHandle);

            {
                DirectoryInfo Folder = new DirectoryInfo(
                @"C:\System Volume Information");

                foreach (FileInfo File in Folder.GetFiles())
                {
                    Console.WriteLine(File.FullName);
                }
            }

            Console.ReadKey();
        }
    }
}

屏幕截图

When I want to rename regedit.png
未启用 NSudo 恶魔模式

When I using NSudo Devil Mode.png
已启用 NSudo 恶魔模式

下载

最新版本:NSudo Devil Mode 8.0 PreAlpha 3 (和 NSudo 版本同步)
源代码:https://github.com/M2Team/NSudo (NSudo 代码仓库根目录下有一个叫 NSudoDevilMode 的目录就是了)
二进制:由于 NSudo 8.0 还未完工,于是我选择以附件的形式发布。 NSudoDevilMode_8.0_PreAlpha3_V2.7z (292.15 KB, 下载次数: 149)

M2-Team

免费评分

参与人数 6威望 +1 吾爱币 +27 热心值 +6 收起 理由
苏紫方璇 + 1 + 20 + 1 这么好的帖子原来我为什么没有发现
610100 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
antclt + 1 + 1 谢谢@Thanks!
InternetDog + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zgzxp + 1 + 1 用心讨论,共获提升!
FleTime + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Mouri_Naruto 发表于 2020-1-17 00:41
doufan 发表于 2020-1-17 00:36
好牛的名字,感觉一时半该学不会的样子。

名字的确有些……

只不过使用方法倒是很简单,只要会用 LoadLibrary 和 FreeLibrary 这两个 API 即可。
 楼主| Mouri_Naruto 发表于 2020-3-9 17:54
dunniu 发表于 2020-3-8 09:33
请问这东西的功能怎么集成到totalcmd里边使用!!

写一个普通的远程注入程序就行
 楼主| Mouri_Naruto 发表于 2020-1-16 20:44
pojie5201314 发表于 2020-1-16 20:58
谢谢分享!
AsuraSong 发表于 2020-1-16 20:59
谢谢楼主分享,留帖备用
23070205 发表于 2020-1-16 21:28
支持大神
qn542231788 发表于 2020-1-16 21:48
大神厉害啊
doufan 发表于 2020-1-17 00:36
好牛的名字,感觉一时半该学不会的样子。
头像被屏蔽
lixia2018 发表于 2020-1-17 10:35
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| Mouri_Naruto 发表于 2020-1-17 18:39
吐槽:好像没人顶帖啊……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-13 06:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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