初探数据类型相关问题

用int / long long储存字符类型的解释



如图,用IDA的快捷键r将该int转化为char型,该大数就变成了一个字符串,现在再按下ctrl + z

发现在v7内存的字符都应该反过来才对,造成这种情况发生的原因是此处使用的是小端序存储。
小端序存储即数据的高位字节保存在内存的高地址中,低位字节则保存在内存的低地址中。
现在以v7[0]为例,该数字在内存中会表示为十六进制储存,即0x67616c66
在地址中应2个字节2个字节存储,即 67 61 6c 66,记住,此时也为16进制
那么由于是小端序储存,现在倒过来看这4个数字,即66 6c 61 67
转换成10进制即102 108 97 103
再转化为ascii码,即f l a g
这就和最初我们所观察到的v[0] = 'glaf'(小端序)对应上了
故以此类推,v7所储存的整数在转化为字符型后,所得的字符串为
flag{fake_flag}

posted @ 2021-11-04 14:08  iPlayForSG  阅读(34)  评论(0编辑  收藏  举报