首页 > UniX技术

全面了解Linux与FreeBSD的syscall相同与不同!

时间:2009-04-15 17:57:37  作者:chinaitlab  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
  --]概述又是一个不眠的夜晚,其实这篇文档是不应该发表的,因为保密的原则吧,但是我仔细google了下,没有类似的文章,而且发表的这部分文档也不至于被认为是什么绝......

  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

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

 

 

  为了简单分析,我们就看这里的代码:

  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

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

  当然从上面的代码,我们只能看到Linux在更深的一层调用syscall的一个汇编代码过程,换句话

  说,可能上面的这些代码都是废话:)OK,我们继续看下面的内容.

  --]FreeBSD的syscall

  FreeBSD下面的syscall我进行了两次跟进的操作才进入到内部,所以下面使用了两个过程来演示

  代码,不过从下面的代码来看FreeBSD的短了很多很多:)

  trace into one step:

  28080D98: 31C0 XOR EAX,EAX

  28080D9A: 53 PUSH EBX

  28080D9B: E800000000 CALL near32 ptr 28080da0

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

  trace into two step:

  28080DA0: 5B POP EBX

  28080DA1: 81C3AC980600 ADD EBX,000698ac

  28080DA7: 8B934C0A0000 MOV EDX,dword ptr [EBX] 00000a4c

  28080DAD: 8902 MOV dword ptr [EDX],EAX

  28080DAF: 5B POP EBX

  28080DB0: 8D051A000000 LEA EAX,dword ptr [0000001c]//system call number value

  28080DB6: CD80 INT 80

  28080DB8: 7201 JC short ptr 28080dbb

  28080DBA: C3 RETN

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

  从上面的代码来看,FreeBSD的syscall代码比Linux的短了很多很多,但是仅仅是短还是不够的,如果在看

  这个文档前你熟悉破解技术 or 溢出技术 or Intel汇编语言.我想可能大家有这样的感觉,FreeBSD的调用

  syscall的过程比Linux的要安全了很多很多,为什么这么说呢?请再返回仔细看上面的Linux/FreeBSD的汇

  编代码:)下面我们也会大概的论证下,但仅仅是猜测而已:)

  --]FreeBSD比Linux安全?

  学过破解技术的朋友,都知道通过一些跳转指令来实现对于软件的破解,当然使用跳转指令可能仅仅对一些

  简单的软件是有用处.突然发现我上面说的这句话是废话,和本文没有任何的关系,郁闷...看来脑袋里面装的

  东西多也不是什么好事情:(

如果您需转载 全面了解Linux与FreeBSD的syscall相同与不同!,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门