[转载]简析Linux与FreeBSD的syscall与shellcode

2009-05-13 04:46:18来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、概述
  又是一个不眠的夜晚,其实这篇文档是不应该发表的,因为保密的原则吧,但是我仔细
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    |

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:通过disc1修复因改动fstab文件后的启动故障

下一篇:FreeBSD 's chinese input cann't run?