• 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注入)
  • 相关阅读:
    在 Laravel 5.1 中使用 Pjax
    在 iOS 中实现方法链调用
    利用 WireShark 深入调试网络请求
    设计一个健壮的后台下载
    设计一个健壮的大型文件下载系统
    iOS开发基础知识:Core Animation(核心动画)
    开发 Swift 和 Objective-C 混编的 Framework
    protobuf3 iOS 接入 protobuf
    iOS之ProtocolBuffer搭建
    iOS10 推送必看(基础篇)
  • 原文地址:https://www.cnblogs.com/hanawasakuraki/p/13185556.html
Copyright © 2020-2023  润新知