随想录(程序调试与dll注入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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注入)相关推荐
- 《逆向工程》dll注入基础
文章目录 21. windows消息钩取 21.2 消息钩子 21.3 SetWindowsHookEx 21.5.1 调试 23. dll注入 CreateRemoteThread() AppIni ...
- C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)
目录 劫持 detours 实现劫持 步骤: 1. 安装Detours 2. 编译Detours工程 3. 把静态库和头文件引入工程 4. 函数指针与函数的定义 5.拦截 劫持QQ 实现劫持syste ...
- (二) 使用Detours调试远程线程注入的dll
远程线程注入是指一个进程在另一个进程中创建线程的技术.该技术可以用于:API Hook,破解软件所谓的"内存补丁"等. 将DLL注入到其它进程并不是难事,问题是这个被注入的DLL不 ...
- 2020-11-24(dll注入的N种搞法)
所谓DLL注入,本来是软件用于向其他程序添加/扩展功能.调试或逆向工程的一种合法技术.不过,后来恶意软件也常用这种方式来干坏事.因此,这意味着从安全的角度来看,我们必须知道DLL注入是如何工作的. 之 ...
- 2020-11-23(Windows系统的dll注入 )
一.什么是dll注入 在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥有整个机器的控制权,每个进程都认为自己拥有计算机的整个内存空间,这些假象都 ...
- 2020-11-23(dll注入方法)
一般情况下有如下dll注入方法: 1.修改注册表来注入dll: 2.使用CreateRemoteThread函数对运行中的进程注入dll: 3.使用SetWindowsHookEx函数对应用程序挂钩( ...
- [web安全]深入理解反射式dll注入技术
一.前言 dll注入技术是让某个进程主动加载指定的dll的技术.恶意软件为了提高隐蔽性,通常会使用dll注入技术将自身的恶意代码以dll的形式注入高可信进程. 常规的dll注入技术使用LoadLibr ...
- 【安全技术】关于几种dll注入方式的学习
何为dll注入 DLL注入技术,一般来讲是向一个正在运行的进程插入/注入代码的过程.我们注入的代码以动态链接库(DLL)的形式存在.DLL文件在运行时将按需加载(类似于UNIX系统中的共享库(shar ...
- dll注入工具_UnmanagedPowerShell工具分析
简单介绍:从非托管进程执行PowerShell.通过一些修改,可以在将这些相同的技术注入到不同的进程时使用(例如,如果需要,可以让任何进程执行PowerShell) 下面借用网上的一张图来说明这个流程 ...
最新文章
- 深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)
- 简单多元线性回归(梯度下降算法与矩阵法)
- Ubuntu16.04添加设置启动项
- nova 之compute服务
- windows 7 网卡物理地址修改方法
- nginx配置文件【转载】
- 年度最佳代码“不管你们信不信,反正我信了”
- linux 怎么管理文件夹,Linux 是如何管理目录文件?
- [codevs1378]选课
- splay详解(二)
- tp5数据排序分页展示
- java1.8下载安装教程
- 三自由度机械臂的三维设计
- 超分 Super-Resolution
- 2021年末大盘点。IT行业那些薪资高前景好的岗位,你知道几个?
- [FirefoxOS_开发环境]Linux和Ubuntu环境下B2G(Firefox OS)安装、编译、测试教程集合
- ByVal与ByRef
- 网络原理——TCP协议
- 如何设置和取消PPT文件的打开密码
- tmall.product.schema.add(淘宝天猫商品发布接口),淘宝商品发布API接口,tmall.product.schema.get产品信息获取接口
热门文章
- Intellij idea 快捷键 生成序列化ID
- Springboot+dubbo Zookeeper+Docker
- TCC-Transaction TCC 实现
- 解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
- D3.js 力导向图来处理拓扑图
- 【转】关于PHP的header(P3P: CP=CURa……)
- 利用VBA在EXCLE2010和2007中找回2003式的经典菜单和工具栏
- 将Linux作为桌面操作系统,你准备好了吗?
- 19、SOAP安装,运用与比对结果解释
- BroadcastReceiver详解