【游戏分析】非游戏领空追字符串来源
通过NPC名称找NPC数组
扫描 NPC名字 ASIC型
发现全部都有后缀
那么采用 字节集的方式去扫描
也是扫不到
说明:不是ASIC型字符串
扫描 NPC名字 Unicode型
没有结果
那么转换成字节集去扫描
终于发现结果了
把结果挨个修改字符串
发现 其中两个是可以用的 22和23 分别是人物头顶字符串和血条字符串
那么都可以使用
对名称下访问断
7692D335 > 8BFF mov edi, edi
7692D337 55 push ebp
7692D338 8BEC mov ebp, esp
7692D33A 8B45 08 mov eax, dword ptr [ebp+8]
7692D33D 66:8B08 mov cx, word ptr [eax] ; eax
7692D340 40 inc eax
7692D341 40 inc eax
7692D342 66:85C9 test cx, cx
7692D345 ^ 75 F6 jnz short 7692D33D
7692D347 2B45 08 sub eax, dword ptr [ebp+8]
7692D34A D1F8 sar eax, 1
7692D34C 48 dec eax
7692D34D 5D pop ebp
7692D34E C3 retn
断到非游戏领空 ,并且该位置下断即断,其实是系统模块,所有字符串都会进行访问
那么我们只能通过堆栈跳回游戏领空
在断下的情况堆栈搜索 字符串指针 CTRL+L找到字符串最早出现的位置
来源某层CALL 的第一个参数
追第一个参数EAX即可
005D7074 8B93 50020000 mov edx, dword ptr [ebx+250]
005D707A 8BBB 4C020000 mov edi, dword ptr [ebx+24C]
005D7080 03D7 add edx, edi
005D7082 52 push edx
005D7083 55 push ebp
005D7084 68 209A4B00 push 004B9A20
005D7089 EB 06 jmp short 005D7091
005D708B 6A 00 push 0
005D708D 6A 00 push 0
005D708F 6A 00 push 0
005D7091 8B8B 0C020000 mov ecx, dword ptr [ebx+20C]
005D7097 E8 94FB3300 call 00916C30
005D709C 8D4C24 5C lea ecx, dword ptr [esp+5C]
005D70A0 C68424 8C010000>mov byte ptr [esp+18C], 1
005D70A8 E8 F3B93200 call 00902AA0
005D70AD C78424 8C010000>mov dword ptr [esp+18C], -1
005D70B8 8D4C24 1C lea ecx, dword ptr [esp+1C]
005D70BC E9 42120000 jmp 005D8303
005D70C1 F7C7 00000080 test edi, 80000000
005D70C7 0F84 3B120000 je 005D8308
005D70CD F7C7 00000040 test edi, 40000000
005D70D3 0F85 2F120000 jnz 005D8308
005D70D9 8BCB mov ecx, ebx
005D70DB E8 E03BF2FF call 004FACC0
005D70E0 8B40 20 mov eax, dword ptr [eax+20]
005D70E3 6A 00 push 0
005D70E5 57 push edi
005D70E6 8BC8 mov ecx, eax
005D70E8 E8 D3CD0700 call 00653EC0 ; eax CALL的返回值
005D70ED 8BE8 mov ebp, eax ; [eax+314]
005D70EF 85ED test ebp, ebp
005D70F1 896C24 20 mov dword ptr [esp+20], ebp
005D70F5 75 10 jnz short 005D7107
005D70F7 8B03 mov eax, dword ptr [ebx]
005D70F9 6A 01 push 1
005D70FB 55 push ebp
005D70FC 55 push ebp
005D70FD 8BCB mov ecx, ebx
005D70FF FF50 20 call dword ptr [eax+20]
005D7102 E9 01120000 jmp 005D8308
005D7107 8B85 14030000 mov eax, dword ptr [ebp+314] ; ebp 是非堆栈地址 [ebp+314]
005D710D 8D8C24 34010000 lea ecx, dword ptr [esp+134]
005D7114 6A 01 push 1
005D7116 51 push ecx
005D7117 50 push eax ; 第一个参数
005D7118 E8 33522F00 call 008CC350
005D711D 8B8B 20020000 mov ecx, dword ptr [ebx+220]
005D7123 83C4 0C add esp, 0C
005D7126 85C9 test ecx, ecx
005D7128 74 2A je short 005D7154
005D712A 8B11 mov edx, dword ptr [ecx]
005D712C 8D8424 34010000 lea eax, dword ptr [esp+134]
005D7133 50 push eax
005D7134 FF52 44 call dword ptr [edx+44]
005D7137 8B8B 20020000 mov ecx, dword ptr [ebx+220]
005D713D 8B55 00 mov edx, dword ptr [ebp]
005D7140 8B31 mov esi, dword ptr [ecx]
其中 [ebp+318]并非参数
分析ebp发现 其不是堆栈地址,那么318只是一个正常偏移而已
追到这里 我们需要进CALL 找EAX 的来源
但是 CALL里有很多代码 和跳转 那么我们需要 F7 走一遍 知道 CALL里面的跳转是怎么执行的
然后再-号逆向追寄存器即可
00653EC0 83EC 08 sub esp, 8
00653EC3 56 push esi
00653EC4 8B71 28 mov esi, dword ptr [ecx+28]
00653EC7 85F6 test esi, esi
00653EC9 57 push edi
00653ECA 75 0C jnz short 00653ED8 ; 跳
00653ECC 33C9 xor ecx, ecx
00653ECE 884C24 0C mov byte ptr [esp+C], cl
00653ED2 8B4424 0C mov eax, dword ptr [esp+C]
00653ED6 EB 29 jmp short 00653F01
00653ED8 8B7C24 14 mov edi, dword ptr [esp+14]
00653EDC 33D2 xor edx, edx
00653EDE 8BC7 mov eax, edi
00653EE0 F7F6 div esi
00653EE2 8B41 1C mov eax, dword ptr [ecx+1C]
00653EE5 8B0490 mov eax, dword ptr [eax+edx*4]
00653EE8 85C0 test eax, eax
00653EEA 74 0B je short 00653EF7
00653EEC 3978 08 cmp dword ptr [eax+8], edi
00653EEF 74 1E je short 00653F0F ; 跳
00653EF1 8B00 mov eax, dword ptr [eax]
00653EF3 85C0 test eax, eax
00653EF5 ^ 75 F5 jnz short 00653EEC
00653EF7 33C9 xor ecx, ecx
00653EF9 884C24 0C mov byte ptr [esp+C], cl
00653EFD 8B4424 0C mov eax, dword ptr [esp+C]
00653F01 84C0 test al, al
00653F03 75 18 jnz short 00653F1D ; 跳
00653F05 5F pop edi
00653F06 33C0 xor eax, eax
00653F08 5E pop esi
00653F09 83C4 08 add esp, 8
00653F0C C2 0800 retn 8
00653F0F 8D48 04 lea ecx, dword ptr [eax+4] ; [[ecx+4]+318]
00653F12 C64424 0C 01 mov byte ptr [esp+C], 1
00653F17 8B4424 0C mov eax, dword ptr [esp+C]
00653F1B ^ EB E4 jmp short 00653F01 ; 跳
00653F1D 8B4424 18 mov eax, dword ptr [esp+18]
00653F21 85C0 test eax, eax
00653F23 74 14 je short 00653F39
00653F25 8B11 mov edx, dword ptr [ecx]
00653F27 3982 E8000000 cmp dword ptr [edx+E8], eax
00653F2D 74 0A je short 00653F39
00653F2F 5F pop edi
00653F30 33C0 xor eax, eax
00653F32 5E pop esi
00653F33 83C4 08 add esp, 8
00653F36 C2 0800 retn 8
00653F39 8B01 mov eax, dword ptr [ecx] ; [[ecx]+318]
00653F3B 5F pop edi
00653F3C 5E pop esi
00653F3D 83C4 08 add esp, 8
00653F40 C2 0800 retn 8
NPC数组 偏移表达式如下:
[[[[[[[0D0DF1C]+1c]+8]+20]+1c]+edx*4]+4]+314
相关文章:
【游戏分析】非游戏领空追字符串来源
通过NPC名称找NPC数组 扫描 NPC名字 ASIC型 发现全部都有后缀 那么采用 字节集的方式去扫描 也是扫不到 说明:不是ASIC型字符串 扫描 NPC名字 Unicode型 没有结果 那么转换成字节集去扫描 终于发现结果了 把结果挨个修改字符串 发现 其中两个是可以用的 22和23 …...
golang 数组和切片
区别 1.数组长度固定,切片长度可变 2.数组是深拷贝,切片是浅拷贝,切片是引用类型 扩容规则 不同版本不一样 https://www.jb51.net/article/280481.htm#_lab2_2_1 go1.18 1.如果期望容量大于当前容量的两倍就会使用期望容量; 2.如…...
物联网实战--入门篇之(九)安卓QT--开发框架
目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具,已经包含了很多常用的库,除了基本的GUI以外,还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库,开发起来…...
【leetcode面试经典150题】16.接雨水(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...
互联网面经
腾讯视频 代码:反转链表,单例模式 RAII,哪里用到 Web服务器怎样处理请求 get\post流程 项目使用的还是http1.0吗;http2.0:二进制、首部压缩、主动推送;Https Epoll/select/poll ET/LT 进程地址空间。3…...
xss介绍及作用
XSS(Cross-Site Scripting)是一种常见的网络安全漏洞,它允许攻击者向网站注入恶意的客户端脚本代码,从而在用户的浏览器中执行这些代码。 XSS攻击的原理是攻击者将恶意脚本插入到网页中的用户输入数据中,当其他用户访…...
PostgreSQL入门到实战-第二弹
PostgreSQL入门到实战 PostgreSQL安装之Windows官网地址PostgreSQL概述Windows上安装PostgreSQL更新计划 PostgreSQL安装之Windows 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概…...
3-【PS让图片动起来】系列1-【导入素材】
【问题介绍】仅做图片,现在很难吸引用户视线,越来越多地图片需要动起来增添意境,比如春日樱花花瓣掉落、冬季雪花纷纷,今天来学学怎么用PS的时间轴,让图片动起来~ 如下图,一副冬日雪景图,想给画…...
基于Java+SpringBoot+Mybaties+layui+Vue+elememt 实习管理系统 的设计与实现
一.项目介绍 前台功能:用户进入系统可以实现首页,系统公告,个人中心,后台管理等功能进行操作 后台由管理员,实习单位,教师和学生,主要功能包括首页,个人中心,班级管理&am…...
非关系型数据库——Redis基本操作
目录 一、Redis数据库常用命令 1.Set——存放数据 2.Get——获取数据 3.Keys——获取符合条件的键值 4.Exists——判断键值是否存在 5.Del——删除指定键值 6.Type——获取键值对应的类型 7.Rename——对已有键值重命名(覆盖) 8.Renamenx——对…...
golang语言和JAVA对比
引言: 在当今的软件开发领域,有许多编程语言供开发人员选择。其中,Golang和Java是两种备受开发者青睐的语言。本文将探讨Golang和Java之间的比较和对比,分析它们在语言特性、性能、平台支持、社区和生态系统、开发效率和可维护性等方面的异同。 一、语言特性和性能 Golang…...
隐私计算实训营学习九:隐语多方安全计算在安全核对的行业实践
文章目录 一、业务背景:安全核对产生的土壤二、产品方案:从试点到规模化的路三、技术共建:与隐语的共同成长 一、业务背景:安全核对产生的土壤 业务背景:很多粗放使用数据的方式被新出台的法律法规所规范,…...
C#实现只保存2天的日志文件
文章目录 业务需求代码运行效果 欢迎讨论! 业务需求 在生产环境中,控制台窗口不便展示出来。 为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。 但是,存储所有输出的话会占用很多空间,…...
C++ 类和对象(中篇)
类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情 况下,都会自动生成下面6个默认成员函数。 构造函数: 定义:构造函数是一个特殊的成员…...
可视化场景(9):智慧看板,可能是最直观的数据展示
10年经验的大数据可视化和数字孪生老司机,该领域的专家,是您可信赖的技术合伙人,分享该领域的项目和作品,欢迎互动交流。 hello,我是贝格前端工场,本期分享可视化大屏在安全生产与设备运维场景的应用&#…...
加密算法(二)
1、SHA-256加密算法: package com.arithmetic.encryption; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; //使用java.security.MessageDigest类来进行SHA-256摘要的计算。 //通过getInstance("SHA-256")方法获取…...
大创项目推荐 深度学习 YOLO 实现车牌识别算法
文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 该项目较…...
IP知识详解
IP基本认识 IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。 网络层与数据链路层有什么关系呢? IP 的作用是主机之间通信…...
设计模式:适配器模式
定义 适配器模式(Adapter Pattern),也称为包装器(Wrapper)模式,是一种结构型设计模式,它允许不兼容的接口之间进行交互。适配器模式通过包装一个已有的类,提供一个与原系统兼容的接…...
大语言模型落地的关键技术:RAG
1、什么是RAG? RAG 是检索增强生成(Retrieval-Augmented Generation)的简称,是当前最火热的大语言模型应用落地的关键技术,主要用于提高语言模型的效果和准确性。它结合了两种主要的NLP方法:检索ÿ…...
ffmpeg Android 笔记
目录 没有示例项目 编译好的.a文件 ffmpegandroid 延时有220ms rk官方有例子 ffmpeg Android 笔记 没有示例项目 编译好的.a文件 FFmpeg-Android/ffmpeg-android-aarch64-34/lib at main yhbsh/FFmpeg-Android GitHub ffmpegandroid 看到了音频解码器 FFmpegAndroid/a…...
本地创建新分支并提交gitee
初始化本地仓库 git init链接远程仓库 git remote add origin https://gitee.com/xxxxxxxxxxx提交本地代码(进行commit提交) git add . git commit -m "分支名"创建分支 git branch 分支名选择刚刚创建的分支 git checkout 分支名查看所选中的分支 git branch …...
[蓝桥杯 2019 国 C] 数正方形
[蓝桥杯 2019 国 C] 数正方形 题目描述 在一个 N N N \times N NN 的点阵上,取其中 4 4 4 个点恰好组成一个正方形的 4 4 4 个顶点,一共有多少种不同的取法? 由于结果可能非常大,你只需要输出模 1 0 9 7 10^9 7 1097 的…...
Redis: 配置文件详解(Redis.conf)
文章目录 一、Units二、INCLUDES三、NETWORK四、GENERAL五、SECURITY六、LIMITS 一、Units 单位,配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感 二、INCLUDES 包含,多…...
学习vue3第十四节 Teleport 内置组件介绍
<Teleport></Teleport> 作用目的: 用于将指定的组件或者元素传送到指定的位置; 通常是自定义的全局通用弹窗,绑定到 body 上,而不是在当前元素上面; 使用方法: 接收两个参数 to: 要将目标传…...
mybatis模糊查询查不到数据
排除SQL语句本身存在错误,字段名称不匹配,编码格式问题后,若使用%方式查询,一开始使用单引号查询不到数据,把改成",可以查询到数据 疑问:看别人的代码,使用单引号也可以查询到数据,原因未知...
Python语法总结:not(常出现错误)
0、not是什么 在python中not是逻辑判断词,用于布尔型True和False之前 a not Ture # a False b not False # b True1、not的用法 (1)判断语句 if not a:# 如果a是False,执行的语句(2)判断元素是否在…...
深入理解WebSocket:实时双向通信的利器
一、介绍 1.1 基础概念介绍 单工通信:数据传输只允许在一个方向上传输,只能一方发送数据,另一方接收数据并发送。半双工:数据传输允许两个方向上的传输,但在同一时间内,只可以有一方发送或接收数据。全双…...
Gateway是什么?(SpringCloudAlibaba组件)
1、网关介绍 **网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。**网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可…...
阿里巴巴拍立淘API新功能揭秘:图片秒搜商品,实现智能化个性化购物新体验
在数字化快速发展的今天,智能化和个性化已经成为购物体验中不可或缺的元素。为了满足消费者日益增长的购物需求,阿里巴巴中国站不断推陈出新,其中拍立淘API的新功能——图片秒搜商品,无疑为智能化个性化购物体验开创了新的篇章。 …...
如何查询网站使用什么框架做的/百度资源
一台windows2003的服务器上,已经有asp.net站点在上面跑了,现在因为开发人员问题,新加的一个站点要运行php程序。线上系统维护人员从本质上来说,应该要满足开发的需求的,所以决定使用IISfastCGIphp来实现这个站点的架设…...
哪个网站做团购要求低点/广州网站制作服务
您好!共享不了的原因是多种多样的,有些是因为安装防火墙阻挡,有些是因为权限设置,有些是因为服务或者计算机设置原因等等。而且解决方法都各不相同。而且因为您有多台电脑,因此他们的原因可能也是有很多种,…...
合肥中科大网站开发/免费二级域名分发平台
办公场景中,一台电脑拥有两个显示屏,在工作效率上将极大提升。不过除非专业用户,普通办公室给每个人配上两台显示器,显得过于奢侈了,因此,利用好手头的设备,打造双屏办公,便节省许多…...
简单网站建设软件有哪些/东莞关键词优化实力乐云seo
引用自:http://blog.csdn.net/jackyxu_2008/archive/2009/03/21/4009791.aspx 最近用powerDesinger遇到一些小问题,遇到好几次同样的问题了,写在这里,以备查用:-----------------------------------------------------…...
做电台需要的文章从哪个网站找/专业营销团队外包公司
java 偏向锁 Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。 偏向锁,顾名思义,它会偏向于第一个访问锁的线程,如果在接下来的运行过程中&#…...
wordpress访问量插件/关键词优化报价怎么样
云计算(cloudcomputing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。 美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式&…...