外挂学习之路(8)--- 释放技能call-程序员宅基地

技术标签: 数据安全  

首先以寻找 所有对怪物释放技能的call为主题

首先理一下编程者如何编写释放技能的流程,

1.      游戏玩家释放技能

2.      获取当前选中怪物ID或者指针或者标识一类的总之能标识释放对象

3.      进行释放技能的校验(如技能CD,施法对象是否正确)

4.      向服务器发送封包数据

5.      服务器返回数据

6.      获取当前选中怪物ID或者指针或者标识一类的总之能标识释放对象(千万注意)

7.      播放技能释放的动画


一般是这么写的不排除特殊写法,

按照这个思路我们从步骤2下手回溯找步骤1的释放技能的call。先用CE找到选中怪物的有哪些标识,经过赛选得出如下结果:


我们改变选中的怪物观察这三个值得变化,发现数据1和数据2始终保持一致并且大小都是相邻的数据,数据3则飘忽不定,由此猜测数据1和2是怪物的ID,3是怪物的指针。

接下来我们查看那些代码访问了这些地址的数据,注意是访问了不是改写了,在上次的找选怪call中我们查看的是那些代码改写了这些地址的数据,两者寻找的目的不一样,故此寻找方式也不一样,

我们看到访问怪物ID好像没有而访问怪物指针瞬间一大堆,不要着急这些都不是我们想找的代码,因为我们还没有释放技能,我们对怪物进行攻击,并查看这三个窗口瞬间出现的代码,找到我们怀疑的代码(理论上攻击一次访问一次),再次攻击,理论上访问的应该是两次,我们继续校验我们怀疑的代码(红框圈住的是访问次数),暂停攻击理应看到访问次数不再增加

经过赛选攻击怪物的时候访问的应该是怪物指针,并且按照上述规则找到几处可以的代码,这时候只能打卡OD校验了。

先给从CE里拿到的代码下断点,校验规则:

1.不进行攻击时进行其他任何操作断点不会断下

2.释放技能之后断点立即断下

3.断点断下之后技能应该尚未击中怪物,释放技能的call尚未完成(如何判断是否击中怪物:击中怪物之后怪物会方向攻击任务)

109F69CB   .  8BAA 98050000 MOV EBP,DWORD PTR DS:[EDX+598]  发送封包后
109F3CC3  |.  8BB2 98050000 MOV ESI,DWORD PTR DS:[EDX+598]  发送封包后
109F4AF5  |.  8B82 98050000 MOV EAX,DWORD PTR DS:[EDX+598]  发送封包后
109F60C0  |.  8B80 98050000 MOV EAX,DWORD PTR DS:[EAX+598]  发送封包后
109F3B9B  |.  8BB0 98050000 MOV ESI,DWORD PTR DS:[EAX+598]  发送封包后
108EC682   .  8B82 98050000 MOV EAX,DWORD PTR DS:[EDX+598]  发送封包后
102C6D90   .  8BB9 98050000 MOV EDI,DWORD PTR DS:[ECX+598]  发送封包前

依据上述判断我们最终搜定了其中之一的代码(最后一个)

剩下的就是老办法,CTRL+F9回溯,下断点,标号,连续回溯6-7层即可(一般情况,包含间接call),肉眼观察这些call,理应最少一个参数,因为技能有多个,肯定有技能参数。

然后就是用代码注入工具进行测试。最终找到释放技能的call.

 

调用call之前抓取堆栈,更换技能再抓取堆栈,(其中一次释放技能1堆栈信息如下)

EAX 00000031
ECX 1EF69450
EDX 00000001
EBX 1D8CFC00
ESP 0038E4D4
EBP 00000000
ESI 0038EF34
EDI 0038EF2B
EIP 112A4AE2 em.112A4AE2
C 0 ES 002B 32位 0(FFFFFFFF)
P 1 CS 0023 32位 0(FFFFFFFF)
A 0 SS 002B 32位 0(FFFFFFFF)
Z 1 DS 002B 32位 0(FFFFFFFF)
S 0 FS 0053 32位 FFFDD000(FFF)
T 0 GS 002B 32位 0(FFFFFFFF)
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -??? FFFF 443B8000 44804000
ST1 empty -NAN FFFF FFFFFFFF 00000000
ST2 empty -??? FFFF 3F800000 3F800000
ST3 empty -??? FFFF 443B8000 00000000
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 36.000000000000000000
ST7 empty 0.0
               3 2 1 0      E S P U O Z D I
FST 0137 Cond 0 0 0 1  Err 0 0 1 1 0 1 11  (LT)
FCW 027F Prec NEAR,53  掩码    1 1 1 1 1 1
 

我们发现eax就是技能ID(更换技能时只有这个寄存器的值有变化,其他无变化)

31代表技能1,32代表技能2 ,以此类推,(这款游戏的技能在快捷栏数组里面不可以变动)

值得注意的是其他的非指向技能(如打坐,召唤坐骑)也是这个call只需调整参数即可,

例如,召唤坐骑测试call:

mov ecx,1EF69450
push 1
push 78
CALL 10B26810

普通攻击走的不是这条线,下一篇我们继续套路普通攻击的call.

 







版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liujiayu2/article/details/56305420

智能推荐

ASP.NET MVC 模式-程序员宅基地

文章浏览阅读307次。ASP.NET MVC 是一个全新的Web应用框架ASP.NET 代表支撑应用框架的技术平台,表明ASP.NET MVC和传统的WebForm应用框架一样,都是建立在ASP.NET平台之上。MVC 表示该框架背后的设计思想,意味着ASP.NET MVC采用了MVC架构模式。MVC在20世纪70年代后期出现,产生于Xerox PARC施乐公司的帕洛阿尔托研究中心的Small..._aspnet mvvm

MacOS M1搭建Selenium环境_m1 mac selenium配置-程序员宅基地

文章浏览阅读350次。解压压缩包后,打开终端,进入当前chromedriver所在的路径,将chromedriver移动到默认路径(/usr/local/bin/)二、下载对应版本的浏览器驱动器:找到版本一致或最接近的版本的驱动器。若列表中含有selenium则表明安装成功。记得勾选上继承全局包,要不然会报错。_m1 mac selenium配置

UE4 OpenCV 插件 官方配置流程_ue4 opencv操作texture-程序员宅基地

文章浏览阅读4.6k次。谨以此片献给各种遇到坑的朋友。官网上的OpenCV 插件,根据github 上的描述 是针对UE4 4.16 版本以下的版本来提供的 OpenCV 采用的是3.0.0 , 也可以使用openCv 3.2.0环境描述:Ue4 4.15 OpenCV 3.2.0固有插件配置步骤:1, 创建一个C++ 的工程,打开后, 关闭即可。2,将OpenCV 的插件文件 解压缩之后, 将里面的文件..._ue4 opencv操作texture

使用Anaconda安装opencv-python-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏11次。直接在cmd命令行输入:conda install --channel https://conda.anaconda.org/menpo opencv3 接着根据提示按Y即可

nyoj-236-心急的C小加_nyoj 心急的c小加-程序员宅基地

文章浏览阅读646次。#include#includestruct mubang{int x;int y;}a[5005];int cmp(const void *a,const void *b){struct mubang *c=(struct mubang *)a;struct mubang *d=(struct mubang *)b;if(c->x!=d->x)re_nyoj 心急的c小加

JavaEE基础知识讲解-程序员宅基地

文章浏览阅读1.7k次。学习JavaEE的你们是不是一头雾水呢? C/S client/server 客户端/服务器 B/C browser/server 浏览器/服务器 通过浏览器访问到对应页面,发送请求(同步请求,异步请求,ajax请求,会读接口文档)---服务器(云服务器:腾讯云服务器 阿里云服务器等等)---应用服务器Tomcat---匹配servlet---service业务处理---dao层 JDBC Hibemate,ORM---数据库---File---servlet(控制器Controller)MVC_javaee基础知识

随便推点

深度学习简介-程序员宅基地

文章浏览阅读910次,点赞28次,收藏19次。交互性检索是在检索用户不能构建良好的检索式(关键词)的情况下,通过与检索平台交流互动并不断修改检索式,从而获得较准确检索结果的过程。新闻推荐需要:获取用户请求,召回候选新闻,对候选新闻进行排序,最终给用户推出新闻。将用户持续浏览新闻的推荐过程看成一个决策过程,通过强化学习学习每一次推荐的最佳策略,提高用户的点击率。无人驾驶被认为是强化学习短期内能技术落地的一个应用方向,很多公司投入大量资源在无人驾驶上,其中百度的无人巴士“阿波龙”已经在北京、武汉等地展开试运营,自动无人驾驶的行车视野如下图所示。

前端开发工程师简历_前端简历-程序员宅基地

文章浏览阅读3.5w次,点赞102次,收藏685次。简历是什么找工作之前投递的个人信息和工作能力----不全面应该是:个人当前阶段的价值体现前者:我能卖多少钱;后者:我现在值多少钱建议:每隔半年/一年给自己做总结的时候写一份简历(相当于个人价值总结)面试要刻意、精心准备公司内部晋升答辩,需要精心准备(ppt、演讲基本要精心准备一个月的时间)面试,简历,同样需要精心准备目录面试官如何分析一份简历简历模板和内容个人信息教育经历专业技能工作经历项目经历体现自己的亮点课程总结注意:不要造假学历造假:学信网可查工作经历造假:可_前端简历

CentOS 通过yum安装gcc 4.8, 4.9, 5.2等高版本GCC_有gcc高版本的yum库-程序员宅基地

文章浏览阅读2.6k次。https://www.dwhd.org/20160724_085212.html_有gcc高版本的yum库

SpringBoot自动配置原理分析_springboot 自动配置分析与整合测试-程序员宅基地

文章浏览阅读320次。1起步依赖原理分析 1.1分析spring-boot-starter-parent 按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置):<parent> <groupId>org.sp..._springboot 自动配置分析与整合测试

python2.7 Crypto 使用pip的安装方式 【橘小白】_python2.7 使用pycrypto-程序员宅基地

文章浏览阅读9.1k次。最近想要使用Crypto.Cipher 的AES模块,可总是找不到Crypto.Cipher接下来介绍几个坑1.AES是在pyCrypto中而不是crypto中2.这个pyCrypto中间的C一定要大写,不然也不能用接下来介绍正确的安装姿势1.首先需要现在一款编译器Microsoft Visual C++ Compiler for Python 2.7下载地址https://www.m..._python2.7 使用pycrypto

整数划分问题(递归&非递归)_n的划分种数,其中划分大于等于2非递归算法-程序员宅基地

文章浏览阅读2.9k次,点赞4次,收藏7次。递归算法:将正整数n表示成一系列正整数之和,n=n1+n2+...+nk,其中n1>=n2>=n3>=...>=nk>=1,k>=1。正整数n的这种表示称为正整数n的划分。正整数n的不同的划分个数城外正整数n的划分数,记作p(n)。例如,正整数6有如下11种不同的划分,所以p(6)=11。6;5+1;4+2;4+1+1;3+3;3+2+1;3+1+1+1;2+2+2_n的划分种数,其中划分大于等于2非递归算法

推荐文章

热门文章

相关标签