004D4BAE  | CC              | int3                                   |
004D4BAF | CC | int3 |
004D4BB0 | 55 | push ebp |
004D4BB1 | 8BEC | mov ebp,esp | ecx=[[fs:[2c]+0]+8]
004D4BB3 | 8B41 24 | mov eax,dword ptr ds:[ecx+24] | eax=[ecx+24]=[[[fs:[2c]+0]+8]+24]
004D4BB6 | 83F8 FF | cmp eax,FFFFFFFF |
004D4BB9 | 75 06 | jne wow.4D4BC1 |
004D4BBB | 33C0 | xor eax,eax |
004D4BBD | 5D | pop ebp |
004D4BBE | C2 0800 | ret 8 |
004D4BC1 | 8B51 1C | mov edx,dword ptr ds:[ecx+1C] | edx=[[[fs:[2c]+0]+8]+1c]
004D4BC4 | 56 | push esi |
004D4BC5 | 8B75 08 | mov esi,dword ptr ss:[ebp+8] | 参数1
004D4BC8 | 23C6 | and eax,esi | 31数组上限=0x1F
004D4BCA | 8D0440 | lea eax,dword ptr ds:[eax+eax*2] | eax=eax*3
004D4BCD | 8D4482 04 | lea eax,dword ptr ds:[edx+eax*4+4] | eax=edx+4+参数1*0x0C //12=0x0C
004D4BD1 | 8B40 04 | mov eax,dword ptr ds:[eax+4] | eax=[edx+4+参数1*0x0C+4]
004D4BD4 | A8 01 | test al,1 | eax=[edx+8+参数1*0x0C]
004D4BD6 | 75 04 | jne wow.4D4BDC | [[[fs:[2c]+0]+8]+1c]+8+0*0C //可能是怪物数组
004D4BD8 | 85C0 | test eax,eax | [[[2C1DDFF0+下标*0C+8]+964]+5C] //0..31//0..0x1F
004D4BDA | 75 02 | jne wow.4D4BDE | eax=[[[2C1DDFF0+00*0C+8]+964]+5C] //对象
004D4BDC | 33C0 | xor eax,eax | eax=0
004D4BDE | 57 | push edi |
004D4BDF | 8B7D 0C | mov edi,dword ptr ss:[ebp+C] | 参数2
004D4BE2 | 53 | push ebx |

开始
004D4BE3 | A8 01 | test al,1 | 循环开始 11111101 and 1 =1
004D4BE5 | 75 2F | jne wow.4D4C16 | 判断eax是否是单数 //奇数 哪果eax是单数则跳出循环
004D4BE7 | 85C0 | test eax,eax |
004D4BE9 | 74 2B | je wow.4D4C16 | 判断eax==0则退出循环
004D4BEB | 3970 18 | cmp dword ptr ds:[eax+18],esi | [对象+18]与 参数1比较
004D4BEE | 75 0F | jne wow.4D4BFF |
004D4BF0 | 8B50 30 | mov edx,dword ptr ds:[eax+30] | [对象+30] 与 ID1 比较
004D4BF3 | 3B17 | cmp edx,dword ptr ds:[edi] |
004D4BF5 | 75 08 | jne wow.4D4BFF | 不相等 进入下一次循环
004D4BF7 | 8B50 34 | mov edx,dword ptr ds:[eax+34] | [对象+30] 与ID1 比较 相等走到这里
004D4BFA | 3B57 04 | cmp edx,dword ptr ds:[edi+4] |
004D4BFD | 74 19 | je wow.4D4C18 | [对象+30] [对象+34] 与ID1,ID2分别比较 如果相等 则返回对象
004D4BFF | 8B59 1C | mov ebx,dword ptr ds:[ecx+1C] | 下一次循环
004D4C02 | 8BD6 | mov edx,esi | edx=0C,1D
004D4C04 | 2351 24 | and edx,dword ptr ds:[ecx+24] | [ecx+24]=1F // edx=edx and 1F
004D4C07 | 8D1452 | lea edx,dword ptr ds:[edx+edx*2] | edx=edx*3
004D4C0A | 8D1493 | lea edx,dword ptr ds:[ebx+edx*4] | edx=ebx+下标2*0x0C
004D4C0D | 8B12 | mov edx,dword ptr ds:[edx] | edx=[edx]=[ebx+下标2*0x0C]
004D4C0F | 03D0 | add edx,eax | edx=1C+对象
004D4C11 | 8B42 04 | mov eax,dword ptr ds:[edx+4] | 对象=[1C+对象+4]=[对象+1C+4]=[对象+0x20]
链表20
004D4C14 | EB CD | jmp wow.4D4BE3 | 循环结束
004D4C16 | 33C0 | xor eax,eax | eax=NULL //eax=0
004D4C18 | 5B | pop ebx | 返回值 eax
004D4C19 | 5F | pop edi |
004D4C1A | 5E | pop esi | 角色对象,怪物对象,其它对象?
004D4C1B | 5D | pop ebp | 2C318C50 角色对象
004D4C1C | C2 0800 | ret 8 | [eax+D0]+174
004D4C1F | CC | int3 | [2CFD05C8+D0]+174
004D4C20 | 56 | push esi |

进行分析找到链表

这里说一下思路

通过怪物名字 找到怪物对象

[[[2C1DDFF0+00*0C+8]+964]+5C]

2C1DDFF0+00*0C+8

通过对象分析找到链表

郁金香5 分析游戏内npc 数据的更多相关文章

  1. Python股票分析系列——基础股票数据操作(一).p3

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  2. 使用Octave分析GNU Radio的数据

    Octave 是 GNU Radio 的最流行的分析工具,因此 GNU Radio 软件包也包含它自身的一组脚本用于读取和语法分析输出.本文介绍如何使用 Octave 分析 GNU Radio 产生的 ...

  3. 如何实现查询显示N个工作日有效期内的数据

    功能点分析:要显示N个工作日有效期内的数据,需要考虑: 1. 可以给每条数据增加一个有效期时间字段,查询时只显示有效期之前的数据,如有效期为七天,数据的创建时间是2014-07-21,那七个工作日有效 ...

  4. HDFS源码分析心跳汇报之数据块汇报

    在<HDFS源码分析心跳汇报之数据块增量汇报>一文中,我们详细介绍了数据块增量汇报的内容,了解到它是时间间隔更长的正常数据块汇报周期内一个smaller的数据块汇报,它负责将DataNod ...

  5. AI-Info-Micron-Insight:案例分析:美光使用数据和人工智能来发现、倾听和感觉

    ylbtech-AI-Info-Micron-Insight:案例分析:美光使用数据和人工智能来发现.倾听和感觉 1.返回顶部 1. 案例分析:美光使用数据和人工智能来发现.倾听和感觉 内存芯片制造商 ...

  6. 破解者是如何篡改游戏内数值的,揭秘Android手游破解全过程

    由于Android系统的开放性,让人人都是开发者成为可能,也正因如此,手机APP遭受破解和盗版问题长期存在,且愈演愈烈.尤其是手游 行业,如刀塔传奇.植物大战僵尸.2048等知名游戏被破解的案例不胜枚 ...

  7. Unity游戏内版本更新

    最近研究了一下游戏内apk包更新的方法. ios对于应用的管理比较严格,除非热更新脚本,不太可能做到端内大版本包的更新.然而安卓端则没有此限制.因此可以做到不跳到网页或应用商店,就覆盖更新apk包. ...

  8. Linux内核--网络栈实现分析(七)--数据包的传递过程(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...

  9. 使用uGUI制作游戏内2D动画

    在3D的游戏中制作2D的效果是一个很常见的需求,我在很早前玩过一个叫做艾尔之光的游戏,里面就大量的使用了这个技术.就像下面图片中的伤害数字,这些数字往往还是有一些动画效果在里面的,比如大小的变化,颜色 ...

  10. REUSE_ALV_GRID_DISPLAY显示ALV,设置可编辑时,与内表数据同步问题

    使用function module: REUSE_ALV_GRID_DISPLAY显示ALV,并设置alv某些列可编辑,可是编辑后发现对应的内表数据并没有随之改变.记得需要设置一个参数的值,怎么想也记 ...

随机推荐

  1. .NET MAUI 安卓应用开发初体验

    一..NET MAUI开发环境搭建&安卓SDK和安卓模拟器安装提示网络连接失败问题解决 引言 本节目标是帮助第一次搭建.NET MAUI开发环境,在下载安卓SDK和安卓模拟器过程中一直提示网络 ...

  2. 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能分析实战篇」

    Linux系统:Centos 7 x64 Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP) ...

  3. MySQL进阶实战3,mysql索引详解,上篇

    一.索引 索引是存储引擎用于快速查找记录的一种数据结构.我觉得数据库中最重要的知识点,就是索引. 存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣.例如MyISAM使用前缀压缩技术使 ...

  4. 【大数据面试】ClickHouse:介绍、特点、数据类型、引擎、操作、副本、分片

    1.介绍 开源的列式存储数据库(DBMS),由C++编写,用于在线分析处理查询(OLAP) 可以通过SQL查询实时生成分析数据报告 解释: DBMS:数据库管理系统 常见的列式存储数据库:Hbase. ...

  5. 【每日一题】【栈和队列、双端队列】20. 有效的括号/NC52 有效括号序列-211127/220126

    给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合. 来源:力扣(L ...

  6. re、base64的结合使用爬取豆瓣top250

    一.缘由 对于豆瓣的这个网站,记得使用了不少于三种的爬取和解析方式来进行的.今天的这种解析方式是我使用起来较为顺手,后来就更喜欢使用xpath解析,但是这两种也需要掌握. 二.代码展示 '''爬取豆瓣 ...

  7. 深度学习GPU加速配置方法

    深度学习GPU加速配置方法 一.英伟达官方驱动及工具安装 首先检查自己的电脑驱动版本,未更新至最新建议先将驱动更新至最新,然后点击Nvidia控制面板 2.在如下界面中点击系统信息,点击显示可以看见当 ...

  8. 静态文件配置 django连接MySQL django模型层初识 ORM基本语句

    目录 静态文件配置 1. 问题描述 2. 静态文件 3. 资源访问 form表单属性补充 action method 请求方法 get请求 post请求 views层 request对象 reques ...

  9. python-docx操作word文档详解

    案例 官网地址: https://python-docx.readthedocs.io/en/latest/ pip install python-docx from docx import Docu ...

  10. 说透 Kubernetes 监控系列 - 概述

    本文作者孔飞,来自快猫星云团队,Kubernetes专家,Categraf 采集器核心研发工程师 云原生包含了开源软件.云计算和应用架构的元素.云计算解决开源软件的运行门槛问题,同时降低了运维成本和基 ...