C语言反汇编02:结构体

网友投稿 886 2022-09-20

C语言反汇编02:结构体

C语言反汇编02:结构体

分析C语言struct的反编译结构

1.编写测试用的代码2.反编译分析

1.编写测试用的代码

2.反编译分析

xor 相当于高级语言的NULL,异或之后=0,也就是置空,对应代码={}mov dword ptr[stu1],eax dword 4字节,初始化一个4字节的指针,初始化 const char* namemov dword ptr[ebp-18h],eax dword 4字节偏移,初始化 int nummov dword ptr[ebp-14h],eax dword 4字节偏移,初始化 int agemov dword ptr[ebp-10h],eax dword 4字节偏移,初始化 groupmov dword ptr[ebp-0Ch],eax dword 4字节偏移,初始化 score

结构体的存储和数组类似,在内存中是连续的,所以可以使用遍历来找相关数据

分别给各个参数赋值movss xmm0,dword ptr[ebp-0Ch],xmm0 其中xmm0是浮点寄存器,movss后缀带ss一般都是浮点运算符,浮点类型比较特殊,包括float及doubleFPU浮点寄存器一共8个,从xmm0-xmm7

```html/xmlxmm0:0.00 0.00 0.00 0.00xmm1:0.00 0.00 2.00 2.00xmm2:749.00 408.00 0.00 1.00xmm3:0.00 0.00 2.00 1.60xmm4:8.00 0.12 0.50 0.00xmm5:1.00 0.00 0.00 0.00xmm6:0.00 0.00 0.00 0.00xmm7:0.00 0.58 0.00 0.00

--- 第三块代码 ![image.png](https://s2./images/20210725/1627189722690981.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) 理论来说占据的内存应该是(4+4+4+1+4)17个字节 而打印出来的却是20字节,C语言内存会对齐,加快寻址效率 这个主要和时代发展有关系,初代PC的时候内存昂贵,容量小,所以会节省内存开销 随着时代的发展,内存便宜容量大,一般都是4字节对齐,加快寻址,也和操作系统有关系 ---

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:不好意思,Windows 11 已被爆破!
下一篇:手把手教你使用ADB卸载手机内置App软件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~