正向基础
有趣的返回地址
1 | void HelloWorld() |
永不磨灭的Hello World
1 | void Fun() |
以上两题找出原因,并解释
这个原因我就不自己测试了
第一题,arr[6]覆盖了返回地址,傻逼了,因为arr[5]就能覆盖ebp,arr[6] 肯定能覆盖返回地址啊
第二题, arr[i]覆盖了i,至于为什么先定义的能被覆盖,想想堆栈,先定义的,就是说我需要一块一个这个的内存空间,所以int i肯定是比较靠近ebp的,接下来才是arr[5],所以覆盖得到i
类型转换
movsx 先符号扩展,在传送 (有符号用)
1 | mov al,0ff |
movzx 先零扩展,在传送 (无符号用)
1 | mov al,0ff |
1 | void test() |
1 | void test() |
大转小,利用宽度就行,想想内存中如何存值
1 | void test() |
0x0: 78563412 实际存储
short的话,肯定就是5678
char的话肯定就是78
有符号跟无符号相加 变成有符号
无符号跟有符号相加 变成无符号
是以自身为基准
还有一些C语言的不做笔记了,因为学过了
本文作者:NoOne
本文地址: https://noonegroup.xyz/posts/78c05853/
版权声明:转载请注明出处!