• 20189205 《Linux内核原理与分析》第二周作业


    反编译

    在实验楼中我编写了如下代码:

    通过gcc编译,得到了如下汇编代码:



    将其简化为可见部分后可得到如下汇编代码:

    5	g:
    8		pushl 	    %ebp
    11		movl  	    %esp,%ebp
    13		movl 	    8(%ebp),%eax
    14		addl	    $666,%eax
    15		popl	    %ebp
    18		ret
    24	f:
    27		pushl 	    %ebp
    30		movl  	    %esp,%ebp
    32		subl	    $4,%esp
    33		movl	    8(%ebp),%eax
    34		movl	    %eax,(%esp)
    35		call	    g
    36		leave
    39		ret
    45	main:
    48		pushl	    %ebp
    51		movl  	    %esp,%ebp
    53		subl	    $4,%esp
    54		movl	    $9205,(%esp)
    55		call	    f
    56		addl	    $2018,%eax
    57		leave
    60		ret 
    

    运用本周视频所教,对此段代码进行分析,可以发现其堆栈结构变化如下:

    分析堆栈变化,可以看出此段代码的功能是进行9205+666+2018的运算。

    问题与处理

    在完成本周测试时出现了以下问题:
    测试5 在调用动态库libmymath.so用gcc编译后,可执行程序运行时shell报错说无法找到共享库:

    经过在网上查阅资料,发现原因是生成的动态库不在系统默认的库文件夹中,使用mv将动态库libmymath.so移动到/usr/lib路径后问题解决。

  • 相关阅读:
    POJ
    使用composer 显示错误美化
    swoft配置连接池
    PHP 超级全局变量 $_GET
    phpstorm 注解路由插件
    swoft实现自动重启服务 转
    MySql添加字段命令
    团队博客12
    团队博客11
    团队博客10
  • 原文地址:https://www.cnblogs.com/hzj20189205/p/9824751.html
Copyright © 2020-2023  润新知