杂记

操作数:

立即数:
寄存器:
内存地址:

寄存器:

通用寄存器:CPU在执行期间使用。
段寄存器:用于定位内存节。
状态标志:用于做出决定。
指令指针:用于定位要执行的下一条指令。
寄存器

32位  EAX = _ _ _ _ | _  _  _  _
                   E   AX    H L 

通用寄存器:

-用于存储数据或内存地址,乘法和除法只能用 EAX 和 EDX
-EAX通常存储函数的返回值。 

知识点

[ ]括起来的操作数是对内存中 数据的引用,地址中存的数的值进行操作。
inc 和 dec 将一个寄存器加一和减一
add sub 
mul(乘  --操作:‘值’*EAX放入 EAX和EDX中 EDX存高32位 EAX存低32位) 
div(除 --操作:将EAX 和 EDX 中放的值 除以 ’值‘放到 EAX(商) 和 EDX(余数)中)
imul 和 idiv 是上两个的有符号版本
shr 和 shl 对寄存器的移位运算 填零
ror 和 rol 循环移位  补上来
图片.png

图片.png

知识点

-条件指令
test 和 cmp 作比较的指令
test 与 and 指令功能一样,但它不会修改其使用的操作数,只设置标志位
cmp 与 sub指令功能,但不修改操作数,只设置标志位。
-分支指令

工具

-ltrace ./程序名  查看程序执行过程
-cat /proc/程序pid/maps   查看程序执行中的栈的情况
-查看pid pidof + 程序名
-nact(nmap) -v(信息)-c(程序) -l(监听那个端口)-k(keep)
-nc 连接 
灌入程序.png

-./程序名 运行 +& 显示程序的pid
-vim 
    - /+字符  搜索字符  n 下一个匹配
    - tabe + 文件名 新建一个文件  gt 命令切换标签
    - %!xxd 打开xxd 在 vim 中  - %!xxd -r 保存之前得修改
-连接器  编译器  分配器
-perl 
-gcc
    -o 输出文件
    -m32 32位程序
    -zexecstack 关闭NX
    -fno-stack-protector  关闭canary
-nasm 
   -o 指定输出文件名
   -f  指定文件类型
-objdump 
    -d  反汇编
    -M  
-objcopy
    -O (binary)指定文件 
-xxd
    -i  生成一段code
-vim
    :tabe + 文件名 新开一个文件
-nact 
    -v 调试信息
    -c 运行程序
    -l  监听端口主机
    -k  保持
-strace 
    -i 显示运行地址 
-(cat shell;cat) | nc ip 端口
-cat /proc/`pidof test3`/maps
-dmesg  查看程序坏在哪
-cyclic + num  [pwntools 工具] 生成 num 个字符
    -l + 字符串 查找偏移长度
1.打remote 会直接结束按 回车 2.按回车会一直可以回车
-which  查看程序位置
-hexedit
    -
- 0A 机器码为换行 eb 是跳转
- ROPgadget 
    --binary
pwntools 错误解法
-



-视频
  ais3
    -(1)
    -工具
    -shellcode
    -ret to shellcode(无保护)
    -rop(+NX  增加了 NX难度)
rop用途

    -syscall

你可能感兴趣的:(杂记)