分支
02:分支一、程序结构 顺序结构:默认的程序执行顺序,从上到下依次执行 分支结构:根据程序执行过程中可能产生的不同信息,决定执行不同的功能 配合分支语句 循环结构:根据执行条件重复执行某个功能 配合循环语句 二、分支语句 单分支:if(){} 根据条件决定执行或不执行 123456789101112// if(){}// if 语句名,关键字// () 执行条件// {} 执行条件符合时(true),要执行的代码console.log(1);if( true ){ console.log("hello");}console.log(2); 双分支:if(){}else{} 根据条件决定执行A或执行B 12345678910111213141516// if(){}else{} // if 语句名1,关键字 // () ...
JS基础
01:JS基础一、JavaScript 介绍 网页的组成:结构html,样式css,行为js html:超文本标记语言 css:层叠样式表 javascript:网页的脚本语言,用来描述网页的逻辑交互行为 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。 javascript的组成:ECMAScript,DOM,BOM ECMAScript:语法,规范,标准,定义了javascript的语法规范,描述了语言的基本语法和数据类型。 用来约束代码用什么样的格式书写,写什么,如何执行 DOM(Document Object Model):文档对象模型,document,表示网页。 提供了网页的相关操作,标准化组织是W3C。 有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。 如:增加元素,删除元素,改变元素位置等 BOM(Browser Object...
个人实战逆向某吃鸡手游绘制世界
文章仅供参考交流学习,切勿用于非法用途 我使用的是腾讯模拟器,模拟器不能用端游的模块加偏移的方法,只能用特征码定位 先打开游戏,进入训练营 首先我们先找count地址,也就是对象数量 方法:拿一把枪,打开ce,首次扫描,4字节,选值介于…两者之间,训练营一般对象不超过1000,所以选1到1000 朝地上打一枪,然后搜数值增加了1,不停改善,ue4游戏通过子弹找法,一般打一枪,要么增加1要么增加2最后还剩大约47个地址 世界对象数量肯定不止17个,所以大部分17的就不看,符合条件的就这几个300多的地址,然后全部拉下来,一个一个按ctrl+B浏览相关内存区域,右键显示类型改为4字节(HEX),(64位游戏改为8字节(HEX)) 找到下面第一个的数量地址,然后点击减4的地址,(64位游戏减8),然后按空格键跳进去 如果跳进去看到的是排列整齐有规律的,那么就找对了,如果是以下这种就不是 像这种的跳进来第一个地址上面都为0,且下面排列整齐有规律的就是了,就是ActorArray...
UE4找子弹和后坐力基址
UE4子弹常识子弹在游戏中一般都会给出 UI 显示,我们可以根据子弹变化,很容易精确搜索到子弹的地址。而子弹的射速、后坐力等数据,基本都是在子弹内存区域前后范围内的。 找子弹基址多次精确搜索子弹数量,找到子弹数量的地址: 对这个地址进行指针扫描,扫描层级5。扫描出结果后,记住之前子弹的枪,然后重新上游戏。CE重新附加进程,切换到之前的枪并改变子弹数量后,在指针扫描器里重新扫描内存,输入现在子弹的数量,过滤掉失效地址。重复操作多次,就可以慢慢定位到基址。 扫描结果就算多次过滤后,一般也会剩下很多,我们找偏移中带 0x0 0x8 0x10 这样8字节的倍数的偏移量,这种偏移是指针数值的单个元素大小,指针数值的偏移基本的都是这样的。比如下面这个偏移 0x0 0x8 0x10,发现刚好对应我们3把枪的子弹数量。 找后坐力基址查看子弹的内存区域,观察有什么数值是开枪的过程中有变化的。 把这些数值都列为可疑数值加到地址列表,然后锁定数值为0,测试开枪有没有后坐力。 注意要把 CE...
UE4找所有玩家的血量
为什么要找所有玩家的血量?用于绘制所有玩家的血条,判断玩家是否死亡。 传统找法一般 FPS 射击游戏中的血量满血时都是数值100类型 float。所以我们满血的时候先精确扫描单浮点100,然后掉血了搜减少的数值。没掉血再搜不变的数值,直到找到血量地址。 找到后指针扫描最大5级偏移。扫描出结果后,要找基址是 "BattleRoyaleTrainer-Win64-Shipping.exe"+02AEFFB8 ,并且偏移是 0x30 -> 0xB0 后。因为我们要找的是所有玩家的血量,也就是 Actor 下的血量。 最终得到血量偏移为 "BattleRoyaleTrainer-Win64-Shipping.exe"+02AEFFB8 -> 0x30 -> 0xB0 -> 0x8 -> 0x7C4。其中 0x8 为遍历 ActorArray...
UE4找ComponentToWorld和骨骼数组
为什么要找骨骼基址?找骨骼基址是为了实现绘制骨架和骨骼自瞄,比如瞄准头部骨骼、胸部骨骼。 找骨骼基址对自己的 Actor 的地址进行结构分析,防止分析错地址最好直接用 APawn,然后根据特征去查找。 ComponentToWorld 是 3x3 结构,最后一行数值不会动,最后一行数值一般是3个固定的数值和 0.00。例如: 1.00 1.00 1.00 0.00 2.50 2.50 2.50 0.00 ComponentToWorld位置根据特征,我们找到了 ComponentToWorld,得到偏移为:Actor.base -> 0x378 -> 0x180,其中 0x378 偏移是 Mesh 的偏移。 骨骼数组位置ComponentToWorld 和骨骼数组都在 Mesh 下面。找到 ComponentToWorld 后,很容易找到骨骼数组。骨骼数组在内存中表现很规律,偏移为:Actor.base -> 0x378 ->...
UE4找Actor区分标识
UE4找Actor区分标识标识的作用我们如何区分 ActorArray 中的 Actor 是敌人、队友、自己、物品还是其他东西?比较通用的做法是对比多个 Actor 的结构,找出不同类型的 Actor 在同一偏移,数值的异同规律。 比如在 Actor 下 0x555 偏移,类型为 4 Bytes,是敌人的时候这个数值为0,是队友的时候数值为1,是自己的时候数值为2,不是人的时候数值为3。这样就可以区分出人和其他物品,并且可以区分出人里面的敌人、队友和自己。这就是找标识的作用。 由于我测试的游戏是一个单机游戏,相对来说是比较容易对比 Actor 结构中的数据。 找出区分的标识先遍历 ActorArray 并绘制所有 Actor 的地址,然后观察绘制出来的地址。发现自己身上有多个地址,这是因为身上的装备也是 Actor。 我发现在人物播放闲置动画或下蹲的时候,不会移动的是人物的地址,会移动的是物品的地址。(只是刚好这个游戏是这样的) 还有一种区分方式是把自己身上的所有地址都添加到 CE 地址列表,然后挨个浏览内存区域,类型改为 float,将附近的 1.0...
UE4找摄像机矩阵
为什么需要摄像机矩阵?我们可以用屏幕尺寸 + Actor 三维坐标 + 摄像机矩阵,通过固定算法计算出 Actor 的屏幕坐标,从而实现绘制 Actor 的数据,实现透视效果。 常规方式 先扫未知的初始值,类型单浮点 移动镜头并搜索变动的数值,再移动再搜索,反复操作 不移动镜头,搜索不变的数值,反复操作 最后搜索结果数量不再减少时: 将结果列表里当前值带 E 的和绿色的静态地址删掉 依次选择地址浏览相关内存区域,数据类型切为单浮点 转动镜头,根据摄像机居中特征分析是否是矩阵数据 最终找到矩阵如下: 摄像机矩阵的特征 UE4 摄像机矩阵的第三列是 0.00 0.00 0.00 x.00,最后一个数值不固定,前面3个 0.00 固定 除了第四行中会出现较大的数值,前面三行都不会出现较大数值 一般不移动镜头时,摄像机矩阵数值不会变化 UE4 的摄像机矩阵的动态地址一般重启游戏才会变化,切换场景和房间一般不会变化 特征码方式UE4 还可以使用摄像机矩阵的特征码快速定位,通用矩阵特征码: 100 00 00 00 00 00 00 00 00 00 80 3F 00 00 80...
UE4找ActorArray中的坐标偏移
为什么要在ActorArray中找坐标?我们知道 ActorArray 中存放的是所有附近的 Actor,如果我们找到 ActorArray 下的坐标,则可通过遍历获取所有 Actor 的坐标。 开始找坐标 选中我们找到的 Count 地址,浏览相关内存区域(Ctrl+B) 地址减8字节,使用快捷键空格跳转到(前进)这个地址所在的内存位置 Count 地址为 0x1FCCD0BB738,减8字节得到 ActorArray 的地址(其实是 TArray 的地址),也就是: 10x1FCCD0BB738 - 0x8 = 0x1FCCD0BB730 地址 0x1FCCD0BB730 的数据 0x1FCCD742B80 就是 ActorArray 的地址(其实是 TArray 中指针指向的地址)。 而 ActorArray 里也是地址,这些地址是 Actor 的地址,所以我们拷贝几个 Actor 的地址去结构分析。 随便选3个 Actor 地址去结构分析,结构分析弹窗里使用快捷键(Ctrl+A)添加额外的地址框。 分析出结果后,从 0x100 以后的偏移开始找,因为 UE4...
UE4找Count基址
什么是Count?Count 就是 UE4 引擎开发的游戏在运行过程中动态创建的 Actor 的数量,也可以说是在当前玩家一定范围内的 Actor 的数量。因为如果离得太远,由于游戏性能优化原因,是不会把非常远的 Actor 也获取的。 我们找Count来干什么?找到 Count,我们也就找到了 UWorld、ULevel 和 ActorArray 的地址。因为 Count 的地址都是在 UWorld 里的 ULevel 下的。 ActorArray 在 UE4 里其实是一个 TArray 的结构体: 第一个变量为指向 Actor 指针数组的指针 第二个变量 Num 就是这个数组的长度,也就是 Count 所以 Count 的地址减去8字节,就是 ActorArray 的地址。获取这两个值后,就可以遍历所有 Actor。 本文以单机游戏 Battle Royale Trainer...