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学习

这张表牢记于心

延迟绑定意思就是执行完一次后,下次就可以直接调用函数的真实地址

参考文章:https://blog.csdn.net/qq_18661257/article/details/54694748?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162425132016780274111522%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162425132016780274111522&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-54694748.pc_search_result_before_js&utm_term=got%E8%A1%A8%E5%92%8Cplt%E8%A1%A8&spm=1018.2226.3001.4187

用文章的思路在看张图

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)的主要内容,如果未能解决你的问题,请参考以下文章

9-6学习打卡(6.22)

9-6 (9-1?) 学习打卡(6.15)

9-6 学习打卡 (9.6)

9-6学习打卡(6.14)

9-6(8-5)学习打卡(6.23)

9-6(6-2?)学习打卡(6.17)