9-6学习打卡(6.21)
Posted 水番正文
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9-6学习打卡(6.21)相关的知识,希望对你有一定的参考价值。
最近食量变小了好多,我也不知道为什么(水喝太多了?),杭州的天气还不错挺凉快的,但我依然有点燥热,今天买了两瓶咖啡,我可以!--6.21
6.21 To Do List:
1.每日Pwn学习
2.算法导论第四章回顾,Strassen算法
3.CPP完成第四章练习,向下浏览十页
一:每日Pwn学习
这张表牢记于心
延迟绑定意思就是执行完一次后,下次就可以直接调用函数的真实地址
用文章的思路在看张图
1.首先是第一个函数调用,函数会调用到plt
ptl表里分别会有三行指令也就是图中的2 4 5
2.图中的2 plt表跳转到got表,在第一个运行这个函数之前
这个got表中的数据对应@plt函数中第二行指令也就是图中的4
3.跳转到该图中的4
4.push 0x8(这个为GOT表中的下标序号)
5.跳转地址
6.跳转到该地址(其实就是PLT[0]的地址)
7.PTL[0]的指令会进入动态链接器的入口
8.执行一个函数将真正的函数地址覆盖到got表中
几个细节TIPS:
1.第5步跳转的地址是什么
PTL[0]的地址,里面是从300开始有@plt函数,可却是跳到2f0,这之间16个字节就是PTL[0]
2. 2f0的指令是跳转到004那边这个地址其实是got表中的地址
这些都是got表中的地址
3.plt[0]可以理解成一个函数,调用了got[1]和got[2],got[0]先暂不需要理解,这个函数的作用是通过got[1]和got[2]来正确绑定一个函数的正式地址来到got表中
4.plt[0]代码做的事情则是:由于GOT[2]中存储动态链接器的入口地址,所以通过GOT[1]作为参数,跳转到GOT[2]所对应的函数入口地址,这个动态链接器会将真正地址绑定到GOT[x]中(这边有点抽象)
总体思路就是我们先call一个函数,到plt表中之后会联系got表,got表还没调用这个函数之前会跳到一个地址,到这个地址之后,这个地址指令会把一个参数(got表中的下标)压入,再跳到ptl[0],ptl[0]利用got[1]和got[2]来正确绑定一个函数的正式地址到got表中。
二:算法导论
Strassen算法比我想象的要更难C实现,收集了几篇文章,等算法学习成熟了再复现,今天只打了简单的矩阵乘法,这本书要快点看快点看,留给我的时间不多了。
三:CPP
电脑不在身边,还差几题完成练习,已向下浏览十页,今天效率好慢。
今天肚子一天都不太舒服,希望明天能好,night.
以上是关于9-6学习打卡(6.21)的主要内容,如果未能解决你的问题,请参考以下文章