首页 > 编程语言 >汇编语言基础及编译原理(网安)

汇编语言基础及编译原理(网安)

时间:2024-05-17 22:42:05浏览次数:27  
标签:二进制 汇编语言 编译 地址 网安 AT&T 链接

汇编语言基础及编译原理

二进制基础

程序的编译 汇编与链接

  • 从c语言到可执行程序
    源代码.c
    编译
    汇编代码.s
    汇编
    目标文件.o
    链接(静态库直接拷贝,动态库运行时通过动态链接方式加载)
    可执行文件(p)

x86机器指令入门

一种先进后出的数据结构
被用于保存函数的局部(保存局部变量和返回地址)
栈往低地址增长
esp栈顶指针
push 入栈
pop 出栈

  • 基础指令
    mov 寻址
    add 加操作
    sub 减操作
    lea 加载有效地址
    inc 加一
    dec 减一
    imul 乘法
    idiv 除法
    and or xor 与 或 异或
    not neg 非
    shl shr 左右移
  • jmp
    j[condition]
    cmp 比较
    call ret 函数调用/返回

Intel 与 AT&T

左右相反
AT&T中$表立即数
%为地址
intel为[]
AT&T为()

调用约定

调用约定约定了函数之间如何传参 如何传返回值

  • 调用者负责清理栈上参数(Caller Clean-up)
    cdecl
    optlink
  • 被调用者负责清理栈上参数(Callee Clean-up)
    stdcall
    fastcall
    主要是操作栈(64位寄存器中如果传参少可以直接用寄存器传参)
    eax保存返回值
    ebp保存栈顶指针

ELF与动态链接

ELF文件格式

动态链接与延迟绑定

(后面部分为CTF中的二进制内容,不需要的可以跳过)

GOT表劫持攻击

二进制漏洞类型与原理

栈溢出与堆溢出

整数溢出

释放后使用(UAF)

标签:二进制,汇编语言,编译,地址,网安,AT&T,链接
From: https://www.cnblogs.com/qqjz-l/p/18194571

相关文章

  • LuckFox-pico 入门记录一:编译环境与GPIO
    LuckFoxRV1106点灯本文使用VMwave+ubuntu20.04虚拟机,并用CLion开发linux,简单记录一下配置过程;1虚拟机安装拿到板子,首先是配置环境,虚拟机选择ubuntu20.04,安装教程随便搜一下就行,网络配置选择NAT就行,可以不选择桥接模式,其他没有什么注意事项。比较难的一点是samba共享文件夹......
  • 交叉编译环境配置(arm)
    1.拿到对应厂商给的交叉包,如:arm-rockchip830-linux-uclibcgnueabihf.tar.xz2.上传到对应的服务器上(x86的centos或者ubuntu都可以),解压到目录3.配置环境变量在交叉包arm-rockchip830-linux-uclibcgnueabihf的下边,有一个脚本env_install_toolchain.sh,直接执行即可配置成功,可/ro......
  • NX(DEP)、Canary(FS)、 RELRO(ASLR)、PIE编译选项
    CANARY(栈保护溢出标志)这个选项表示栈保护功能有没有开启。栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖站上的返回地址来让shellcode能够得到执行。当启动栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当但会真正返回的时......
  • C++_交叉编译和pybind11
    编译本地编译和交叉编译本地编译当前平台编译交叉编译交叉编译是指在一个平台上编译另一个平台上运行的代码。在C++中,交叉编译通常涉及以下步骤:安装交叉编译工具链。配置编译环境。使用工具链编译代码。首先,确保安装了交叉编译工具链,例如gcc-arm-l......
  • 开源流媒体服务器ZLMediaKit在Windows上编译过程详解(附编译后版本下载)
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245以上讲了ZLMediaKit的具体使用场景,文章中使用的windows的版本不是最新版,比如在flv播放时,旧......
  • linux内核Makefile和busybox编译
    刚开始学习Linux时的一些记录linux内核配置体验在arch/arm/configs/目录下面找到相似的配置文件,其名称一般为xxx_defconfigmakexxx_defconfigmakemenuconfig配置你的内核,配置完成后生成.config文件在TOPDIR,该文件由于是以‘.’开头,故在linux下是一个隐藏的文件。生成......
  • flutter开发项目编译失败依赖冲突的解决方法dependency_overrides
    1.问题在复杂的稍等大点的flutter项目当中,依赖各种第三方框架是很正常,而且也有有很多依赖的,但有时难免存在不同的框架刚好使用了同一个依赖库的不同版本,特别是依赖了系统的某个库的不同版本这个时候就难免会出现同一个依赖库不同版本冲突的编译失败问题2.现象Becauseflut......
  • Android源码编译报错 FAILED: out/soong/build.ninja
    网上查了比较多资料发现是swap分区不够导致的,修改swap分区大小参考如下:https://blog.csdn.net/phj1990/article/details/124961180https://zhuanlan.zhihu.com/p/399986218swap分区大小选择:内存<=4g:Swap至少4G内存4~16G:Swap至少8G内存16G~64G:Swap至少16G内存64......
  • 反编译APK获取代码&资源
    反编译APK获取代码&资源"反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的A......
  • AOSP下载编译
    本例程使用清华镜像站提供的AOSP。1.Android镜像使用帮助注意:本镜像是AOSP镜像,AndroidSDK因版权原因,我们不能提供镜像服务。可访问<https://cs.android.com>或<https://github.com/aosp-mirror>在线搜索及浏览AOSP源码。参考Google教程<https://source.androi......