当前位置: 首页 > news >正文

【游戏分析】非游戏领空追字符串来源

通过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方法:检索&#xff…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...