首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java开发操作系统:一个程序向另一个程序伸出的咸猪手

接着我们在本地目录创建一个新文件叫crack.c,其内容如下: void main() { char *p = (char*)0x123; p[0] = 'c'; p[1] =...于是在crack.c中,它对内存地址为0x123的地方写入字符串”crack”,那就意味着对hlt加载用户进程的内存空间写入对应字符串!...完成上面代码后,我们在java项目中,增加代码,一是用来编译crack进程,而是把crack代码写入虚拟磁盘。...在OperatingSystem.java中,将代码做如下添加: public void makeFllopy() { writeFileToFloppy("kernel.bat", false...此时我们可以看到,运行hlt命令,执行用户进程的控制台窗口居然输出了字符串”crack”,而这个字符串正是crack.c在执行时,写入地址0x123的字符串。

52340
您找到你想要的搜索结果了吗?
是的
没有找到

《Linux内核分析》之计算机是如何工作的 实验总结

寻址命令 movl %eax,%edx edx =eax; 解释:register mode 寄存器寻址 本句含义:将eax寄存器里的内容放到edx寄存器中,相当于后面的edx =eax movl $0x123...,%edx edx = 0x123; 解释: immediate  立即寻址 $+16进制的数字即:立即数是以¥开头的数值。...和内存无关 本句含义:将数值直接放在edx中,相当于后面的edx = 0x123 movl 0x123,%edx edx=*(int32_t*)0x123; 解释: direct 直接寻址 直接访问一个指定的内存地址的数据...无$,表一个地址 本句含义:将内存地址16进制的123所指向的内存数据放到edx中,相当于后面 edx=*(int32_t*)0x123即c语言中将数值强制转换为32位int变量的指针,在用一个*的指针取其指向的值

99710
领券