首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux相关>其他unix>正文

简析Linux与FreeBSD的syscall

http://www.oklinux.cn  2006-10-18  来源: oklinux收集整理   会员收藏  游客收藏  【 】 

  --]概述

  又是一个不眠的夜晚,其实这篇文档是不应该发表的,因为保密的原则吧,但是我仔细

  google了下,没有类似的文章,而且发表的这部分文档也不至于被认为是什么绝密资料,

  但是我还是隐藏了很多发现的内核级别可能存在的问题:)单纯从汇编代码的结构来阐述

  下linux与freebsd到底那个更好玩一些.或者说那个运行速度会更快一些:)

  我想大家看完这个文档以后,或许会知道到底是Linux稳固?还是FreeBSD稳固?

  在本文的最后部分,附加了shellcode的问题,但没有专门的论述.

  备注:本文观点仅代表个人观点,如有不对的地方,欢迎大家指正:)以提高本人的水平.

  --]编译调试

  A:编译选项

  Linux :gcc -gdwarf-2 ***.c -o ***

  FreeBSD: cc -gdwarf-2 ***.c -o ***

  为了调试方便,我使用了上面的选项.

  --------------------------------------

  对于一般书写shellcode的编译选项一般为:

  Linux :gcc -static -o *** ***.c

  FreeBSD: cc -static -o *** ***.c

  B:调试工具

  Linux/Unix下面的调试工具为GDB,但是GDB基于内核的调试有些力不从心,因为GDB的调试是

  基于用户模式(User mode).

  这里我使用了其它的调试工具,所以下面大家看到的调试代码比较特殊,在这里事先声明.

  --]Linux的syscall跟踪

  写过shellcode的人都知道syscall是写shellcode的必需品:)当然这种概念只在Linux/Unix

  的OS下才存在.最近这段时间因为一个"小小的问题"对Linux内核与FreeBSD的内核级别进行了

  跟踪和调试,然后发现一个蛮有意思的问题,自己感觉这个问题可能会与Linux下shellcode与

  FreeBSD下shellcode的不同有关系,当然也和系统架构存在一些细微的关系.下面的内容是Linux

  下面syscall的一些汇编代码.

  在Linux下面,Application调用syscall的代码如下:

  420D4330 55 PUSH EBP |

  420D4331 89E5 MOV EBP,ESP |->堆栈框架

  420D4333 83EC18 SUB ESP,00000018 |

  420D4336 897DFC MOV dword ptr [EBP]-04,EDI |

  420D4339 8B4D0C MOV ECX,dword ptr [EBP]+0c |

  420D433C 8B7D08 MOV EDI,dword ptr [EBP]+08 |->syscall参数

  420D433F 8975F8 MOV dword ptr [EBP]-08,ESI |

  420D4342 8B5510 MOV EDX,dword ptr [EBP]+10 |

  420D4345 895DF4 MOV dword ptr [EBP]-0c,EBX

  420D4348 E81014F4FF CALL near32 ptr 4201575d

  420D434D 81C3835F0500 ADD EBX,00055f83

  420D4353 8D77FF LEA ESI,dword ptr [EDI]-01

  420D4356 83FE02 CMP ESI,00000002

  420D4359 8D75F0 LEA ESI,dword ptr [EBP]-10

  420D435C 0F477514 CMOVA ESI,dword ptr [EBP]+14

  420D4360 53 PUSH EBX

  420D4361 89FB MOV EBX,EDI

  420D4363 B81A000000 MOV EAX,0000001c //system call number value

  420D4368 CD80 INT 80 //调用0x80

  420D436A 5B POP EBX

  420D436B 3D00F0FFFF CMP EAX,fffff000

  420D4370 89C6 MOV ESI,EAX

  420D4372 760E JBE short ptr 420d4382

  420D4374 F7DE NEG ESI

  420D4376 E8C912F4FF CALL near32 ptr 42015644

  420D437B 8930 MOV dword ptr [EAX],ESI

  420D437D BEFFFFFFFF MOV ESI,ffffffff

  420D4382 85F6 TEST ESI,ESI

  420D4384 782A JS short ptr 420d43b0

  420D4386 85FF TEST EDI,EDI

  420D4388 7426 JE short ptr 420d43b0

  420D438A 83FF03 CMP EDI,00000003

  420D438D 7721 JA short ptr 420d43b0

  420D438F E8B012F4FF CALL near32 ptr 42015644

  420D4394 C70000000000 MOV dword ptr [EAX],00000000

  420D439A 8B45F0 MOV EAX,dword ptr [EBP]-10

  420D439D 8B5DF4 MOV EBX,dword ptr [EBP]-0c

  420D43A0 8B75F8 MOV ESI,dword ptr [EBP]-08

  420D43A3 8B7DFC MOV EDI,dword ptr [EBP]-04

  420D43A6 89EC MOV ESP,EBP

  420D43A8 5D POP EBP

  420D43A9 C3 RETN

  ---------------------------------------------------------------------

 

[1] [2] [3] [4] [5] 下一页  

共8页: 上一页 1 [2] [3] [4] [5] [6] [7] [8] 下一页

上一篇:Informix-Online 7.30的安装及管理   下一篇:UNIX 派生系统:NetBSD 入门


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·UNIX 派生系统:NetBSD 入门
·Informix-Online 7.30的安装及管理
·使用 UNIX 进行文本处理
·NFSv4 提供无缝的网络访问
·深度探索 OpenBSD操作系统
·在Unix下用命令行中完成所有的工作
·使用 m17n 实现各国语言间代码移植
·嵌入式开发:手机中Linux操作系统扫盲
·借助 UNIX 成为更优秀的博客
·嵌入式Linux: uClinux操作系统移植
·simp server for unix 配置教程
·UNIX/Linux编程相关工具和资源
·Solaris 10实现安全Kerberos身份验证
·基于Unix系统Web服务器安全指南
·让 UNIX 和 Linux 一起工作
·将Unix应用程序移植到Linux系统详解
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Unix Shell程序编写的方法详解
·高手进阶:UNIX系统环境下高级编程一例
·freebsd目录架构
·Unix/Linux中Cron的用法
·Unix主流操作系统
·Unix环境高级编程一例
·Linux的NAPI和Solaris的GLDv3
·redbook 上的LVM
·HP 下db2定时备份脚本
·SUID和SGID的详细解
·NT和UNIX下FTP非交互方式文件传输
·Solaris系统性能监控之一:处理器监控
  阅读排行
·Solaris 10实现安全Kerberos身份验证
·更改CDE GUI的分辨率和刷新率
·Unix Shell程序编写的方法详解
·solaris下,添加静态路由的方法
·NFSv4 提供无缝的网络访问
·在Unix下用命令行中完成所有的工作
·HP-UX Glance的用法
·使用 m17n 实现各国语言间代码移植
·Informix-Online 7.30的安装及管理
·借助 UNIX 成为更优秀的博客
·深度探索 OpenBSD操作系统
·Gentoo 2005.1 完整的USE参数清单中文
·dos2unix, unix2dos 对应的命令
·新手入门:debian的一句话问答
·手机中的Linux操作系统扫盲
网摘收藏: