您现在的位置是:课程

周哥教IT.C语言与底层汇编

2023-06-13 21:01课程 人已围观

周哥简介
周哥:男,真名周扬荣,毕业于中科院软件所。创办了“麦洛科菲”高端IT安全培训 。


在从事程序设计与开发期间,主要参与研发的产品包括: 
1.“火眼”Rootkit检测工具
2.基于Linux内核开发的服务器双机热备
3.Solaris内核声卡,显卡驱动
4.Comodo Internet Security 中的Defense+/Sandbox内核驱动开发
5.360安全卫士文件防火墙,桌面流氓图标智能防护
6.拥有国家发明专利两项
7.著有《程序员求职成功路:技术、求职技巧与软实力培养》,《电脑系统与数据安全防护》,《加密与解密-第4版》(作者之一)等书,在当当,京东360,CSDN等网站广获读者5星好评和推荐,并被包括北京大学,清华大学,中国科学技术大学在内的众多高校图书馆收藏。

此外,曾亲临美国加州硅谷工作生活过一段时间,并在SUN公司总部做过Solaris内核开发的技术报告;还曾经作为海文学校计算机专业考研讲师,负责中科院计算机专业考研专业课的课程讲解。 

课程大纲
汇编语言是一门比C语言更底层的编程语言,在程序调试,逆向分析,反病毒,漏洞分析与挖掘等领域都要求大家熟悉和精通汇编语言。而且从汇编层面来理解C语法中的一些重点或难点(比如i++与++i,函数传参,函数调用约定等),能够更好的做到知其然并知其所以然,以前难懂难理解的地方会一目了然,豁然开朗。本课程将从汇编语言基础开讲,抓住汇编与C语言的联系,促进大家理解好和掌握好C语言与汇编。
  1. 课程序言
  2. 冯洛依曼体系结构
  3. 寄存器
  4. 汇编版hello world
  5. 内存寻址
  6. cisc指令集VS risc指令集
  7. 传送指令集
  8. eflags标志寄存器操作
  9. 算数运算指令
  10. 逻辑位运算
  11. 移位运算
  12. 串操作指令
  13. 跳转指令
  14. intel和at&t汇编
  15. 汇编花指令
  16. C语言调用约定与汇编
  17. C语言函数传参与汇编
  18. C语言语句与汇编
  19. C语言与X64汇编、调用约定
学员评价
感谢麦洛克菲,讲得比大学老师好!

课程勘误:
第二章汇编指令,串操作指令一节,对于在asm_strncmp中对jns和js指令的使用有误。新的实现代码:


补充讲解:
1,在讲汇编返回指令时,补充对ret/retn/retf/ret n的区别如下:
RETN/RETF 在汇编代码中的形式如下:
   RETN
   RETN   N
   RETF
   RETF   N
        RET
        RET    N

其中 retn 中的 n 意即 near retf 中的 f 意即 far
   RETN 等价于一条指令:
        POP   eip
   RETF 等价于两条指令:
   POP   eip
   POP   CS
而带有操作数N的 RETN/RETF 指令则是在 POP 之后,执行 ESP=ESP+N 。比如:
   RETF 8等价于:
   pop eip
   pop cs
   add esp, 8 
   RET既有可能是retn,也有可能是retf,由编译器决定。

2,在讲入栈出栈指令push和pop的时候,需要注意一下栈的如下四种形态(FA,EA,FD,ED):

FD:Full Descend Stack 满递减栈
ED:Empty Descend Stack 空递减栈
FA:Full Ascend Stack 满递增栈
EA:Empty Ascend Stack 空递增栈

a:满递减栈(FD),栈往低地址生长,栈顶指针指向最后一个入栈的有效数据项,入栈时栈顶指针先减,再存数据;出栈时先取数据,栈顶指针再加;
x86和arm都是满递减栈,所以在这种情况下:

push eax等价于:
sub esp, 4
mov [esp], eax

pop eax等价于
mov eax, [esp]
add esp, 4

b:空递减栈(ED),栈向低地址生长,栈顶指针指向下一个入栈的空间,先存数据,栈顶指针再减;先加栈顶指针,再取数据

push eax等价于:
mov [esp], eax
sub esp, 4

pop eax等价于
add esp, 4
mov eax, [esp]

c:满递增栈(FA),栈向高地址生长,栈顶指针指向最后一个入栈的有效数据项,栈顶指针先增,再存数据;先取数据,栈顶指针再减

push eax等价于:
add esp, 4
mov [esp], eax

pop eax等价于
mov eax, [esp]
sud esp, 4

d:空递增栈(EA),栈往高地址生长,栈顶指针指向下一个入栈的空间,先存数据,栈顶指针再增;先减栈顶指针,再取数据

push eax等价于:
mov [esp], eax
add esp, 4

pop eax等价于
sub esp, 4
mov eax, [esp]


勘误提示:如您在学习过程中发现任何“错误”,请通过email:zyr(at) 告知我们错误所在的课程名称和错误所在视频的时间起始位置。错误一经我们确认,我们将会在该门课程的“课程概述”里提供“错误更正”信息,并对您表示衷心的感谢。 
-->

站点信息

  • 文章统计篇文章