草庐IT

内核安全

全部标签

windows - 在 Windows 内核地址空间中将虚拟地址转换为物理地址

对于Windowsx64上的内核空间虚拟地址(VA>0xFFFF000000000000),从虚拟地址到物理地址的转换是如何工作的?我知道它如何用于用户空间虚拟地址:VA由多个表中的多个索引组成,第一个(PML4)位于存储在CR3寄存器中的物理地址(和过程DirectoryTableBase在WinDbg中也称为“DirBase”)。我猜这与内核空间VA类似,但是它们的PML4表在哪里?我的目标是在不依赖DbgEng/WinDbgAPI的情况下解析内核故障转储。我已经能够分辨出每个内存页在文件中的位置,但转储文件中的大多数字段都在内核空间VA中表示。该文件头中的DirectoryTab

Windows 内核驱动程序 : Does the "HANDLE UniqueThread" in "CLIENT_ID CreatingThreadId" is the same during the process loading?

我正在尝试编写一个APCdll注入(inject)驱动程序,我找到了this示例并考虑根据我的需要对其进行修改。在我理解了代码之后,我想到了如何修改它(我的问题由此而来)。在code,作者使用了PsLookupThreadByThreadId接收指向目标进程的ETHREAD结构的引用指针。PsLookupThreadByThreadId(pSpi->Threads[0].ClientId.UniqueThread,&Thread)但要得到SYSTEM_THREAD_INFORMATION对于UniqueThreadhandle,他用过ZwQuerySystemInformation我想

windows - 需要从命令行运行 Windows 安全对话框

您知道,当您输入ctrl-alt-del或ctrl-alt-end时通常会得到什么。除了在这种情况下我不能按下那些键,但我想启动那个盒子。具体来说,我希望能够从命令行中调出更改密码对话框。谢谢 最佳答案 这里是RaymondChen给出的答案的扩展。我展示了如何从批处理文件调用WindowsSecurity。请注意,它只有在通过终端session连接到Microsoft终端服务器时才能正常工作。@if(@CodeSection==@Batch)@then@echooff::Seehttps://gist.github.com/Dav

c# - 无法监控安全事件日志

我有这个代码:{EventLogev=newEventLog("Security");ev.EntryWritten+=newEntryWrittenEventHandler(ev_EntryWritten);}staticvoidev_EntryWritten(objectsender,EntryWrittenEventArgse){log_to_file("ev_EntryWritten");}但我没有收到任何安全事件。该程序在XPSP3上作为Windows服务运行。我错过了什么? 最佳答案 确保设置EnableRaisingE

javascript - 有没有一种安全的方法可以使用 JavaScript 验证 JSON 输入?

我正在从Windows7小工具中提取一些外部JSON数据,这基本上是一段在具有高安全权限的InternetExplorer下运行的JavaScript。因此,我想确保JSON格式正确并且不是恶意的。执行此操作的好方法是什么? 最佳答案 JSON是JavaScript。因此,您可以像验证JavaScript一样静态地验证JSON。您担心通常可用于验证JavaScript的eval方法,并且您非常明智地避免了这种方法。如果它是恶意的并且你执行验证,那么你已经搞砸了。JSLint是一个很好的工具。请参阅StackOverflow问题IsJ

windows - 在 Windows 编程中混合使用 '/' 和 '\' 作为目录路径是否安全?

我碰巧有一个目录路径,例如“c:\a\b/c/d\e”,但它与boost库配合得很好。我不知道在Windows中是否可以混用“\”和“/”。在Windows中是否允许? 最佳答案 documentation表示可以在WindowsAPI函数中使用正斜杠,但在完成任何操作之前它们将转换为反斜杠。我想C运行时也会这样做(尽管我现在找不到引用资料),所以无论您调用什么文件相关的函数,您都应该没问题。 关于windows-在Windows编程中混合使用'/'和'\'作为目录路径是否安全?,我们在

windows - 获取 XP 64 位系统上的内核数

他,我写了一个函数,它应该给我一个Windows系统的核心数。它适用于除XP64位以外的所有系统。这是我获取信息的方式:$objWMIItems=$objWMIService.ExecQuery("SELECT*FROMWin32_Processor")If(0==IsObj($objWMIItems))Then;~errorhandlingElseFor$objElementIn$objWMIItems$nCoreNumber=$objElement.NumberOfCoresNext关于“NumberOfCores”,Microsoft的MSDN页面告诉我“WindowsServe

windows - linux/windows内核模块中的无限循环

在ubuntu10.04linux内核中,如果我insmod一个运行的模块while(1);在init_module部分,整个系统停止。但是,如果我在Windows7中加载一个sys文件在DriverEntry部分运行while(1);,系统变慢但仍然有效。谁能解释一下为什么两个系统不同内核内部发生了什么?...我认为在第一种情况下(init_module中的无限循环),系统没有理由停止。因为即使我在init_module中制作while(1);,它也在运行在insmod用户应用程序的上下文中。所以流程无限循环必须通过硬件中断信号进行调度。这只是我的看法,如果我错了我想知道细节...

regex - 我可以安全地使用哪些字符来表达正则表达式中的自定义含义

我的应用程序中的用户将使用正则表达式来指定应用程序应该使用哪些文件以及应该排除哪些文件,例如包含匹配foo.*\.txt的文件但是有时过滤器需要使用只能在运行时被应用程序知道的值。例如,如果过滤器是foo[SPECIALVALUEHERE].*\.txt而特殊值恰好是bar,则实际过滤器将是foobar.*\.txt哪些字符可以用来指定[SPECIALVALUEHERE]?我想为了避免歧义,它不需要是正则表达式中的特殊/保留字符,也不是文件中会出现的字符。客户的另一个要求是它必须只有一个(或最多两个或三个)字符,所以像%SPECIALVALUE%这样的东西是不可能的。我可以为此目的使用

windows - 内核模式驱动程序和用户模式应用程序之间的双向通信?

我需要在内核模式WFP驱动程序和用户模式应用程序之间进行双向通信。驱动程序通过将URL传递给应用程序来启动通信,然后应用程序对该URL进行分类(娱乐、新闻、成人等)并将该类别传递回驱动程序。驱动程序需要知道过滤器功能中的类别,因为它可能会根据该信息阻止某些网页。我在应用程序中有一个线程正在发出I/O请求,驱动程序将使用URL和GUID完成,然后应用程序会将类别写入该GUID下的注册表中,驱动程序将在其中获取它。不幸的是,正如驱动程序验证者指出的那样,这是不稳定的,因为Zw注册表函数必须在PASSIVE_LEVEL运行。我正在考虑用映射内存缓冲区尝试同样的事情,但我不确定中断要求是什么。