-
-
[原创 汇编-1.变量函数
-
发表于: 2020-9-20 11:15 1981
-
0x01 变量
在test.s中,找到定义变量的代码
1 2 3 4 | push % ebp mov % ebp, % esp and % esp, 0FFFFFFF0h sub % esp, 20h |
主要就是
push %ebp
毕竟这是两个变量
变量赋值
1 2 | mov dword ptr [esp + 1Ch ], 0 mov byte ptr [esp + 1Bh ], 61h |
可以看到0和61h(97,'a')被分别赋值到esp+1Ch和esp+1Bh。
0x02函数
调用很简单,直接call 函数名call _scanf
传参数
也很简单,直接把参数存在寄存器里,需要时去读寄存器即可
#0x03 编译器优化部分
看了别人的文章,大概说一下
1.常量折叠
一个函数定义后赋值一个固定的数,就会常量折叠,比如
1 2 | int n = 0 ; printf( "%d" ,n); |
编译器会把它变成这样
1 2 | int n = 0 ; printf( "%d" , 0 ); |
最后
·printf("%d",0);`
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-9-20 11:28
被wx_123456编辑
,原因:
赞赏
看原图
赞赏
雪币:
留言: