计算机系统
文章平均质量分 87
hnu计算机系统课程相关
yeyuhl
博客:https://yeyuhl.github.io/
展开
-
计算机系统期末复习
在这一步中,链接器将所有相同类型的节合并为同一类型的新的聚合节,然后链接器将运行时存储器地址赋给新的聚合节,赋给输入模块定义的每个节,以及赋给输入模块定义的每个符号。原创 2023-03-24 20:48:14 · 269 阅读 · 0 评论 -
BUFLAB
同样的,这种攻击方式存在一定难度,我们需要将机器代码放到堆栈中,并将返回指针设置为该代码的起始位置,最后要撤销对堆栈状态的任何损坏。首先,当test函数执行getbuf,getbuf获取的字符串是我们预先编写好的字符串,当getbuf执行完毕后,我们将getbuf的返回地址修改成buf的首地址,这意味着接下来程序会跳转回我们输入的buf字符中,执行我们设计好的三条指令,再通过最后的ret指令使得程序返回到我们之前pushl $0x08048d52时入栈的bang的首地址,然后执行bang函数。原创 2023-04-21 21:26:47 · 238 阅读 · 0 评论 -
SHLAB
其中sigprocmask函数是关键,如果不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数,这种情况是通过阻塞信号实现的,即使用sigprocmask函数。此外提一嘴job和process的区别,job是相对shell 来说的,在shell中执行一条命令,实际上就是提交了一个job,只不过有的job需要运行很长时间,有的job很快就结束。set为指向信号集的指针,在此专指新设的信号集,如果仅想读取现在的屏蔽值,可将其置为NULL。原创 2023-04-21 21:14:35 · 252 阅读 · 0 评论 -
DATALAB
但我们发现当n=0的时候,会存在特殊情况,此时(1<<32+((~0)+1))+(~0)等价于0,n=0我们需要与上的0xffffffff而不是0,因此我们需要引入一个变量,只在n=0的时候生效。即32位的int,高16位和低16位相或,x=(x>>16)|x,如果x不全为0,即可证明x有1,x的1全部被或到低16位,如0x11010000或完之后是0x11011101,再让低16位中的高8位,或上移位后的x低16位中的低8位,依次类推,这样做的目的是,假如x中有1,经过以上操作,其最低位必为1。原创 2023-04-21 21:01:00 · 303 阅读 · 0 评论 -
BOMLAB
实验题目:BOMBLAB 实验目的:理解汇编语言,学会使用gdb调试器。程序运行在linux环境中,程序中有6个关卡(6个phase),每个phase需要用户在终端上输入特定的字符或者数字才能通关,否则会引爆炸弹(即退出程序)。需要使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。然后分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符通关。原创 2023-03-24 20:46:01 · 180 阅读 · 0 评论