摘抄自看雪

Windows的ROP与Linux的ROP并不相同,其实Linux下的应该叫做是ret2libc等等。Windows的ROP有明确的执行目标,比如开辟可执行内存然后拷贝shellcode,比如释放可执行执行文件然后执行等等,总之要依赖于一些关键的Windows API来进行。

进行ROP的目的:绕过DEP保护

ROP gadgets:是以 ret 指令结尾的连续的指令

查找gadgets的算法:

  1. 搜索所有的ret指令
  2. 向前遍历,判断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,会导致栈祯不可控

最新文章

  1. Quartz Job基本示例
  2. Professional.WebGL.Programming-Chapter 2(高级WebGL编程——第二章)
  3. JavaScript弹出窗口技巧
  4. 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
  5. AngularJS 用 Interceptors 来统一处理 HTTP 请求和响应
  6. Ubuntu 12.04 LTS(64bit) 环境下JDK、 Eclipse、 ADT、 快捷图标
  7. iOS 修改网络图片的大小 宽和高
  8. SpringMVC Cache注解+Redis
  9. PHP学习笔记--文件目录操作(文件上传实例)
  10. imageWithContentsOfFile读取全路径返回的image为空的解决方法
  11. Codeforces Round #299 (Div. 1)
  12. 001.为什么选择用AngularJs开发?
  13. Sicily-1443
  14. (大数据工程师学习路径)第三步 Git Community Book----基本用法(下)
  15. VS2013调试的时候出现 “检测到在集成的托管管道模式下不适用的 ASP.NET 设置的解决方法”
  16. 基于JDK1.8的HashMap分析
  17. 利用Eclipse中的Maven构建Web项目(一)
  18. [C]simple code of count input lines,words,chars
  19. 网络协议抓包分析——IP互联网协议
  20. 广州商学院16级软工一班&二班-第一次作业成绩

热门文章

  1. Hadoop生态圈-hive优化手段-作业和查询优化
  2. Hive性能优化--map数和reduce数
  3. 不忘初心,方得始终——NOIP2016前的感悟
  4. 【BZOJ】2655: calc 动态规划+拉格朗日插值
  5. element-UI 表单图片判空验证问题
  6. 【译】第十二篇 SQL Server代理多服务器管理
  7. Linux操作系统介绍
  8. 关于new Handler()与new Handler(Looper.getMainLooper())区别
  9. 使用idea的的第一个坑-----javax.xml.ws.WebServiceRef
  10. Linux下如何在进程中获取虚拟地址对应的物理地址【转】