zoukankan      html  css  js  c++  java
  • Windows DLL注入方式

    ------(内容摘选至《加密与解密第四版》)
     
    一、通过干预导入表处理过程加载DLL
    1.静态修改EXE的导入表目录,新增或修改(微软进程Bound import table需要清空,)
    2.进程创建初期修改导入表目录(CreateProcess with suspend)
    3.DLL劫持,除了注册表KnownDLLs,dll加载的搜索顺序,exe所在目录高于system目录。可以直接劫持msvcrt.dll等
    二、改变程序运行流程主动加载目标DLL
    1.CreateRemoteThread
    2.RtlCreateUserThread(需要自身调用NtTerminateThread)
    3.QueueUserApc/NtQueueAPCThread
    4.SetThreadContext修改eip/rip
    5.内核通过Hook/Notify修改执行流(修改CONTEXT,Hook ntdll ZwContinue)
    6.内核调用KeUserModeCallback(依赖于user32.dll,user32.dll加载时初始化。或者直接填写PEB->KernelCallbackTable,win10 CFG 保护无法使用)
    7.WriteProcessMemory劫持关键点(ntdll!KiUserApcDispatch,ntdll!ZwTestAlert以及常用的系统函数)
    三、利用系统机制加载DLL
    1.SetWindowsHookEx钩子注入
    2.AppInit_DLLs注册表注入(user32.dll加载时会调用LoadAppDLLs,读取注册表项,LoadAppInit_DLLs=1)
    3.输入法注入,IMME32.DLL
    4.SPI网络过滤器注入,编写LSP DLL并安装到系统网络协议栈
    5.ShimEngine注入,劫持Windows兼容模式启动程序
    6.Explorer Shell 注入,右键菜单,程序默认打开方式等(通过文件图标ShellIconOverlayIdentifiers注入)
  • 相关阅读:
    ADO.NET调用存储过程
    存储过程
    web Servise(服务)
    ADO.NET连接池
    ADO.NET
    常用语法2
    常用语法
    修改pip源为国内网站
    模块
    random模块
  • 原文地址:https://www.cnblogs.com/hanawasakuraki/p/13185556.html
Copyright © 2011-2022 走看看