1.汇编(可以破解软件,写外挂…)
------计算器语言-----
2.机器语言 0和1 c+±>汇编—>二进制
INC --抽象-->编译器 0100 0000
DEC
MUL
DIV
3.进制 10进制(10个手指) 可以自己定义进制,作为进制加密解密,查数
1进制 一进一 写出2 ->1 1
2进制 0 1 10 11 100 101 110 111 1000
3进制 0 1 2 10 11 12 20 21 22 100 101
八进制 八进一 0 1 2 3 4 5 6 7
十进制 进一 0 1 2 3 4 5 6 7 8 9
十六进制 f进一 0 1 2 3 4 5 6 7 8 9 a b c d e f
4.八进制
2+3=5 //位置在5 23=6 //位置在进制表的6 4+5=11 //9,减法的本质是加法
45=24 //位置20 234/4=47 //反向找可以除的 ,x/4=234 写出进制表,类似 九九乘法表和加法表
5.二级进制 0 1有无电子 ,摩尔定律
量子计算机: 昆比特(量子比特包含光子(正交偏振方向)和磁场(电子自旋方向))
6.数据宽度(给类型定义宽度)在内存中的长度
bit 0 1
Byte 0-0xFF (8个1) (255)
Word 0-0xFFFF (16位)
DWord 0-0xFFFFFFFF (32位,如32个0)
7.有符号数和无符号(怎么表示正负号)
1001 1010 16进制 0x9A(4位4位)
1 0011010 #最高位是符号位0正1负
8.有了符号怎么计算
无符号 原码=反码=补码
2 的原码 0000 0010 反 0000 0010 补0000 0010有符号 原码=反码(原码取反,最高位不用取)=补码(反码二进制最后+1)
-2的原码 1000 0010 反码 1111 1101补码 1111 1110
9.寄存器
//往eax存-1,查看到存入FFFF FFFF(32位)
4*8=32位的计算机 1个F,4个1 ,如果是64位计算机,就是
64个1,16个F mov eax,-1 //计算机是以补码存储的
10.运算
2*8最高效的计算方式
- 与运算 and 1&1=1 1&0=0
图or
图and
- 或 or 1| 1= 1 1 | 0=1
- 异或(xor ^) 不相同为1
图xor
- 非(单目运算符 not ~) 就是取反原码变反码(除了符号位的)
1101 1000–>0010 0111- 位运算
左移 shl<<1 0000 0001—> 0000 0010 #高位丢弃,
右移 shr>>1 0000 0001–>0000 0000#低位丢弃
- 加法
例子 1+2=3?
- 对原码两个数异或
0000 0001
0000 0010
->0000 0011- 对原码两个数与and
0000 0001
0000 0010
->0000 0000- 与运算结果左移一位
->0000 0000- (异或结果)xor(与左移结果)
0000 0011
0000 0000
0000 0011- and与确认结果(确认为0没有进位,如果没有继续异或)(如 本来1111 变成 1 0000 就是进位)
0000 0011
0000 0000
0000 0000
12.减法(要使用反码和补码) 负数要求补码
4+(-5)
符号位先为正, (后变负)后取反,得补码
0000 0100 #4 正数的原码0000 0101—>1111 1010 —>1111 1011 #负数的原码和反码和补码
求异或
0000 0100
1111 1011
1111 1111 #ff与and确定有没有进位 16进制 10 10进制(!!!要区分符号位) 255或者 -1
13.乘除
乘 就是加法 10*3 =10+10+10 #加多少次10
除法 就是减法 10/3 =10 -3-3-3
#计算减多少次3
- 工具vc6 OD(找到地址改) 抓包 加密解密根据
ollyDbg 拖入程序
pic innerStructure
15.寄存器(在cpu里面,速度比内存快,数量少) - 通用寄存器(可以存储任意的值)
1.32位的有8个寄存器,位数直接有对应关系 EAX AX AL是一串数字,可以分别控制
mov add,num
mov add1,add2
图寄存器的关系(包含关系)
2.其他寄存器(有特定的功能,不能随便修改,开机关机…)
16.内存(寄存器小,需要数据放内存)
每个程序有4g内存(虚拟),
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
数据宽度 bit 0/1 byte(8位) word(16位) dword(32位) qword(64位)
//多少b就是表示多少个地址
4G =4294 967 296 b /1024 =4194304 kb /1024= 4096mb/1024=4gb
//内存有编号,向内存存值
//mov 数据宽度,
mov dword ptr ds:[0x0019FF74],1 //byte改后2位
//传递值要和类型对应
mov byte ptr ds:[0x0019FF74],ffff (x) 只能传2位
//地址偏移,0x0019FF74 读写值
mov dword ptr ds:[0x0019FF70+4],1
//寄存器的值放到内存
ds:[eax]
ds:[eax+4] //修改寄存器地址的偏移
//数组,批量创建内存地址
ds:[reg+reg*{1,2,4,8}+4]nop 改jnz(if判断)以免导致后面产生连锁反应,右键二进制-->用aop填充 //需要导出新的文件,右键复制到可执行文件 -->右键保存文件 全部复制
17.加壳和脱壳(a通过套b.exe的壳,防破解,然后执行加密算法才能得到a的二进制)
//实战植物大僵尸改无限太阳
cheat engine 查看内存地址变化筛选内存地址
od ctrl+g搜索内存地址改代码
sub edi,edi #血量变为0 填nop为空
//怎么在图形界面控制破解
打开进程id的api
//内存写机器码,可以改执行,程序写好了会在特定的内存地址执行
- EIP寄存器,代表下一条执行的指令
19.寄存器临时存数据(一直在变化)
20.od安装插件
od点击插件跳到网页,然后下载clawsearch 32的文件放32位plugin文件夹
64位同理