零基础逆向工程15_C语言09_位运算
1.汇编中的移位指令
算数移位指令
指令格式:SAL/SAR Reg/Mem, CL/Imm
SAL(Shift Arithmetic Left):算数左移
SAR(Shift Arithmetic Right):算数右移
逻辑移位指令
指令格式:SHL/SHR Reg/Mem, CL/Imm
SHL(Shift Left):逻辑左移
SHR(Shift Right):逻辑右移
循环移位指令
指令格式:ROL r/m, i8 ROR r/m, CL
ROL(Rotate Left):循环左移
ROR(Rotate Right):循环右移
带进位的循环移位指令
指令格式:RCL r/m, i8 RCR r/m, CL
RCL(Rotate through Carry Left):带进位循环左移
RCR(Rotate through Carry Right):带进位循环右移
总结参考:百度文库
2.C语言中的移位指令
1.与运算 &
2.或运算 |
3.非运算 ~
4.异或运算 ^
5.移位运算 << >>
3.自我检测
(使用位移操作指令,比如:& | ~ ^ << >>
等)
1.定义一个unsiged char 类型,通过程序为第3、5、7位赋值,赋值时不能影响到其他位原来的值。
2.判断某个位的值是否为1.
3.读取第7,6,5位的值,以十进制显示(unsigned)。
4.用十六进制文本编辑器分别打开一个.exe .dll .sys .txt .doc .jpg .pdf等将前四个字节写下来
5.讲一个在十六进制编辑器(WinHex)中打开的.exe文件,拖拽到最后,观察文件中的大小和硬盘上的大小
零基础逆向工程15_C语言09_位运算的更多相关文章
- 零基础逆向工程14_C语言08_指针02_反汇编
1.指针数组 5: char* keyword[] = {"if", "for", "while", "switch"} ...
- 零基础逆向工程13_C语言07_指针01_反汇编
1."带*类型"的特征探测 宽度 在同一个平台下,任何指针变量的尺寸都是一样的(都等于系统字长),如在32位平台中任何类型指针宽度都是32位. 声明 1.带有* 的变量类型的标准写 ...
- 零基础逆向工程12_C语言06_switch语句反汇编
12_C语言06_switch语句反汇编 switch语句反汇编 测试环境:VC++6.0 分支少于4的时候没有意义,编译器会生成类似if...else之类的反汇编,不超过三个分支,不会生成索引表. ...
- 零基础逆向工程11_C语言05_结构体
结构体小结 结构体是按照分配的大小,局部变量会自动数据对齐 1字节对齐,省空间,但cpu查找效率低 4字节对齐,不省空间,但cpu查找效率高 VC6默认的结构对齐大小 项目右键-> settin ...
- 零基础逆向工程16_C语言10_宏定义_头文件_内存分配_文件读写
#define 无参数的宏定义的一般形式为:#define 标识符 字符序列 如:#define TRUE 1 注意事项: 1.之作字符序列的替换工作,不作任何语法的检查 2.如果宏定义不当,错误要到 ...
- 狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(2)
前文链接:狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(1) 小甲鱼在很多情况下是跟着谭浩强鹦鹉学舌,所以谭浩强书中的很多错误他又重复了一次.这样,加上他自己的错误,错谬之处难以胜数. 由于拙 ...
- 零基础逆向工程20_PE结构04_任意节空白区_新增节_扩大节添加代码
向代码节添加代码实现 作者经过一周不断的失败,再思考以及无数次调试终于实现. 思路:八个步骤 1. 文件拷到文件缓冲区(FileBuffer) //图示见(零基础逆向工程18之PE加载过程) 2. 文 ...
- 【C语言】位运算
编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位0).函数调用形式为getbits(value,n1,2).----简单题目遇到想不到的问题 c语言位运算经典问题: ...
- Java基础-一文搞懂位运算
在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!), ...
随机推荐
- POJ2253(djkstra求最长最短边)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 32257 Accepted: 10396 Descrip ...
- mysql create table
- strTemp.Format ("%.*lf",3,600.0);
CString strTemp; strTemp.Format ("%.*lf",3,600.0); 这句话的含义?求指教 优质解答 这就是一个格式化输出,分号之前的CStri ...
- python的logging模块详细使用demo
import logging import os from logging import handlers from datetime import datetime class MyLog(): d ...
- Linux安装JDK1.7 prm
[转]Linux安装JDK1.7 prm 一.卸载JDK Linux会自带JDK,如果不使用自带版本的话需要卸载. 1.卸载系统自带的jdk版本 查看自带的jdk #rpm -qa | ...
- win7+64位+Oracle+11g+64位下使用P…
1)安装Oracle 11g 64位 2)安装32位的Oracle客户端( instantclient-basic-win32-11.2.0.1.0) 下载instantclient-basi ...
- QListWidget笔记
1.头文件:#include <QListWidget> 2.继承自:QListView 3.基本代码: #include "mainwindow.h" #includ ...
- 滴滴Booster移动APP质量优化框架 学习之旅
推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 一.Booster简介 Booster是滴滴最近开源一个的移动应 ...
- PCANet: A Simple Deep Learning Baseline for Image Classification?----中文翻译
一 摘要 在本文中,我们提出了一个非常简单的图像分类深度学习框架,它主要依赖几个基本的数据处理方法:1)级联主成分分析(PCA);2)二值化哈希编码;3)分块直方图.在所提出的框架中,首先通过PCA方 ...
- 集成Python Shell
每次启动shell会话都要导入Python相关对象(数据库实例和模型),这是件十分枯燥的工作.为了避免一直重复导入,我们可以做些配置,让flask-script的shell命令自动导入特定的对象. F ...