课程介绍
课程目录
课程介绍
课程目录

讲师介绍

  • 计算机专业硕士研究生,擅长C、C++和计算机安全,麦洛科菲教学总监,《程序员求职成功路:技术、求职技巧与软实力培养》作者,创立了麦洛科菲高端IT培训,培训了大量成功就职于BAT的学员

  • 课程详情

    周哥简介

    周哥:男,真名周扬荣,毕业于中科院软件所。创办了麦洛科菲高端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语言与汇编。

    课程序言
    冯洛依曼体系结构
    寄存器
    汇编版hello world
    内存寻址
    cisc指令集VS risc指令集
    传送指令集
    eflags标志寄存器操作
    算数运算指令
    逻辑位运算
    移位运算
    串操作指令
    跳转指令
    intel和att汇编
    汇编花指令
    C语言调用约定与汇编
    C语言函数传参与汇编
    C语言语句与汇编
    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]





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

    温馨提示
    • 请勿私下交易
      请勿在平台外交易。与机构和老师私下交易造成的任何损失及纠纷,腾讯课堂不承担任何责任
    • 听课说明

      1、电脑:访问腾讯课堂官网 ke.qq.com 查看我的课表或下载win/mac客户端听课

      2、手机/平板:下载腾讯课堂APP, 进入学习页面听课