Xinhecuican's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
记录,分享,成长

位运算和移位运算

与运算这里的与运算并不是平常的bool运算,而是按位与。这种运算比加减法快 符号: & 例: 1010&1000=1000 1001&0110=0000 含义: 1&1=1,1&0=0,0&1=0,0&0=0,只要不是两个都是,1,那么结果就是0 应用: 替换指定位的值 一个典型应用就是大小写转换,如果平常转换我们可能要写一大堆,但是经过
2020-02-25
基础

DLL注入

消息钩子Windows操作系统GUI将键盘敲击,鼠标移动和点击,窗口大小和位置改变都看成事件(Event).消息传递过程大致为 事件发生时,首先将这个事件添加到系统的[OS message queue]中 OS判断这个事件是在哪个应用程序中产生的,然后将这个事件添加到应用程序的消息队列中 应用程序对这些消息进行处理 消息钩子就在这个传递链过程中添加一些函数,这些函数可以侦听事件甚至修改事件的参
2021-01-23
逆向

PE文件格式

PE文件时windows中的32位可执行文件。在linux中是elf。如exe,dll,scr等都是PE文件 基本结构 PE文件中的RVA(相对虚拟地址)一般不是直接转换到真实的虚拟地址的,还要加上一个基准地址(ImageBase).也就是说VA = RVA + ImageBase 这样做主要是因为DLL,DLL动态链接时如果发现这个虚拟地址已经有其他的dll了,那么就要进行重定位到其他位置,如果
2021-01-19
计算机系统基础

红黑树

性质红黑树是一颗二叉搜索树,并且在每个节点上增加一个变量来储存颜色,可以是红或者是黑。红黑树保证了没有一条路径会比其他路径长两倍。 每个节点有五个属性:color、key、left、right、p(parent)。 红黑树满足以下性质: 根节点是黑色 每个叶结点是黑色的。 如果一个节点是红色,则两个子节点是黑色 对于每个节点,从这个节点到所有后代节点的简单路径上,均包含相同数目的黑色节点。 在
2020-07-08
数据结构

内存管理

段式管理段指的是一些有相似功能的程序集合(不是准确描述),例如程序段,代码段,全局变量段等。 段的分配算法固定分区法事先把磁盘分为大小固定的分区,之后有进程来了就将它放入可以容纳的分区中。每个分区大小可以不一样,如4k,8k等。 这种方法最大的问题就是会产生很大的内碎片。例如没有空间使用了,然后来了一个大小为1k的进程,这时一块16k的分区释放了,这个进程只能进这个空间,于是浪费了15k的空间。
2020-12-26
计算机系统基础

c++函数指针备忘

语法返回值 (*指针名) (参数列表) 例:123456789101112131415int add(int x, int y){ return x + y;}int main(){ int (*func)(int a, int b); func = add; cout<< add(1, 2) << endl;}
2020-12-20
c++

linux指令学习

命令语法一次输入多条命令,可以在命令之间用 ;分割开来 语法: 命令名称 选项 参数 选项有时被称为开关(switches)或标志(flags),选项通常是由一个连字符后面接着一些字母,或者两个连字符后接着一个单词构成。例如 —help,—version(显示版本信息) 使用多个单字符选项时,可以把他们连接在一起,用一个连字符来表示。例如 ls -lF。注意,unix的选项区分大小写 实际上许多长
2020-02-16
Linux

内联汇编

简介内联汇编是在c语言代码中插入一段汇编语言,这在一些特殊的场合如操作系统中经常使用。有些时候我们想加快速度或者进行某些特殊的操作就可以使用内联汇编。 语法 关键字: asm 例123asm volatile( "movl %eax, %ebx");其中,volatile的含义是告诉编译器这段代码不需要优化,原封不动的让他执行。 语法:123456asm( 汇编语言
2020-12-06
c++

标志寄存器

标志寄存器16位中只有9位有特殊作用 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CF 0 PF 0 AF 0 ZF SF TF IF DF OF 0 0 0 0 ZFZF含义是执行完指令后结果是否为0,为0,ZF=1,不为0,ZF=0 例如12mov ax,1 ;ZF=0sub ax,1 ;ZF=1 PF奇偶标志位,它记录相关指令执行后,其
2020-01-29
汇编

Linux重定向与管道

标准输入 标准输出和标准错误基本思想:每个基于文本的程序都可以从任何源接受输入,并向任何目标输出 标准输入指的是一种读取数据的通用办法,标准输出有两种,一种是标准输出,另一种是标准错误 而输入输出其实正常情况下有shell决定。为了保证程序的输出,需要告诉shell将输出目标设置成文件。 重定向标准输出在登陆时,shell会自动将标准输入设置成键盘,将标准输出和标准错误设置成屏幕。 但是每次输入命
2020-02-29
Linux
1…1213141516…27

搜索

Hexo Fluid