【3.23】学习笔记

经过一段时间的学习,发现还是需要不断整理的。于是决定从今天开始,定期更新博客记录自己的学习。


1.linux指令 

    指令结尾加&可以让进程后台运行

    jobs命令可以查询后台运行程序

    fg将程序调至前台 bg让后台暂停运行程序继续运行

    

2.32位和64位系统

    注意某些情况64位地址要补00 00 00 00

    32位用栈帧来传递参数 64位使用寄存器分别用rdi(目的地址寄存器) rsi (源地址寄存器)rdx(i/o指针) rcx(循环寄存器) r8 r9 作为第1-6个传参

    rax 累加寄存器 rbx数据寄存器

    具体信息可以查询:

        https://w3challs.com/syscalls/?arch=x86_64

    本地:

         /usr/include/asm/unistd_64.sh

3.0 [ ]

    只有SI,DI,BX,BP 还有常熟可以加[ ] 

    mov ax,[di] 即将di中存的数据作为偏移地址,然后将该地址存入的数据传入ax

    mov ax,[1]即将偏移为1的地址存放的数据传入ax

    

3.lea指令和mov指令区别

    lea(load effective address)即加载有效地址,    但是不能直接从字面意思理解。

    lea ax,[1000]即将偏移地址1000传入ax


    附加查阅的资料:

        

AT&T
语法要在常数前加
$、在寄存器名前加 % 符号;Intel 语法没有相应的东西要加

AT&T
语法先写源操作数,再写目标操作数;Intel 语法先写目标操作数,再写源操作数

AT&T
语法将操作数的大小表示在指令的后缀中(b、w、l);Intel 语法将操作数的大小表示在操作数的前缀中(BYTE PTR、WORD
PTR、DWORD PTR)


4.xxd指令

    将c语言转为十六位


5.objump objcopy

    

  • -d:将代码段反汇编
  • -S:将代码段反汇编的同时,将反汇编代码和源代码交替显示,编译时需要给出-g,即需要调试信息。

6.gcc编译去除保护措施

    -fno-stack-protector用来关闭gcc编译器gs验证码机制,

     -z execstack用来关闭ld链接器堆栈段不可执行机制

7.netcat

    具体使用随着日后学习

8.uid gid groups

    uid是指用户id,gid是首要组id,groups是附属组

9.大端小端法

    查过n次的东西....现在又来查了

    首先 : 0x12345678 12是低地址 78是高地址

    小端法:x86,DEC

        即: \x78\x56\x34\x12  即高地址在左 低地址在右

    大端法:PowerPC,IBM,网络协议(大部分)

        即:\x12\x34\x56\x78


10.gdb-peda部分指令

     checksec 检测保护措施

    pattern create 1000 生成1000的偏移

    pattern offset AA0A找偏移(具体情况具体分析)

    p指令:输出

11.乱七八糟的一堆工具和指令

    hexedit

    ldd   :打印所需so文件

    vim 拷贝:yy复制 p是拷贝 但是多文件件拷贝情况略有不同

     ROPgadget:  https://github.com/JonathanSalwan/ROPgadge 构造ROP

    file:该指令可以查看运行环境和魔数等

    plt表是可用地址,并非真正的地址

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值