-----------------------------------------------------牢骚,不用看-----------------------------------

最近又回到了操作系统的研究,搞来搞去,发现自己基本啥都会,精的不多。这是好,还是不好,我现在也不知道,反正不能克制自己,看到有意思的东西就想弄弄。 主要的目标还是定于底层,照目前的发展来看,以后应用层肯定是web的天下,web式的操作系统应该是主流。但支持这个系统的底层系统也会不少,按我个人情况,写写c和汇编应是强处。快奔三的人了,感觉还是一玩是处,虽然一直在努力,也是一直没啥突破。

----------------------------------------------------正文开始---------------------------------------

相信很多人都被这个东东给困扰了吧,有看到网上其他高手提出的方案,死循环改eip之类,试了下,感觉不爽,昨天晚上在床上想了一下,白天利用上班时间给实现了,(嘿嘿),首先给图,这是调试,已在调试状态进入了保护模式。

bochs

代码:

LABLE_BEGIN:
        mov  dx, cs
        mov  cx, 400h  ;;400h,自己乱定的,可以改,这个就是调试时用的断点
        mov  ds, cx
        mov  byte [ds:0], 00eah    ;;ea是jmp的机器码,加下面两句就是 jmp offset:seg,也就是跳回
        mov  word [ds:1],LABLE_REAL_START
        mov  word [ds:3], dx
        jmp  400h:0h           ;;跳到断点
LABLE_REAL_START:
        原来的代码

原理很简单,自己先设一个段,这个段可以用bochsdbg能断下来的,然后在段里面填shellcode,(也就是机器码) jmp offset:seg,跳回去,执行原来的代码。

posted on 2010-03-01 09:30  杂草丛  阅读(1613)  评论(0编辑  收藏  举报