美文网首页
C语言资料

C语言资料

作者: 牵手生活 | 来源:发表于2022-03-01 10:08 被阅读0次

    语法部分

    C语言中文网-推荐

    其他vip不能阅读,再百度 如: C语言实现文件复制功能(包括文本文件和二进制文件)

    C语言FILE结构体以及缓冲区深入探讨(unix/linux编程实现2.4)
    c语言fread函数的用法_C语言获取文件大小(长度)

    C语言内存精讲

    程序在计算机中究竟是如何运行起来的?

    e58155ef5358f91b53c5fe510c4d8ec2_3uEu4J.png

    例如,EAX 寄存器通常被用在加法运算中,用来保存某个加数或运算结果;EIP 寄存器中存储的值是下一条指令的地址,CPU 执行完当前指令后,就会根据 EIP 的值去寻找下一条指令,也就是说如果我们改变 EIP 寄存器的值,也就会相应的改变程序的执行流程。

    在现代计算机中,通常使用ebp寄存器指向栈底,而使用esp寄存器指向栈顶。

    
    32位通用寄存器有八个,eax, ebx, ecx, edx, esi, edi, ebp, esp,
    他们主要用作逻辑运算、地址计算和内存指针,具体功能如下:
    eax(累加和结果寄存器):"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
    ebx(数据指针寄存器):"基地址"(base)寄存器, 在内存寻址时存放基地址。
    ecx(循环计数器):计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
    edx(i/o指针):总是被用来放整数除法产生的余数。
    esi(源地址寄存器):
    edi(目的地址寄存器):
    esp(堆栈指针):
    ebp(栈指针寄存器):
    以上功能并未限制寄存器的使用,特殊情况为了效率也可作其他用途。
    32位方式下寄存器名分别为 eax, ebx, ecx, edx, edi, esi, ebp, esp, r8d – r15d
    64位模式下,他们被扩展为 rax, rbx, rcx, rdx, rdi, rsi, rbp, rsp, r8 – r15.
    

    C语言内存二十)C语言内存泄露(内存丢失)
    虚拟地址空间以及编译模式

    c语言入门-Linux下C语言程序的内存布局(内存模型)

    9ec3caa588b4ec6a6055575420f065ff_1-16041510402a94.jpg

    栈(Stack)是什么?栈溢出又是怎么回事?

    207ecc4943cbce7b302ce2bb3402d9a2_1582785-20210618172648239-1203874702.png

    栈溢出攻击的原理是什么?

    C语言野指针以及非法内存操作
    用一个实例来深入剖析函数进栈出栈的过程

    函数使用默认的调用惯例 cdecl,即参数从右到左入栈,由调用方负责将参数出栈。函数的进栈出栈过程如下图所示:


    image.png

    malloc函数背后的实现原理——内存池

    image.png image.png

    C语言变量的存储类别和生存期


    逆向部分

    RC4、Base64魔改看雪CTF-变形金刚学习笔记--ida 分析so

    相关文章

      网友评论

          本文标题:C语言资料

          本文链接:https://www.haomeiwen.com/subject/hojdrrtx.html