Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容: 进入时 push %ebpmov %esp,%ebp 退出时 leaveret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebppop %esimov %esp,%ecxand $0xfffffff0,%esppush %eax 我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:

进入时

push   %ebpmov    %esp,%ebp

退出时

leaveret

然后我在_start上尝试了gdb,得到了以下内容

xor    %ebp,%ebppop    %esimov    %esp,%ecxand    [+++]xfffffff0,%esppush   %eaxpush   %esppush   %edxpush   [+++]x80484d0push   [+++]x8048470push   %ecxpush   %esipush   [+++]x8048414call   0x8048328 <__libc_start_main@plt>hltnopnopnopnop

我无法理解这些线条以及这背后的逻辑.

有人可以提供任何指导来帮助解释_start的代码吗?

解决方法 以下是您发布的代码 assembly source的评论.

总结一下,它做了以下事情:

>建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾
>将命令行参数的数量d出到esi中,这样我们就可以将它们传递给__libc_start_main
>将堆栈指针与16位的倍数对齐,以符合ABI.在某些版本的linux中不能保证这种情况,因此必须手动完成以防万一.
> __libc_csu_fini,__ libc_csu_init的地址,参数向量,参数个数和main的地址被作为参数推送到__libc_start_main
> __libc_start_main被调用.此函数(源代码here)设置一些glibc内部变量,最终调用main.它永远不会回来.>如果由于任何原因__libc_start_main应该返回,则会在之后放置一条hlt指令.用户代码中不允许使用此指令,并且应该导致程序崩溃(希望如此).>最后一系列nop指令是汇编程序插入的填充,因此下一个函数以16字节的倍数开始,以获得更好的性能.在正常执行中永远不会达到它.

总结

以上是内存溢出为你收集整理的linux – 了解C程序中的汇编语言_start标签全部内容,希望文章能够帮你解决linux – 了解C程序中的汇编语言_start标签所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 4, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容: 进入时 push %ebpmov %esp,%ebp 退出时 leaveret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebppop %esimov %esp,%ecxand $0xfffffff0,%esppush %eax 我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:

进入时

push   %ebpmov    %esp,%ebp

退出时

leaveret

然后我在_start上尝试了gdb,得到了以下内容

xor    %ebp,%ebppop    %esimov    %esp,%ecxand    xfffffff0,%esppush   %eaxpush   %esppush   %edxpush   [+++]x80484d0push   [+++]x8048470push   %ecxpush   %esipush   [+++]x8048414call   0x8048328 <__libc_start_main@plt>hltnopnopnopnop

我无法理解这些线条以及这背后的逻辑.

有人可以提供任何指导来帮助解释_start的代码吗?

解决方法 以下是您发布的代码 assembly source的评论.

总结一下,它做了以下事情:

>建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾
>将命令行参数的数量d出到esi中,这样我们就可以将它们传递给__libc_start_main
>将堆栈指针与16位的倍数对齐,以符合ABI.在某些版本的linux中不能保证这种情况,因此必须手动完成以防万一.
> __libc_csu_fini,__ libc_csu_init的地址,参数向量,参数个数和main的地址被作为参数推送到__libc_start_main
> __libc_start_main被调用.此函数(源代码here)设置一些glibc内部变量,最终调用main.它永远不会回来.>如果由于任何原因__libc_start_main应该返回,则会在之后放置一条hlt指令.用户代码中不允许使用此指令,并且应该导致程序崩溃(希望如此).>最后一系列nop指令是汇编程序插入的填充,因此下一个函数以16字节的倍数开始,以获得更好的性能.在正常执行中永远不会达到它.

总结

以上是内存溢出为你收集整理的linux – 了解C程序中的汇编语言_start标签全部内容,希望文章能够帮你解决linux – 了解C程序中的汇编语言_start标签所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容: 进入时 push %ebpmov %esp,%ebp 退出时 leaveret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebppop %esimov %esp,%ecxand $0xfffffff0,%esppush %eax 我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:

进入时

push   %ebpmov    %esp,%ebp

退出时

leaveret

然后我在_start上尝试了gdb,得到了以下内容

xor    %ebp,%ebppop    %esimov    %esp,%ecxand    xfffffff0,%esppush   %eaxpush   %esppush   %edxpush   x80484d0push   [+++]x8048470push   %ecxpush   %esipush   [+++]x8048414call   0x8048328 <__libc_start_main@plt>hltnopnopnopnop

我无法理解这些线条以及这背后的逻辑.

有人可以提供任何指导来帮助解释_start的代码吗?

解决方法 以下是您发布的代码 assembly source的评论.

总结一下,它做了以下事情:

>建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾
>将命令行参数的数量d出到esi中,这样我们就可以将它们传递给__libc_start_main
>将堆栈指针与16位的倍数对齐,以符合ABI.在某些版本的linux中不能保证这种情况,因此必须手动完成以防万一.
> __libc_csu_fini,__ libc_csu_init的地址,参数向量,参数个数和main的地址被作为参数推送到__libc_start_main
> __libc_start_main被调用.此函数(源代码here)设置一些glibc内部变量,最终调用main.它永远不会回来.>如果由于任何原因__libc_start_main应该返回,则会在之后放置一条hlt指令.用户代码中不允许使用此指令,并且应该导致程序崩溃(希望如此).>最后一系列nop指令是汇编程序插入的填充,因此下一个函数以16字节的倍数开始,以获得更好的性能.在正常执行中永远不会达到它.

总结

以上是内存溢出为你收集整理的linux – 了解C程序中的汇编语言_start标签全部内容,希望文章能够帮你解决linux – 了解C程序中的汇编语言_start标签所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 6, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容: 进入时 push %ebpmov %esp,%ebp 退出时 leaveret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebppop %esimov %esp,%ecxand $0xfffffff0,%esppush %eax 我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:

进入时

push   %ebpmov    %esp,%ebp

退出时

leaveret

然后我在_start上尝试了gdb,得到了以下内容

xor    %ebp,%ebppop    %esimov    %esp,%ecxand    xfffffff0,%esppush   %eaxpush   %esppush   %edxpush   x80484d0push   x8048470push   %ecxpush   %esipush   [+++]x8048414call   0x8048328 <__libc_start_main@plt>hltnopnopnopnop

我无法理解这些线条以及这背后的逻辑.

有人可以提供任何指导来帮助解释_start的代码吗?

解决方法 以下是您发布的代码 assembly source的评论.

总结一下,它做了以下事情:

>建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾
>将命令行参数的数量d出到esi中,这样我们就可以将它们传递给__libc_start_main
>将堆栈指针与16位的倍数对齐,以符合ABI.在某些版本的linux中不能保证这种情况,因此必须手动完成以防万一.
> __libc_csu_fini,__ libc_csu_init的地址,参数向量,参数个数和main的地址被作为参数推送到__libc_start_main
> __libc_start_main被调用.此函数(源代码here)设置一些glibc内部变量,最终调用main.它永远不会回来.>如果由于任何原因__libc_start_main应该返回,则会在之后放置一条hlt指令.用户代码中不允许使用此指令,并且应该导致程序崩溃(希望如此).>最后一系列nop指令是汇编程序插入的填充,因此下一个函数以16字节的倍数开始,以获得更好的性能.在正常执行中永远不会达到它.

总结

以上是内存溢出为你收集整理的linux – 了解C程序中的汇编语言_start标签全部内容,希望文章能够帮你解决linux – 了解C程序中的汇编语言_start标签所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
linux – 了解C程序中的汇编语言_start标签_系统运维_内存溢出

linux – 了解C程序中的汇编语言_start标签

linux – 了解C程序中的汇编语言_start标签,第1张

概述我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容: 进入时 push %ebpmov %esp,%ebp 退出时 leaveret 然后我在_start上尝试了gdb,得到了以下内容 xor %ebp,%ebppop %esimov %esp,%ecxand $0xfffffff0,%esppush %eax 我编写了一个简单的c程序,并尝试使用GDB来调试程序.我理解在main函数中使用以下内容:

进入时

push   %ebpmov    %esp,%ebp

退出时

leaveret

然后我在_start上尝试了gdb,得到了以下内容

xor    %ebp,%ebppop    %esimov    %esp,%ecxand    xfffffff0,%esppush   %eaxpush   %esppush   %edxpush   x80484d0push   x8048470push   %ecxpush   %esipush   x8048414call   0x8048328 <__libc_start_main@plt>hltnopnopnopnop

我无法理解这些线条以及这背后的逻辑.

有人可以提供任何指导来帮助解释_start的代码吗?

解决方法 以下是您发布的代码 assembly source的评论.

总结一下,它做了以下事情:

>建立一个ebp = 0的哨兵堆栈帧,这样走遍堆栈的代码就可以轻松找到它的结尾
>将命令行参数的数量d出到esi中,这样我们就可以将它们传递给__libc_start_main
>将堆栈指针与16位的倍数对齐,以符合ABI.在某些版本的linux中不能保证这种情况,因此必须手动完成以防万一.
> __libc_csu_fini,__ libc_csu_init的地址,参数向量,参数个数和main的地址被作为参数推送到__libc_start_main
> __libc_start_main被调用.此函数(源代码here)设置一些glibc内部变量,最终调用main.它永远不会回来.>如果由于任何原因__libc_start_main应该返回,则会在之后放置一条hlt指令.用户代码中不允许使用此指令,并且应该导致程序崩溃(希望如此).>最后一系列nop指令是汇编程序插入的填充,因此下一个函数以16字节的倍数开始,以获得更好的性能.在正常执行中永远不会达到它.

总结

以上是内存溢出为你收集整理的linux – 了解C程序中的汇编语言_start标签全部内容,希望文章能够帮你解决linux – 了解C程序中的汇编语言_start标签所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1019384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存