【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

有这样一些场景,我们需要监控一些进程是否运行,内存数据是否正确。但是,与此同时,原来的程序不能被修改,或者无法修改,但是我们希望做一些监控操作。这个时候,就需要写一个内存监控程序了。今天,正好在网上看到类似的一篇文章,链接地址在这。主要用到了这么几个API,即

1、获取窗口句柄

FindWindowW

2、根据窗口句柄获取进程id信息

GetWindowThreadProcessId

3、根据进程id获取进程句柄

OpenProcess

4、读取进程中的内存数据

ReadProcessMemory

5、数据写入到对应的进程空间

WriteProcessMemory

其实不管什么进程,对于操作系统来说都是一样的。所以,一个进程如果想看另外一个进程的数据,从技术上来说没有什么难度。虽然不同程序的user space都差不多,只是tlb不同,但是只要os api支持,就没有什么问题。在实际开发中,我们发现可以通过gdb去调试和操作另外一个程序,原理和这个也差不多。

如果需要将某一个调试dll嵌入(有时候也叫注入)到别人的程序中,可以参考这个链接,主要的基本流程也是

OpenProcess (打开插入进程)->

VirtualAllocEx(注意是其他process的句柄) ->

WriteProcessMemory(同样是其他process的句柄) ->

GetProcAddress(GetModuleHandle获取内核dll句柄、获取LoadLibraryW的地址) ->

CreateRemoteThread (要求另外process启动thread,为LoadLibraryW加载这个dll)->

WaitForSingleObject(等待线程结束) ->

VirtualFreeEx (释放内存)->

CloseHandle(释放remote thread句柄) ->

CloseHandle(释放进程句柄)。最关键的部分就是CreateRemoteThread 这个函数。类似的操作还可以参考这里。

PS:

链接的这篇文章本来是做游戏辅助的。主要方法是通过游戏操作,在CheatEngine上面找到对应数值的地址,接着通过OD反汇编进一步确认原来可执行程序的基础地址(因为有可能不是静态地址,而是动态地址),而辅助程序就是通过定时检测操作来修改对应内存的数值,提升游戏体验。按照目前的法律,这种修改程序的行为是不合法的,希望大家还是用在正道上面。类似的程序还有伪装木马什么、易语言操作什么的,看看就好,不要乱用。

现在除了CheatEngine之外,另外一个重要的调试软件就是OllyDbg。用好了OllyDbg,其实就可以开始测试了。这个OllyDbg相当于gdb调试,不过功能更强大,破解的时候需要到。

随想录(程序调试与dll注入)相关推荐

  1. 《逆向工程》dll注入基础

    文章目录 21. windows消息钩取 21.2 消息钩子 21.3 SetWindowsHookEx 21.5.1 调试 23. dll注入 CreateRemoteThread() AppIni ...

  2. C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)

    目录 劫持 detours 实现劫持 步骤: 1. 安装Detours 2. 编译Detours工程 3. 把静态库和头文件引入工程 4. 函数指针与函数的定义 5.拦截 劫持QQ 实现劫持syste ...

  3. (二) 使用Detours调试远程线程注入的dll

    远程线程注入是指一个进程在另一个进程中创建线程的技术.该技术可以用于:API Hook,破解软件所谓的"内存补丁"等. 将DLL注入到其它进程并不是难事,问题是这个被注入的DLL不 ...

  4. 2020-11-24(dll注入的N种搞法)

    所谓DLL注入,本来是软件用于向其他程序添加/扩展功能.调试或逆向工程的一种合法技术.不过,后来恶意软件也常用这种方式来干坏事.因此,这意味着从安全的角度来看,我们必须知道DLL注入是如何工作的. 之 ...

  5. 2020-11-23(Windows系统的dll注入 )

    一.什么是dll注入 在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥有整个机器的控制权,每个进程都认为自己拥有计算机的整个内存空间,这些假象都 ...

  6. 2020-11-23(dll注入方法)

    一般情况下有如下dll注入方法: 1.修改注册表来注入dll: 2.使用CreateRemoteThread函数对运行中的进程注入dll: 3.使用SetWindowsHookEx函数对应用程序挂钩( ...

  7. [web安全]深入理解反射式dll注入技术

    一.前言 dll注入技术是让某个进程主动加载指定的dll的技术.恶意软件为了提高隐蔽性,通常会使用dll注入技术将自身的恶意代码以dll的形式注入高可信进程. 常规的dll注入技术使用LoadLibr ...

  8. 【安全技术】关于几种dll注入方式的学习

    何为dll注入 DLL注入技术,一般来讲是向一个正在运行的进程插入/注入代码的过程.我们注入的代码以动态链接库(DLL)的形式存在.DLL文件在运行时将按需加载(类似于UNIX系统中的共享库(shar ...

  9. dll注入工具_UnmanagedPowerShell工具分析

    简单介绍:从非托管进程执行PowerShell.通过一些修改,可以在将这些相同的技术注入到不同的进程时使用(例如,如果需要,可以让任何进程执行PowerShell) 下面借用网上的一张图来说明这个流程 ...

最新文章

  1. 深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)
  2. 简单多元线性回归(梯度下降算法与矩阵法)
  3. Ubuntu16.04添加设置启动项
  4. nova 之compute服务
  5. windows 7 网卡物理地址修改方法
  6. nginx配置文件【转载】
  7. 年度最佳代码“不管你们信不信,反正我信了”
  8. linux 怎么管理文件夹,Linux 是如何管理目录文件?
  9. [codevs1378]选课
  10. splay详解(二)
  11. tp5数据排序分页展示
  12. java1.8下载安装教程
  13. 三自由度机械臂的三维设计
  14. 超分 Super-Resolution
  15. 2021年末大盘点。IT行业那些薪资高前景好的岗位,你知道几个?
  16. [FirefoxOS_开发环境]Linux和Ubuntu环境下B2G(Firefox OS)安装、编译、测试教程集合
  17. ByVal与ByRef
  18. 网络原理——TCP协议
  19. 如何设置和取消PPT文件的打开密码
  20. tmall.product.schema.add(淘宝天猫商品发布接口),淘宝商品发布API接口,tmall.product.schema.get产品信息获取接口

热门文章

  1. Intellij idea 快捷键 生成序列化ID
  2. Springboot+dubbo Zookeeper+Docker
  3. TCC-Transaction TCC 实现
  4. 解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
  5. D3.js 力导向图来处理拓扑图
  6. 【转】关于PHP的header(P3P: CP=CURa……)
  7. 利用VBA在EXCLE2010和2007中找回2003式的经典菜单和工具栏
  8. 将Linux作为桌面操作系统,你准备好了吗?
  9. 19、SOAP安装,运用与比对结果解释
  10. BroadcastReceiver详解