Windows平台的rop exp编写
2024-10-18 23:23:51
摘抄自看雪
Windows的ROP与Linux的ROP并不相同,其实Linux下的应该叫做是ret2libc等等。Windows的ROP有明确的执行目标,比如开辟可执行内存然后拷贝shellcode,比如释放可执行执行文件然后执行等等,总之要依赖于一些关键的Windows API来进行。
进行ROP的目的:绕过DEP保护
ROP gadgets:是以 ret 指令结尾的连续的指令
查找gadgets的算法:
- 搜索所有的ret指令
- 向前遍历,判断ret的前几个字节是否为合法指令。保留能构成有效指令的最大字节数20 bytes。记录这些指令序列。
常见的功能性gadgets:
- 赋值寄存器:如:pop eax;ret;
- 从内存读:如:mov ecx,[eax];ret;
- 向内存写:如:mov [eax],ecx;ret;
- 数学运算:如:add eax,0x0b;ret;
- 系统调用:如:int 0x80;ret;
避免使用的gadgets:
- 用包含leave的 gadgets,会导致栈祯不可控
- 用包含pop ebp的 gadgets,会导致栈祯不可控
最新文章
- Quartz Job基本示例
- Professional.WebGL.Programming-Chapter 2(高级WebGL编程——第二章)
- JavaScript弹出窗口技巧
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- AngularJS 用 Interceptors 来统一处理 HTTP 请求和响应
- Ubuntu 12.04 LTS(64bit) 环境下JDK、 Eclipse、 ADT、 快捷图标
- iOS 修改网络图片的大小 宽和高
- SpringMVC Cache注解+Redis
- PHP学习笔记--文件目录操作(文件上传实例)
- imageWithContentsOfFile读取全路径返回的image为空的解决方法
- Codeforces Round #299 (Div. 1)
- 001.为什么选择用AngularJs开发?
- Sicily-1443
- (大数据工程师学习路径)第三步 Git Community Book----基本用法(下)
- VS2013调试的时候出现 “检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法”
- 基于JDK1.8的HashMap分析
- 利用Eclipse中的Maven构建Web项目(一)
- [C]simple code of count input lines,words,chars
- 网络协议抓包分析——IP互联网协议
- 广州商学院16级软工一班&;二班-第一次作业成绩
热门文章
- Hadoop生态圈-hive优化手段-作业和查询优化
- Hive性能优化--map数和reduce数
- 不忘初心,方得始终——NOIP2016前的感悟
- 【BZOJ】2655: calc 动态规划+拉格朗日插值
- element-UI 表单图片判空验证问题
- 【译】第十二篇 SQL Server代理多服务器管理
- Linux操作系统介绍
- 关于new Handler()与new Handler(Looper.getMainLooper())区别
- 使用idea的的第一个坑-----javax.xml.ws.WebServiceRef
- Linux下如何在进程中获取虚拟地址对应的物理地址【转】