易语言吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2185|回复: 5

[技术文章] 谈内存辅助原理

[复制链接]

297

主题

537

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
14156

幽默大师终生成就

威望
0
易币
13534
贡献
0
积分
14156
UID
580
在线时间
451 小时
注册时间
2019-12-5
发表于 2020-3-5 16:21:56 | 显示全部楼层 |阅读模式
一、计算机原理

中央处理器(CPUCentral Processing Unit)是一台计算机的运算核心(Core)和控制核心( Control Unit)。
它的功能主要是解释计算机指令以及处理计算机软件中的数据。 说白了就是负责计算
CPU由三部分组成:
1、控制器:是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等组成
2、运算器:可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。  
3、存储器:包括寄存器、缓存等,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短
截图202003051619205867..png


内存负责在硬盘和CPU之间中转数据,所有的程序运行时都必须通过加载到内存进行

硬盘负责存储数据

数据的调用方向是:
硬盘->内存->CPU缓存->CPU控制器->CPU寄存器->CPU计算器
截图202003051619585859..png

存储器的种类很多,按用途可以分为主存储器和辅助存储器,主存储器又称内存,是CPU能直接寻址的存储空间,它的特点是存取速率快。内存一般采用半导体存储单元,包括随机

存储器(RAM)、只读存储器(ROM)和高级缓存(Cache)。  随机存储器(RAM)可以随机读写数据,但是电源关闭时存储的数据就会丢失; 比如内存条  只读存储器(ROM):(Read Only Memory)只能读取,不能更改,即使机器断电,数据也不会丢失; 比如Bios     高级缓存(Cache):它是介于CPU与内存之间,常用有一级缓存(L1)、二级缓存(L2)、三级缓存(L3)。它的读写速度比内存还快,当CPU在内存中读取或写入数据时,数据会被保存在高级缓冲存储器中,当下次访问该数据时,CPU直接读取高级缓冲存储器,而不是更慢的内存。辅助存储器又称外存储器(简称外存),就是那些磁盘、硬盘、光盘   一、内存辅助原理1、虚拟内存前面我们说过,游戏文件是保存在硬盘中,游戏启动时,游戏进程必须通过加载到内存中才能运行。32位程序启动时,操作系统会自动分配一个4G的虚拟内存地址给进程,内存地址从00000000FFFFFFFF。虚拟内存不是真正的内存,它通过映射的方法使可用虚拟地址达到4GB,每个应用程序可以获得2GB的虚拟地址,剩下的2GB留给操作系统自用。一个进程用到的虚拟地址是由内存区域表来管理的,实际用不了4G,而用到的内存区域,会通过页表映射到物理内存。所以每个进程都可以使用同样的虚拟内存地址而不冲突,因为它们的物理地址实际上是不同的。这里的4G,是指有4G个内存“虚拟地址”——再直白一点,就是每个进程可以获得4G个门牌号,而不是4G个真实的内存空间。房子少,门牌却多,这些门牌最终要挂在哪里呢?答曰:一部分挂到真实的物理地址上去,一部分可能被挂到“虚拟内存(硬盘空间)”上,还有很大一部分,哪儿也不挂,整个儿就是操作系统给进程开的白条。windows是一个分时的多任务操作系统,CPU时间被分成一个个时间片后分配给不同的程序,在一个时间片里,与这个程序的执行无关的内容不会被映射到线性地址中,因此,每个程序都有自己的4GB寻址空间,互不干扰。需要明白几点:1>应用程序不会直接访问物理地址;2>虚拟内存管理器通过虚拟地址的访问请求来控制所有物理地址访问;3>每个应用程序都有独立的4GB寻址空间,不同应用程序的地址空间是彼此隔离的;4>DLL程序没有“私有”空间,它们总是被映射到其他应用程序的地址空间中,作为其他应用程序的一部分运行。    64位系统(64位程序)提供了16TB的有效寻址空间,其中一半可用于用户模式的应用程序。游戏要进行各种计算必须通过 CPU,而CPU要获取数据必须通过内存,所以只要当前游戏用到的各种数据都必然会存在于内存中,这就是为什么通过内存我们可以找到我们想要的游戏数据,实现我们想实现的内存辅助功能。 2、游戏数据:对于单机游戏而言,游戏中绝大部分的参数(比如血、蓝、能量亦或是金币)都存储在计

算机的内存中,一些类似剧情进度的则加密后写入本地的自定义配置文件中;对于网游,虽然服务器保存了大量的重要的参数,但由于客户端不可避免的需要进行大量的计算和资源的加载,本地内存中必定存有部分的临时变量,通过判断这些变量的变化规律和函数的破密寻到利于自身的参数,比如伤害值一类,继而寻找该变量的内存地址,根据指针偏移分析获得内存基址,再提升权限利用Windows API把自定义数值写入该内存块,就完成了修改某项数值的操作,一般来说,只要破解了一项数值,利用规律继而破解其他数值就更加容易了。3、游戏功能CALL通过逆向分析获得游戏功能CALL,调用功能CALL驱动游戏实现各种动作。通过分析游戏明文封包CALL,可以快速定位游戏功能CALL有游戏数据+各种游戏功能CALL,通过编程语言调用游戏数据和功能CALL写逻辑流程,即可让游戏自动执行指定的游戏任务、副本等功能,从而开发出具有强大功能的游戏辅助。也可以引入其他脚本语言(比如lua)来写逻辑流程。  一、游戏数据类型、进制、编码等知识的了解1、数据类型字节型  Byte双字节  Word整数型(4字节) DoubleWord (DWord) 长整数型(8字节) long 文本型(字符串)小数型(浮点型)(4字节)float    双精度小数型(8字节)  Doublefloat字节数组数组逻辑型(字节型)   True False坐标:浮点型最多,有些是整数型人物的血值、等级:整数型人物名字、怪物名字:字符串某种状态,比如怪物是否死亡,人物是否骑马:逻辑型 2、进制二进制 八进制  十进制  十六进制8bit=1Byte 一个字节等于8个位1 高电平  0低电平  80GB  80GByte1byte  1kByte  

1024B =1kB1kb*1024=1MB1MB*1024=1GB80*1024*1024*1024Byte80000000000Byte 二进制:0 1   0 1 10 11 100 101 110 111 1000   1000:1111101000=0*2^0+0*2^1+0*2^2+1*2^3+0*2^4+1*2^51111101000=3E8 1BYTE=8bit1KB=1024个字节1MB=1024KB1GB=1024MB1TB=1024GB二进制 Binary八进制 Octal number system十进制 Decimal system十六进制 Hex 1Mb 1MB 80GB 80000000000个字节 13DEH10010000B1035D 10000000  8011111010  FA十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 10     11   1C=C*16^0+1*16^1=12+16=28十进制:  0 1 2 3 4 5 6 7 8 9 10八进制:  0 1 2 3 4 5 6 7 10二进制:  0 1 10 2CEB06H=001011001110101100000110     2943750 [size=10.5000pt]1、编码ASCII  American Standard Code for Information Interchange(美国信息交换标准代码)
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:031127(33)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8910 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。32126(95)是字符(32是空格),其中485709十个阿拉伯数字。659026个大写英文字母,97122号为26个小写英文字母,其余为一些标点符号、运算符号等。ASCII扩展 一个英文字母占一个字节,一个中文汉字占两个字节00000000 -111111110000000000000000-1111111111111111GB2132 国标码对于我们汉字来说,需要使用两个字节来表示。小于127的依然表示原来的字符(也就是该字节最高位为0),当计算机遇到两个大于127的字节时候(也就是两个字节的最高位都是1),就一次性读取两个字节,将它解码成一个汉字。这就是GB2312编码,它大概能够表示7000多个简体汉字。不包括一些繁体字,但是对于日常使用已经足够。它所收录的汉字已经覆盖99.75%的使用频率,在中国大陆和新加坡广泛使用码方式:GB2312对所收汉字进行了“分区”处理,每区含有94个汉字或者符号,这种表示方法也叫做“区位码”。 它是用双字节表示的,前面的字节为第一字节,又称“高字节”,后面的为第二字节,“低字节”。 高位字节,把 01-87 区的区号加上 0xA0 (相当于数字 160);低位字节把 01-94 区的区号加上 0xA0(相当于数字160)。 举个简单的小例子:第一个汉字— —“啊”,它的区号为 16,位号 01,则区位码是 1601。则高字节位:16+0xA0=0xB0;低字节位:01+0xA0=0xA1,所以“啊”的汉字处理编码为0xB0A1 GBK编码GB2132编码的扩展  向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。 BIG5编码  大五码 由台湾五家软件公司创立是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。 ISO8859-1:拉丁码表 欧洲码表Unicode UTF-32  UTF-16 UTF-8UTF8编码  一个英文占一个字节,一个中文汉字(含繁体字)占三个字节UTF-8: ( 最多用三个字节来表示一个字符。) UTF8 unicode 其中的一个使用方式。UTF 的意思是: unicode translation format,即把 unicode 转作某种格式的意思。 UTF-8 使用可变长度字节来存储unicode 字符,如 ASCII 字母还是采用一个字符来存储,希腊字母等采用2 个字符来存储,而常用的汉字要使

3字节,辅助平面字符则使用 4 字节。Ø UTF-16使用一个或两个未分配的16 位代码单元的序列对 unicode 代码点进行编码,即 2个字节表示一个字符。Ø UTF-32将每一个 unicode代码点表示为相同值的 32 位整数。 ANSIAmerican National Standards Institute),中文:美国国家标准学会ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00~0x7f 范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。新建一个空的文本文件,用记事本打开(必须是Windows自带的记事本),只输入“联通”二字保存关闭(输入“1联通”也是联通显示的也是乱码),再重新打开时将是乱码。txt文档中一切字符都在 C0AA(第一个字节)≤DF 80BB(第二个字节)≤BF 这个范围时,notepad都无法确认文档的格式,自动依照GB-2312来解码。 而"联通"就是C1 AA CD A8,刚好在上面的范围内,所以不能正常显现。记事本默认是以ANSI编码保存文本文档的,而正是这种编码存在的bug招致了上述怪现象。假如保存时选择UnicodeUnicode (Big Endian)UTF-8编码,就正常了。此外,假如以ANSI编码保存含有某些特别符号的文本文档,再次打开后符号也会变成英文问号。 ASCIIGB2312GBK GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一的处理。区分中文编码的方法是高字节的最高位不为0



0

主题

11

帖子

50

积分

易语言菜鸟

Rank: 2

积分
50
威望
0
易币
38
贡献
0
积分
50
UID
6456
在线时间
5 小时
注册时间
2020-5-30
发表于 2020-5-30 09:08:41 | 显示全部楼层

感谢楼主分享
回复

使用道具 举报

0

主题

6

帖子

2410

积分

VIP超级贵宾

Rank: 8Rank: 8

积分
2410
威望
198
易币
2008
贡献
0
积分
2410
UID
8305
在线时间
2 小时
注册时间
2020-8-19
发表于 2020-9-16 10:39:17 | 显示全部楼层
完全没用
回复

使用道具 举报

0

主题

61

帖子

393

积分

易语言学徒

Rank: 3Rank: 3

积分
393
威望
0
易币
332
贡献
0
积分
393
UID
11313
在线时间
46 小时
注册时间
2020-12-28
发表于 2021-1-7 21:18:34 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

0

主题

2368

帖子

9586

积分

VIP超级贵宾

Rank: 8Rank: 8

积分
9586
威望
198
易币
6819
贡献
0
积分
9586
UID
11903
在线时间
36 小时
注册时间
2021-1-23
发表于 2021-5-28 22:56:52 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

0

主题

58

帖子

193

积分

易语言菜鸟

Rank: 2

积分
193
威望
0
易币
135
贡献
0
积分
193
UID
37517
在线时间
12 小时
注册时间
2023-7-10
发表于 2023-7-10 15:34:27 | 显示全部楼层

楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【选择右侧内容,快速回复】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大漠插件注册码无须等1-3号

QQ|一:站内所有资源均来自互联网收集或用户上传分享,本站不拥有此类资源的版权。 作为网络服务提供者,对转载行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权并出示充分的版权证明材料时,易语言吧负有移除转载作品以及停止继续传播的义务。在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任,包括不承担因侵权不成立而给原发布人带来损害的赔偿责任。 用户免费分享产生,如果侵犯了你的权益,联系QQ:3066137757|Archiver|手机版|小黑屋|易语言吧

GMT+8, 2024-5-17 11:58 , Processed in 0.250413 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表