首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏软件安装

    ntdll.dll 故障解决方法 多种方式修复 dll 问题

    ntdll.dll故障通常涉及Windows操作系统的系统级动态链接库文件,可能导致应用程序闪退、蓝屏或程序无响应。 解决ntdll.dll故障的方法包括:系统文件检查器(SFC):打开命令提示符并以管理员身份运行。输入 sfc /scannow 命令并执行,该命令将扫描并尝试修复系统文件的损坏。 重新安装相关软件:如果特定软件运行时引发ntdll.dll错误,尝试卸载并重新安装该软件,确保从官方网站下载最新版本。 检查并修正与ntdll.dll相关的注册表设置,确保没有权限问题导致的访问被拒绝。安全软件检查:使用防病毒软件,如火绒恶意木马专杀或360急救箱,检查并清除可能的恶意软件。 ntdll.dll 故障,c,dll 问题解决,dll 文件修复,系统 dll 故障,电脑 dll 错误,ntdll.dll 下载,dll 修复工具,Windowsdll 问题,系统文件修复,ntdll.dll

    2.2K10编辑于 2025-05-27
  • 来自专栏Gamma安全实验室

    edr对抗技术1-api unhook output

    然后这个时候,我们用新的ntdll的代码段覆盖被hook的代码段,实现ntdll重载。 将 ntdll.dll 的新副本从磁盘映射到进程内存 查找被 hook 的 ntdll.dll的 .text 部分的虚拟地址 获取ntdll.dll基址 模块基址 + 模块的 .text 段 VirtualAddress 查找新映射ntdll.dll的 .text 段的虚拟地址 获取被 hook 的 ntdll .text 段的内存写的权限 将新映射的ntdll.dll的 .text 段覆盖到被 hook 的 ntdll pe格式的ntdll,然后摄取这个ntdll里的函数直接使用。 这个时候这里的ntdll是干净的ntdll。 没有被hook 如果是被hook了,这里会出现一个跳转,跳转到edr的dll中去。

    1.3K10编辑于 2024-05-14
  • 驱动开发:WinDBG 常用调试命令总结

    lmi ntdll // 查看ntdll.dll的详细信息 0:000> !dlls -a // 列出镜像文件PE结构的文件头 0:000> ! dlls -c ntdll.dll // 列出特定模块头信息 0:000> !dlls -s -c ntdll.dll // 列出ntdll.dll的节区 0:000> ! // 列出加载的所有符号信息 0:000> x ntdll!* // 列出ntdll.dll中的所有符号 0:000> x ntdll! nt* // 列出ntdll.dll模块中所有nt开头的符号 0:000> x /t /v ntdll! * # 列出ntdll中的全部结构体,导出的函数名也会列出 dt ntdll!

    1.4K20编辑于 2022-12-28
  • 来自专栏逆向技术

    高级远程线程注入NtCreateThreadEx

    那么就需要从NtDll中以动态的方式导出使用。 = NULL; HMODULE k32 = NULL; bool bIsOk = FALSE; do { ntdll = LoadLibrary(TEXT(" ntdll.dll")); if (ntdll == NULL) { break; } k32 = LoadLibrary = NULL) { FreeLibrary(k32); k32 = NULL; } if (ntdll ! = NULL) { FreeLibrary(ntdll); ntdll = NULL; } return bIsOk; } 注意: uDllPathSize

    2K20编辑于 2022-05-10
  • 来自专栏the big bang of theory

    一个APC引起的折腾

    _except_handler4+0x8e 0249f3dc 772d878b ntdll!ExecuteHandler2+0x26 0249f48c 7729010f ntdll! 有了前面的基础知道,现在就开始分析ntdll64!KiUserApcDispatcher这个在调用我们的user apc的时候发生了什么事,下面是其汇编代码: kd> uf  ntdll! KiUserApcDispatcher ntdll! Ntdll32KiUserExceptionDispatcher进而转到32bit空间的ntdll32! 这条指令时发生异常,此时系统调用ntdll64! KiUserExceptionDispatcher来dispatch分发异常,但ntdll64!

    1.1K30发布于 2019-03-28
  • 来自专栏Eureka的技术时光轴

    关于新版本cuckoo hook位置变动的思考

    FF15 BC11807C call dword ptr ds:[<&ntdll.NtWriteFile>] ; ntdll.ZwWriteFile //here is static address B0D9927C dd ntdll.ZwReadFile 7C8011A0 > . 50CF927C dd ntdll.ZwAllocateVirtualMemory 7C8011A4 B94E937C dd ntdll.RtlCopyUnicodeString 7C8011B8 > . 70D3927C dd ntdll.ZwFreeVirtualMemory B949937C dd ntdll.RtlGetLongestNtPathLength 7C8011CC > . 80D2927C dd ntdll.ZwDuplicateObject 7C8011D0 > . 40D8927C dd ntdll.ZwQueryKey 7C8011D4 > . 50D2927C dd ntdll.ZwDeleteValueKey

    69320发布于 2019-07-24
  • 来自专栏红队蓝军

    最简单绕过ring3 hook的方式(bypass bitdefender)

    spm_id_from=333.999.0.0 ntdll.dll常常是被挂钩的主要模块,当程序完全加载完毕后,我们可以尝试从system32目录下加载一个干净的ntdll.dll。 将 ntdll.dll 的新副本从磁盘映射到进程内存 查找挂钩的 ntdll.dll 的 .text 部分的虚拟地址 获取 ntdll.dll 基地址 模块基址 + 模块的 .text 部分 VirtualAddress 查找新映射的 ntdll.dll 的 .text 部分的虚拟地址 获取挂钩模块的 .text 部分的原始内存保护 将 .text 部分从新映射的 dll 复制到原始(挂钩的)ntdll.dll 的虚拟地址 (在第 3 步中找到)——这是取消挂钩的主要部分,因为所有挂钩的字节都被磁盘中的新字节覆盖 将原始内存保护应用到原始 ntdll.dll 的刚脱钩的 .text 部分 #include <Windows.h 使用以上方式reload ntdll .text段,直接将钩子移除。 使用clear ntdll移钩前: 使用clear ntdll移钩后: 所有的函数都已经unhook

    1.1K20编辑于 2023-02-25
  • 来自专栏林德熙的博客

    记调试 RX-Explorer-WAS 文件管理器 UI 未响应问题

    NtWaitForSingleObject() 未知 ntdll.dll!LdrpDrainWorkQueue() 未知 ntdll.dll! NtWaitForSingleObject() 未知 ntdll.dll!LdrpDrainWorkQueue() 未知 ntdll.dll! 如以下堆栈: ntdll.dll!NtWaitForSingleObject() 未知 ntdll.dll!LdrpDrainWorkQueue() 未知 ntdll.dll! 00007ffed6298520() 未知 ntdll.dll!LdrpCallInitRoutineInternal() 未知 ntdll.dll! LdrpCallInitRoutine() 未知 ntdll.dll!LdrpInitializeNode() 未知 ntdll.dll!

    18710编辑于 2026-02-12
  • 来自专栏Khan安全团队

    Shellcode 技术

    调用仍将是一个ntdll.dllWINAPI,并且不会绕过 WINAPI 中的任何钩子ntdll.dll,但纯粹是为了从 IAT 中删除可疑函数。 5. ntdll.dll. 相反,它指向我们调用系统调用的代码,它驻留在ntdll.dll. 这是未通过调用的系统调用的指标ntdll.dll,这是可疑的。 为了克服这些问题,我们可以做到以下几点: 实施猎蛋机制。 ntdll.dll这将导致 RIP 中的返回地址指向ntdll.dll内存区域。 这两种技术都是SysWhisper3的一部分。 8. 拆除挂钩ntdll.dll 另一个规避 EDR 挂钩的好方法ntdll.dll是ntdll.dll用来自ntdll.dll. ntdll.dll是任何 Windows 进程加载的第一个 DLL。

    2.1K20编辑于 2022-05-17
  • 来自专栏Eureka的技术时光轴

    如何找SSDT中精准的

    我们可以通过枚举ntdll.dll的导出函数来间接枚举SSDT所有表项所对应的函数,因为所有的内核服务函数对应于ntdll.dll的同名函数都是这样开头的: 汇编代码 mov eax, <ServiceIndex hSection, SECTION_MAP_READ, &objAttr))) { ZwQuerySection(hSection, 1, &sii, sizeof(sii), 0); Dbg("ntdll entry point : %llx\n", sii.EntryPoint); Ntdll_ImageBase = sii.EntryPoint; pDosHeader = (PIMAGE_DOS_HEADER )Ntdll_ImageBase; #ifdef _M_X64 pNtHeader64 = (PIMAGE_NT_HEADERS64)((unsigned char*)Ntdll_ImageBase ->AddressOfFunctions); addrOrdinal = (PWORD)((unsigned char*)Ntdll_ImageBase + pImageExportDirectory

    1.5K20发布于 2019-07-24
  • 来自专栏Harper的碎碎念

    bcrypt 死锁探秘

    analyze -v STACK_TEXT: 002294a8 76a43d3c 00000000 002294ec 396663fe ntdll_771d0000! LdrpInitializeThread+0xc6 04 3849f748 77209879 3849f76c 771d0000 00000000 ntdll_771d0000! _LdrpInitialize+0x1ad 05 3849f758 00000000 3849f76c 771d0000 00000000 ntdll_771d0000! LdrpCallInitRoutine+0x14 184fda54 7720ea5e 00000000 6f549168 184fdbf8 ntdll_771d0000! 18号线程: 0b80e348 77200329 772d20c0 7c9ba944 6f88275c ntdll_771d0000!

    76320发布于 2021-07-27
  • 来自专栏FreeBuf

    如何使用RefleXXion绕过用户模式钩子

    技术一 将NTDLL作为文件从“C:\Windows\System32\ntdll.dll”路径中读取出来。 经过解析之后,内存中已加载的NTDLL(执行挂钩的地方)的.TEXT字段将会被替换为干净NTDLL文件的.TEXT字段内容。 技术二 将NTDLL从KnownDll(\KnownDlls\ntdll.dll)中以字段形式读取出来(因为KnownDll中的DLL文件是以字段形式缓存的)。 经过解析之后,内存中已加载的NTDLL(执行挂钩的地方)的.TEXT字段将会被替换为干净NTDLL文件的.TEXT字段内容。 即使NTDLL已经以文件或字段的形式重新加载到注入的内存中,它也不会保持加载状态,RefleXXion会关闭所有已打开的句柄。

    1.2K10编辑于 2022-04-12
  • 来自专栏闷骚的程序员

    TaobaoProtectSE.dll 注入引起的死锁分析

    ZwWaitForSingleObject+0x15 (FPO: [3,0,0]) 0037ea44 77518d28 00000000 00000000 0037eaac ntdll! UninstallMonitor+0x1766c 02a8f2b4 7751d939 663a9650 66320000 00000001 ntdll! LdrpCallInitRoutine+0x14 02a8f3a8 7751d7fc 00000000 741474ea 00000000 ntdll! LdrpLoadDll+0x4d1 (FPO: [Non-Fpo]) 02a8f54c 768e2ca2 02a8f540 02a8f590 02a8f578 ntdll! cs 和两个线程堆栈中 ntdll!RtlEnterCriticalSection 这一行的第一个参数来看它们等待的临界区的情况: 0:002> !

    64530发布于 2020-04-16
  • C/C++ 使用API实现数据压缩与解压缩

    Windows提供了这些API函数,本文将深入探讨使用Windows API进行数据压缩与解压缩的过程,主要使用ntdll.dll库中的相关函数。 可以按照以下步骤使用该函数: 加载 ntdll.dll 库。 获取 RtlGetCompressionWorkSpaceSize 函数地址。 定义变量用于存储工作空间大小。 RtlCompressBuffer RtlCompressBuffer 同样位于ntdll.dll库中。该函数用于将数据进行压缩。 RtlDecompressBuffer RtlDecompressBuffer 同样位于ntdll.dll库中。该函数用于将压缩数据进行解压缩。 可以按照以下步骤使用该函数: 加载ntdll.dll库。 获取RtlDecompressBuffer函数地址。 定义变量并分配内存用于存储待解压的数据和解压后的数据。

    68610编辑于 2023-11-23
  • 来自专栏FreeBuf

    通过“热补丁”执行恶意代码实例分析

    ntdll.LdrLoadDll的返回地址被修改为跳转到wwlib.dll的sub_1000168E函数。 修改前: ? 修改后: ? 除了以上修改外作者还开辟了新的内存空间并写入跳转到ntdll.LdrLoadDll返回地址7c9364ee的代码。但是在调试时并未发现有执行改代码的操作,怀疑是作者的测试代码。 ? 当加载DLL文件时调用Kernel32.LoadLibraryA函数,经过下图中的层层调用最终执行ntdll.LdrLoadDll函数。 ? 由于ntdll.LdrLoadDll函数的返回地址“7c9364ee”被修改为跳转到wwlib.1000168E地址。 解密执行shellcode 恶意代码首先将修改过的ntdll函数返回地址恢复,对比上一节的图片可知将“E9 9B B1 6C 93”恢复为“C2 10 00 90 90”。 ?

    94920发布于 2019-09-19
  • 来自专栏giantbranch's blog

    Fuzzing with Spike

    RtlpNtMakeTemporaryKey+0x43ba 017efa2c 77d3517e 77cf7d96 00510000 502c016b ntdll! RtlTryEnterCriticalSection+0x98f 017efa30 77cf7d96 00510000 502c016b 77cc349f ntdll! RtlpNtMakeTemporaryKey+0x43ba 017efa3c 77cc349f 768b6643 7ffdd000 00000000 ntdll! RtlTimeToElapsedTimeFields+0xe902 017efb10 77cc349f 77cc34ca 00000208 00000000 ntdll! RtlTryEnterCriticalSection+0x98f 017efb14 77cc34ca 00000208 00000000 00000000 ntdll!

    28810编辑于 2024-12-31
  • C/C++ 反调试与绕过手法

    *teb* ntdll!_TEB ntdll!_GDI_TEB_BATCH ntdll! _TEB_ACTIVE_FRAME ntdll!_TEB_ACTIVE_FRAME_CONTEXT ntdll! 0:000> dt _teb ntdll! 0:000> dt _peb ntdll! _peb ntdll!

    86330编辑于 2022-12-28
  • 来自专栏黑伞安全

    总结到目前为止发现的所有EDR绕过方法

    NTDLL.dll不是Win32 API的一部分,也没有正式的文档。 用户模式中的最后一个实例是NTDLL.dll中的Windows API函数。如果调用了NTDLL.dll中的任何功能,则CPU接下来将切换到内核模式,AV/EDR就不再能够监视该模式。 因此,本机API NTDLL.dll是操作系统前面的最后一个实例。 这里使用的技术的目标是在运行时不从ntdll.dll加载任何函数,而是直接使用相应的汇编代码来调用它们。通过反汇编ntdll.dll文件,可以获取其中包含的每个函数的汇编代码。 NTDLL.dll unhooking in C++ or Nim 我们了解到,AV / EDR系统挂接NTDLL.dll的特定功能,以将其自己的代码放入其中进行分析。

    11.1K31发布于 2021-02-26
  • 来自专栏方亮

    DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子

    堆栈不长,我全部列出来 17 ntdll.dll!_KiFastSystemCallRet@0() 16 ntdll.dll! _LdrpCallInitRoutine@16() 9 ntdll.dll!_LdrpRunInitializeRoutines@4() 8 ntdll.dll! 我们对这个堆栈进行编号 6 ntdll.dll!_KiFastSystemCallRet@0() 5 ntdll.dll! __LdrpInitialize@12()  + 0xb4bf bytes 1 ntdll.dll! _KiUserApcDispatcher@20()  + 0x7 bytes 0 ntdll.dll!

    1.8K20发布于 2019-01-16
  • 来自专栏c++ 学习分享

    openssl怎么编译成动态库

    的包,通过cd命令切换到openssl的目录 4、执行:perl configure VC-WIN32 5、执行:ms/do_ms 6、选择不同的编译结果 1) 执行:nmake -f ms/ntdll.mak 并命名为ntdll_mt.mak,修改里面的 “CFLAG= /MD /Ox ..............” 为/MT ,然后重新编译,执行 nmake -f ms/ntdll_mt.mak 4) 想生成使用动态链接运行时库的静态库则采用下面方法 复制一个nt.mak并命名为nt_md.mak,修改里面的 为/MD ,然后重新编译 ,执行 nmake -f ms/nt_md.mak 7.其它命令: nmake -f ms/ntdll.mak clean // 清除编译的中间文件 nmake -f ms /ntdll.mak install // 安装 ,主要是linux下面会自动放到程序目录中 。

    1.3K30编辑于 2023-07-06
领券