动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.struts标签使用举例--logic篇.
.电信网管中的Java客户端(二).
.JAVA中正则表达式的应用(1).
.构建器内部的多形性方法的行为.
.用Spring AOP实现开发中松散耦合.
.类和对象的兼容性.
.Effective Java读书笔记之二.
.JDBC系列教程(一).
.Java两则常见错误详析及解决.
.Java Socket编程(二)Java面向连.
..NET的“无触式”配置:一个新的.
.使用Ant和Weblogic开发EJB.
.Java: 尽可能使用堆栈变量.
.Gel:号称世界上最轻巧的Java&nb.
.Swing 常用的 Package.
.Files 属性.
.从outlook导入email地址.
.exp 方法.
.JUnit -- A good thing to unit .
.设计模式研究--Proxy Model.

Java入门:缓冲区溢出编程心得

发表日期:2008-1-5 |



  前言:网上关于缓冲区溢出的资料也有很多,但我在阅读过程中发现介绍的都不是很明了,而且各网站也只是转贴老外的那篇译文而已,不仅内容有缺损,而且程序也无法调通,因为GCC版本不一样.经过几天的琢磨,终于明白了真正的原理,特地写出来分享.

  测试环境:
  $ gcc -v
  Reading specs from /usr/lib/gcc-lib/i386-redhat-Linux/3.2.3/specs
  Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
  Thread model: posix
  gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-24)

  $ gdb -v
  GNU gdb Red Hat Linux (6.0post-0.20031117.6rh)
  Copyright 2003 Free Software Foundation, Inc.
  GDB is free software, covered by the GNU General Public License, and you are
  welcome to change it and/or distribute copies of it under certain conditions.
  Type "show copying" to see the conditions.
  There is absolutely no warranty for GDB. Type "show warranty" for details.
  This GDB was configured as "i386-redhat-linux-gnu".

  $ uname -a
  Linux candy 2.4.21-9.EL #1 Thu Jan 8 17:03:13 EST 2004 i686 athlon i386 GNU/Linux

  实例:
  网上和我的这个实例雷同的也有,但是他们的是无法正确实现的.因为要害的跳转代码没有计算正确.(GCC版本问题,呵呵)
  /************
  * a.c
  ************/
  void function(void)
  {
  char buffer[5];
  int* ret;

  ret=buffer+28;
  (*ret)+=10;
  }

  void main()
  {
  int x;

  x=0;
  function();

  x=1;
  printf("%d\n",x);

  return;
  }
  /*end*/

  懂C语言的人都会认为最后的输出结果是1,可惜输出结果为0.为什么呢?请听解释.

  实例分析:
  相关堆栈的基础知识我就不罗嗦了,网上的介绍很多.
  要害问题在于如何确定源代码
  ret=buffer+28;
  (*ret)+=10;
  中的28 和 10

  编译(会有warning,不用管他.)
  $gcc -g -o a a.c //加上-g 用来在gdb中调试

  $gdb a
  (gdb)disas main //得到反汇编代码 如下:
  Dump of assembler code for function main:
  0x08048366 : push %ebp
  0x08048367 : mov %esp,%ebp
  0x08048369 : sub $0x8,%esp
  0x0804836c : and $0xfffffff0,%esp
  0x0804836f : mov $0x0,%eax
  0x08048374 : sub %eax,%esp
  0x08048376 : movl $0x0,0xfffffffc(%ebp)
  0x0804837d : call 0x8048348
  0x08048382 : movl $0x1,0xfffffffc(%ebp)
  0x08048389 : sub $0x8,%esp
  0x0804838c : pushl 0xfffffffc(%ebp)
  0x0804838f : push $0x8048474
  0x08048394 : call 0x8048288
  0x08048399 : add $0x10,%esp
  0x0804839c : leave
  0x0804839d : ret
  End of assembler dump.

  (gdb)disas function
  Dump of assembler code for function function:
  0x08048348 : push %ebp
  0x08048349 : mov %esp,%ebp
  0x0804834b : sub $0x28,%esp
  0x0804834e : lea 0xffffffe8(%ebp),%eax
  0x08048351 : add $0x1c,%eax
  0x08048354 : mov %eax,0xffffffe4(%ebp)
  0x08048357 : mov 0xffffffe4(%ebp),%edx
  0x0804835a : mov 0xffffffe4(%ebp),%eax
  0x0804835d : mov (%eax),%eax
  0x0804835f : add $0xa,%eax
  0x08048362 : mov %eax,(%edx)
  0x08048364 : leave
  0x08048365 : ret
  End of assembler dump.

  可以得知当main中执行 0x0804837d : call 0x8048348 <
上一篇:java类加载的表现形式 人气:569
下一篇:课程介绍(4):SL-275 Java语言编程 人气:449
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号