我正在报告从本机系统API收集的一些信息.(我知道这很糟糕......但是我得到的信息是我无法得到的,而且如果/当这个时间到来时我不得不更新我的应用程序.)
本机API返回本地路径名,所看到的ob,即\SystemRoot\System32\Ntoskrnl.exe,或\??\C:\Program Files\VMWare Workstation\vstor-ws60.sys.
我可以替换常见的前缀,即
std::wstring NtPathToWin32Path( std::wstring ntPath )
{
if (boost::starts_with(ntPath, L"\\\\?\\"))
{
ntPath.erase(ntPath.begin(), ntPath.begin() + 4);
return ntPath;
}
if (boost::starts_with(ntPath, L"\\??\\"))
{
ntPath.erase(ntPath.begin(), ntPath.begin() + 4);
}
if (boost::starts_with(ntPath, L"\\"))
{
ntPath.erase(ntPath.begin(), ntPath.begin() + 1);
}
if (boost::istarts_with(ntPath, L"globalroot\\"))
{
ntPath.erase(ntPath.begin(), ntPath.begin() + 11);
}
if (boost::istarts_with(ntPath, L"systemroot"))
{
ntPath.replace(ntPath.begin(), ntPath.begin() + 10, GetWindowsPath());
}
if (boost::istarts_with(ntPath, L"windows"))
{
ntPath.replace(ntPath.begin(), ntPath.begin() + 7, GetWindowsPath());
}
return ntPath;
}
TEST(Win32Path, NtPathDoubleQuestions) …Run Code Online (Sandbox Code Playgroud) 显然,EASEUS Partition Master程序可以在Windows GUI启动之前显示图形 (即,它在启动时CheckDisk运行的同时运行).
我所知道的:
这可能需要没有很好记录的功能.这对我来说没问题.
我已经知道如何编译本机NT可执行文件,因此可以从响应中省略它.
问题:
如何在一切启动之前显示图形?(即你使用什么功能/库?)
它如何在屏幕上显示格式化和对齐的文本?
我知道NtDisplayString能够写文本,但它无法以格式化的方式绘制内容,如下所示.您使用什么功能来复制下面的行为?

在查看OSR Online和NtInternals等各种页面之后,似乎NtCreateProcess(和ZwCreateProcess)指定给出内存部分的句柄是可选的!
这是否意味着我们可以拥有不受可执行映像支持的进程?如果是这样,它们可能(或者它们)可能用于什么?这是否意味着我们可以将可执行文件完全复制到内存中,然后甚至从磁盘中删除该文件,并让该过程继续运行?这似乎是一个非常有用的功能.
背景:Windows 系统存在易受攻击的内核模式驱动程序,可以出于各种目的将其加载到系统中。加载的内核模式驱动程序会在系统中留下痕迹。例如,视频游戏的反作弊软件会在系统的各个部分寻找易受攻击的驱动程序痕迹,因为它们被用于作弊。反作弊软件使用的逻辑可能(或已经)被反 rootkit 工具或 rootkit 本身使用。
我想知道驱动程序加载然后卸载后留下的痕迹。通过我的研究,我在Windows NT内核中发现了这两个地方,卸载的驱动程序会留下痕迹:
(只是让你知道,那些是未记录的数据结构)他们还能在哪里留下痕迹?我是否可以在不自己对 Windows 内核进行逆向工程的情况下学习它?
我正在为我的笔记本电脑编写一个自定义触摸板驱动程序,因为它在Windows下的支持非常糟糕.我已经找到了协议,我已准备好继续实施它,但我对如何解决这个问题感到困惑.它是一个多点触摸板,所以除了支持标准鼠标外,我还想支持Windows Touch界面,但WDK中的示例(Elotouch是最相关的)仅显示HID支持.在我的谷歌搜索中,我发现有人提到处理这个问题的正确方法是编写一个可以从低级协议中暴露HID的填充驱动程序,但是我找不到从哪里开始的好信息.
我应该看一下什么样的例子(WDK或其他),HID是否正确的方式来解决这个问题?我希望至少瞄准Vista +,XP也会很好.
谢谢
编辑:有点澄清.触摸板是USB但非HID.另外,如果HID垫片是最好的方法,我可以在那里使用KMDF,还是我必须去WDM?我的大多数经验都是WDM,但我不确定要走哪条路.
我们运行一个旧的Windows NT机器,完全修补运行IIS4.0.
今天我们被"linuXploit_crew"击中,他们把我们的网站拿走了一两分钟.(幸运的是,我们很快注意到网站上的变化并在攻击的几分钟内修复它).
然而-固定的网站后,我留下了试图找出如何发生的.
查看我们的FTP日志,我们的default.asp文件没有任何变化,我没有看到任何与Web日志不同的东西.关于如何确定他们如何进入的任何想法?我们在Cisco防火墙上只打开了3个端口,FTP,HTTP和HTTPS(21,80,443).
我有一个设置,其中LAMP服务器需要从位于Windows NT身份验证后面的另一个服务器IIS的javascript文件中检索输出.
如果没有身份验证,我可以file_get_contents()用来检索我需要的javascript文件.但是,如果使用Windows NT身份验证,则会失败.
有没有人有任何想法如何模拟身份验证过程,以便允许PHP检索文件?
我想得到线程的起始地址NtQueryInformationThread,但我需要添加它的库.我怎样才能做到这一点?
当TServiceApplication尝试向ServiceManager注册服务时,我收到EOSError代码5-访问被拒绝。
我正在使用XE2 Win7 64位。32位和64位目标均会发生错误。
我有一个使用ADO连接到数据库和Web服务服务器代码的数据模块。所有代码都在可以正常工作的WinUI项目中使用。我也有一个基于相同核心代码的未经测试的ISAPI DLL。
这是我第一次尝试将Web服务服务器合并到NT服务中。
我已经在Vcl.SvcMgr的第1027行中跟踪了产生错误的VCL代码,但是我不知道为什么我会收到“访问被拒绝”错误。我已经编写了其他通过ADO连接到数据库的NT服务,并且没有遇到过这样的错误(尽管使用XE编写)。
任何指针将不胜感激。
我正在写一个写入文件的python(2.7)脚本,必须在linux,windows和osx上运行.不幸的是,对于兼容性问题,我必须在windows风格中使用回车和换行.如果我假设这样可以:
str = someFunc.returnA_longText()
with open('file','w') as f:
if os.name == 'posix':
f.write(str.replace('\n','\r\n'))
elif os.name == 'nt'
f.write(str)
Run Code Online (Sandbox Code Playgroud)
我还要考虑别的吗?os.name还有其他选择('posix','nt','os2','ce','java','riscos').我应该使用平台模块吗?
更新1:
1.目标是在任何操作系统中使用'\ r \n'.
我正在收到str
str = etree.tostring(root, pretty_print=True,
xml_declaration=True, encoding='UTF-8')
Run Code Online (Sandbox Code Playgroud)
我不是在读文件.
我的错,我应该检查os.linesep而不是?
解决方案回顾:
with io.open('file', mode='w', newline='\r\n', encoding='utf8') as f:
f.write(etree.tostring(root, pretty_print=True,
xml_declaration=True, encoding='UTF-8').decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
感谢@Martijn Pieters