• 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注入)
  • 相关阅读:
    07ES6 模板字符串
    Python: Factory Method Pattern
    CSharp: Singleton Pattern in donet core 3
    CSharp: Decorator Pattern in donet core 3
    CSharp: Visitor Pattern in donet core 3
    CSharp: Observer Pattern in donet core 3
    CSharp: Flyweight Pattern in donet core 3
    CSharp: Adapter Pattern in donet core 3
    CSharp: Composite Pattern in donet core 3
    CSharp: Facade Pattern in donet core 3
  • 原文地址:https://www.cnblogs.com/hanawasakuraki/p/13185556.html
Copyright © 2020-2023  润新知