分析注入代码的两种方法
来源:互联网 发布:监控网络防雷器 20ka 编辑:程序博客网 时间:2024/06/04 19:35
一、dump法(适用于比较完整的注入)
对于比较基础的注入方法:
WriteProcessMemory...WriteProcessMemory...CreateRemoteThread
可以用WinHex新建一个文件,每次调用WriteProcessMemory的时候,都将buffer中的二进制数据拼接在WinHex中。
最后保存下来,通常都是一个可执行程序
二、实时调试
功能介绍:OD——选项——实时调试设置,设置完成后对于新创建的进程,OD会开启另一个实例自动进行附加
不论是哪种注入方式,想要实时调试就一定要知道startAddress,获取startAddress的两种方法:
a. 如果是CreateRemoteThread,第四个参数LPTHREAD_START_ROUTINE lpStartAddress
b. 如果是通过SuspendThread,ResumeThread,那么就一定会修改线程上下文的eip。SetThreadContext,传入的参数就是结构体pContext
startAddress = pContext + 0xB0(B0是eip的偏移位置,XP有效,其他高版本操作系统可能会有变化)
知道startAddress后就三种方法可以实时调试:
a. 在WriteProcessMemory时,先修改startAddress为 0xCC(int3),开启实时调试,F8执行运行线程的语句
b. 在WriteProcessMemory时,先修改startAddress为 FE EB(无限循环当前指令),开启实时调试,F8执行运行线程的语句
c. 不开启实时调试,直接F4来到运行远程线程的语句,手动打开另一个OD,附加到目标进程,Ctrl+F9到startAddress,下断点(此时目标程序是暂停的)
F8执行运行远程线程的语句,F9运行目标进程,自动来到startAddress处
- 分析注入代码的两种方法
- Spring的两种常见的注入方式 构造方法注入以及setter方法注入
- Spring的两种依赖注入方式:setter方法注入与构造方法注入
- Spring的两种依赖注入方式:setter方法注入与构造方法注入 以及两种方式的区别!
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 代码注入的三种方法
- 为什么Hibernate中使用serializable来加载或更新实体
- android自定义view-强大的点击灰色背景imageview
- 修改tomcat编码和设置可读写
- Intent传递对象
- nodejs 保存数组/对象,对其进行处理,而不影响原数组/对象
- 分析注入代码的两种方法
- 同步、异步、阻塞与非阻塞详解
- 模拟iOS网络环境
- 高斯模糊
- 牛腩讨论组上课
- 设计模式之观察者模式(一)
- 2016 远景能源-实习生-电话面试
- CocoaPods的使用
- 内容为核心的app的那些事