zoukankan      html  css  js  c++  java
  • 逆向学习-DLL注入

    DLL注入技术,可以实现钩取API,改进程序,修复Bug。

    DLL注入指的是向运行中的其他进程强制插入特定的DLL文件。

    DLL注入命令进程自行调用LoadLibrary()API,加载用户指定的DLL文件。

    DLL(Dynamic Linked Library,动态链接库)

      DLL被加载到进程后自动运行DllMain()函数,用户把想执行的代码放到此函数,加载DLL时,代码会被执行。

    DLL注入的实现方法

      创建远程线程(CreateRemoteThread()API)

      使用注册表(AppInit_DLLs值)

      消息钩取(SetWindowsHookEx()API)

     CreateRemoteThread远程线程注入,直接使用注入程序将dll注入到notepad中。使用OD的attach功能,和调试事件,中断于新模块载入。

    使用注册表注入,winxp 32位我是不成功的,下载了vista 32 位玩了一下, DLL字符串路径写入AppInit_DLLs的值,将LoadAppInit_DLLs的值改为1,即可注入。

    注册表的位置:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows  修改后需要重启电脑。

    DLL卸载

      加载DLL是驱使目标调用LoadLibrary()API

      卸载DLL是驱使目标调用FreeLibrary()API

    通过修改PE加载DLL

      IMAGE_OPTIONAL_HEADER 的 IMPORT TABLE 即为 IDT,修改RVA及内存大小。

      修改导入表RVA的值。

      删除绑定导入表(BOUND IMPORT TABLE )将值改为0即可。

      复制原有IDT到新IDT地址。

      添加新的IID结构。(IID结构我是手写不出来的,我也记不住,需要的时候查一下就OK了)。

      主要就是INT  NAME  IAT

      如果添加的IAT在IMAGE_OPTIONAL_HEADER 的IAT区域内,就不需要修改权限,否则,必须赋予添加的IAT的写入权限。

    PE TOOLS

      主要功能,转储和修改PE头,我都不熟练0.0.0.

    代码注入

      占用内存少,难以查找,适用于代码量小,简单。

      使用了OD的中断于新线程事件。

      主要就是分析注入代码,没什么好写的,代码分析在我的另一篇博客 代码注入。

    汇编语言编写注入代码

      OD汇编,分析代码功能,编辑字符串,Long->Address功能。

      有意思的是,CALL指令的动作原理,CALL可以实现PUSH加JMP。

      还有栈帧的使用。

      

  • 相关阅读:
    说一说Vuex有哪几种状态和属性
    vue中key的作用
    JavaScript 中 reduce去重方法
    Promise对象
    axios的封装
    Vuex白话教程第六讲:Vuex的管理员Module(实战篇)
    token 拼接
    redux 安装
    vue中computed 和 watch 语法
    在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别
  • 原文地址:https://www.cnblogs.com/whitehawk/p/10798348.html
Copyright © 2011-2022 走看看