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. (工具) 性能测试基准软件 lmBench (待补充)

    1. lmBench 介绍 Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench旨在使系统开 ...

  2. Jmeter中用户定义的变量跟用户参数的区别

    用户定义的变量: 全局变量,可以跨线程组被调用,但是,在启动运行时,获取一次值,在运行过程中,不会再动态获取值.用户参数: 局部变量,只能在自己的线程组中被调用,不能直接跨线程组被调用:但是,它在启动 ...

  3. 使用Python实现多线程、多进程、异步IO的socket通信

    多线程实现socket通信服务器端代码 import socket import threading class MyServer(object): def __init__(self): # 初始化 ...

  4. MySQL进阶实战2,那些年学过的事务

    @ 目录 一.MySQL服务器逻辑架构 二.并发控制 1.读写锁 2.锁粒度 3.表锁 4.行级锁 三.事务 1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(iso ...

  5. 详记apache-poi的使用,将word,excel,ppt转换为html

    原文:https://blog.51cto.com/yunyaniu/5210961 java:Java的jar包之POI的简介.安装.使用方法(基于POI的转换-Word.Excel.Ppt等转ht ...

  6. Python编程规范之PEP8

    Python编程规范-PEP8 PEP是 Python Enhancement Proposal 的缩写. 英文链接: https://legacy.python.org/dev/peps/pep-0 ...

  7. 多表查询两种方法、可视化软件navicat、python操作mysql、pymysql模块

    目录 多表查询的思路 多表查询的两种方法 小知识点补充数说明 可视化软件Navicat 安装教程 数据库常用操作 多表查询练习题 python 操作MySQL pymysql补充说明 Non-grou ...

  8. Rust-01 启航

    安装 所谓工欲善其事必先利其器,我们学习Rust当然需要安装Rust.我们可以从Rust官网下载rustup工具进行rust的安装.安装完成后,我们在命令行中输入rustc --version便可以查 ...

  9. ACWJ_00扫描器

    第一部分:词法扫描介绍 ​ 我们从一个简单的词汇扫描器开始我们的编译器编写之旅.正如我在之前部分所提到的,扫描器的任务是从输入语言中(用来编译的语句)识别词法元素或者是符号. ​ 我们将定义一个只有5 ...

  10. MornHus--一个野生蒟蒻的生成

    野生蒟蒻一个. 蒟蒻的洛谷首页:MornHus 蒟蒻已经遗弃的CSDN首页:MornHus 写博的内容: 主要就是平时写写算法的笔记,有的时候写点数学题,有的时候还会搞一些奇怪的东西[doge] 大蒟 ...