【reverse】逆向1 数据宽度
【reverse】逆向1 数据宽度
前言
感觉学逆向的都是大佬,正好最近在看java视频的时候,发现讲课的老师居然是从逆向行业转行来的,顿时肃然起敬。于是想在暑假的最后发光发热,把逆向的基础知识学习稳固一下!
学习是跟着b站的滴水逆向学习的
1、前置知识
数学上的数字是没有大小限制的,可以无限大
但是计算机中,受到硬件的制约,数据都是有长度的
计算机中有很多容器,这些容器来装数据
如果容器存不下,计算机直接扔掉
4位宽度
4位宽度表示:假设计算机只能存储4位2进制数
按照这张图,如果我们规定计数是无符号数,那么,从0到F,可算16个数据,并且,如果F上还要加1,那么数据直接溢出为0
如果我们计数是有符号数,分为正数和负数
但是计算机存的就只有16个数据,所以正负分一半,各8个,所以0、1、2、3、4、5、6、7右半部分,我们规定是正数,F、E、D、C、B、A、9、8,左半部分我们规定是负数。
并且F是最大的负数(-1),因为F加上任意正数,都是向右转。
如果只看二进制的话,并且分正负数,我们发现四位二进制,如果是0开头的都是正数,如果是1开头的都是负数
所以是我们人来定义正负、有无符号,计算机十分单纯,只能用01来表示
8位宽度
8位宽度表示:假设计算机只能存储8位2进制数
无符号数: 0 ~ FF(255)
有符号数:
- 正数:0 ~ 7F (127)
- 负数:FF ~ F4 (-1 ~ -128)
只有我们把数看作有符号数,第一位数是1才是负数
16位宽度
16位宽度表示:假设计算机只能存储16位2进制数
32位宽度
32位宽度表示:假设计算机只能存储32位2进制数
几个重要的计量单位
BYRE 字节 8BIT
WORD 字 16BIT 2字节
DWORD 双字 32BIT 4字节
2、二进制的逻辑运算
数字电路都学过:
三种基本逻辑运算:与或非
然后还有比较重要的一个异或
与: and &
或: or |
非: not !
异或: xor ^
逻辑运算的具体应用
1、CPU如何计算4+5=?
4+5
# 4+5计算机是如何操作的?
# 我们人进行二进制计算
0000 0100
0000 0101
---------(我们使用加法,但是计算机不会)
0000 1001
# 计算机进行计算
# 1、异或(相当于不进为的加法)
0000 0100
0000 0101
---------
0000 0001
# 2、与运算(判断进位)
0000 0100
0000 0101
---------
0000 0100
# 3、与运算结果左移一位
0000 0100
---------
0000 1000
# 4、将1和3步骤异或,得到加法正确结果
0000 0001
0000 1000
---------
0000 1001
# 5、与运算(计算机验证是否结果为0)
0000 0001
0000 1000
---------
0000 0000
# 所以最终的结果就是与运算为0的结果的上一个异或运算
4-5
# 计算机没有减法,4-5 = 4 + (-5)
# 计算机中负数使用补码
0000 0100
1111 1011
---------
1111 1111
# 1、异或
0000 0100
1111 1011
---------
1111 1111
# 2、与运算
0000 0100
1111 1011
---------
0000 0000
# 因为与运算结果为0,我们取上一次异或的结果
4x5
本质就是4个5相加
4/5
本质就是算4能减去几个5(加上几个-5)
2、如果想获取某个值的第N位是多少?
如:8F的第3位是什么?
1000 1111
and 0000 0100
-------------
0000 0100
# 通过与第N位相与一个1,来看这一位是多少
# 得到的结果是0,那么测试的这一位就是0,非0就是1
3、最简单的加密算法
3、总结
- 了解计算机如何存储数据
- 了解数据宽度
- 了解正负数、无符号数的本质
- 掌握逻辑运算,并了解计算的本质
4、课后作业
1、为什么八进制数2-5在计算器中的结果是1 777 777 777 777 777 777 775?
我们看8位宽度的图
2-5肯定是个负数,以中间为分界线,FF是最小的负数(-1)
2减去一个5,就是逆时针转动5个单位,转到了FD
FD是-3,所以在计算器中,八进制2-5,16进制得到的是FFFF FFFF FFFF FFFD
【reverse】逆向1 数据宽度的更多相关文章
- C++输入输出进制、数据宽度与对齐、精度、取整
cout<<setw(4)<<setfill('0')<<a<<endl; ////样例输出 a=41输出 0041 1.数的进制 [转载]未完的c++ ...
- c/c++学习系列之取整函数,数据宽度与对齐
浮点数的取整 C/C++取整函数ceil(),floor() double floor(double x); double ceil(double x); 使用floor函数.floor(x)返回的是 ...
- 64位系统/32位系统下/8位CPU的数据宽度
不同的编译器根据不同的 64 位模型有所不同. 比如 Visual C++,从第一个支持 64 位的版本起,一直就是使用 LLP64 内存模型,也就是说,编译出的代码除了 long 和指针是 64 位 ...
- 【reverse】逆向6 JCC
[reverse]逆向6 JCC 前言 我们之前学习的时候讲了,eip寄存器存储的是当前(即将执行的语句的) 指向地址 而我们之前提到的下断点(F2),就和我们编程中的下断点一样,执行到某句汇编指令然 ...
- 【reverse】逆向5 标志寄存器
[reverse]逆向5 标志寄存器 1.引言 通过一个creak.exe文件的爆破,引出现阶段需要学习的知识 2.标志寄存器 标志寄存器有上图这么多个 记住这几个寄存器的位置和名称 下面是6个状态标 ...
- 【reverse】逆向2 寄存器与内存
[reverse]逆向2 寄存器与内存 1.通用寄存器 主要用途其实没必要记下来,因为只是CPU建议你这么做. 寄存器需要按照顺序被下来 32位就是可以存32个0或1 所以存储范围就是0-0xFFFF ...
- 【Assembly】-NO.88.Assembly.2.滴水逆向.1.002-【位运算及基础指令】-
1.0.0 Summary Tittle:[Assembly]-NO.88.Assembly.2.滴水逆向.1.002-[]- Style:Java Series:Log4j Since:2018-0 ...
- 【Linux】-NO.87.Assembly.1.滴水逆向.1.001-【介绍】-
1.0.0 Summary Tittle:[Linux]-NO.87.Assembly.1.滴水逆向.1.001-[基础]- Style:Java Series:Log4j Since:2017-04 ...
- 【NLP】大数据之行,始于足下:谈谈语料库知多少
大数据之行,始于足下:谈谈语料库知多少 作者:白宁超 2016年7月20日13:47:51 摘要:大数据发展的基石就是数据量的指数增加,无论是数据挖掘.文本处理.自然语言处理还是机器模型的构建,大多都 ...
随机推荐
- 大型网站高可用架构之CAP原理
在讨论高可用数据服务架构之前,必须先讨论的一个话题是,为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性. CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性.数据可用 ...
- qt5读取所有本机IP
说明 需要添加 network模块 本文介绍的函数将读取所有本机IP,包括 ipv4和ipv6 本文演示版本 qt5.14 头文件 #include <QHostAddress> #inc ...
- google protobuf学习笔记:windows下环境配置
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743 protobuf的使用和原理,请查看:http:/ ...
- nim_duilib(10)之slider、progress and circleprogress
introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 本文将介绍3个控件: slider,progress和circleprogress.具体的用法,请参考源码提供 ...
- typora 基本使用和漂亮的主题样式
以下是使用博客园的markdown的效果: typora 基本使用和漂亮的主题样式 一.typora 基本使用 ps:文字排版,使用markdown nice 可以一键复制到公众号.知乎:https: ...
- 【LeetCode】999. Available Captures for Rook 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 四方向搜索 日期 题目地址:https://leetc ...
- 【LeetCode】Island Perimeter 解题报告
[LeetCode]Island Perimeter 解题报告 [LeetCode] https://leetcode.com/problems/island-perimeter/ Total Acc ...
- 【LeetCode】976. Largest Perimeter Triangle 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcod ...
- 【LeetCode】238. Product of Array Except Self 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 两次遍历 日期 题目地址:https://leetcode.c ...
- [Elasticsearch] ES聚合场景下部分结果数据未返回问题分析
背景 在对ES某个筛选字段聚合查询,类似groupBy操作后,发现该字段新增的数据,聚合结果没有展示出来,但是用户在全文检索新增的筛选数据后,又可以查询出来, 针对该问题进行了相关排查. 排查思路 首 ...