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

反编译

在实验楼中我编写了如下代码:
1510297-20181021133651929-1124153398.png
通过gcc编译,得到了如下汇编代码:
1510297-20181021133745286-66565195.png
1510297-20181021133759325-1744867446.png
1510297-20181021133808694-1098394816.png
将其简化为可见部分后可得到如下汇编代码:

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 

运用本周视频所教,对此段代码进行分析,可以发现其堆栈结构变化如下:
1510297-20181021144423661-1036625336.jpg
分析堆栈变化,可以看出此段代码的功能是进行9205+666+2018的运算。

问题与处理

在完成本周测试时出现了以下问题:
测试5 在调用动态库libmymath.so用gcc编译后,可执行程序运行时shell报错说无法找到共享库:
1510297-20181021144611579-736544694.png
经过在网上查阅资料,发现原因是生成的动态库不在系统默认的库文件夹中,使用mv将动态库libmymath.so移动到/usr/lib路径后问题解决。

转载于:https://www.cnblogs.com/hzj20189205/p/9824751.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值