Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >查找某棋牌平台李逵劈鱼金币值内存地址的曲折历程

查找某棋牌平台李逵劈鱼金币值内存地址的曲折历程

作者头像
用户2135432
发布于 2018-06-04 07:54:02
发布于 2018-06-04 07:54:02
1.3K0
举报
文章被收录于专栏:猛牛哥的博客猛牛哥的博客

最近承接订做了一个捕鱼的辅助软件,如要读取玩家金币数值,但是查找对应内存地址的过程很曲折,可以说历尽千辛万苦才找到,走了不少弯路。所以将过程记录下来,防止以后遇到类似问题。

下图要找的数据,1000000是金币值,90的发炮时的炮弹大小,也就是打一炮用多少金币。

要查找的内存数据

首先,按照惯例,打开CE,搜索金币值。然而却一个结果都搜不到,数据类型不管是4字节、8字节、浮点数、字符串,全都搜不到。然后根据变化规律,先模糊搜索,然后增加、减少数据,最后还是搜不到。

看来此路不通,得想别的办法。联想到游戏发炮时,应该会判断剩余的金币是不是够打一炮,所以根据访问炮弹大小的代码,应该能找到用到金币值的代码。然后我就开始了验证此想法。

首先,搜索找到炮弹大小的内存值。先搜索90,然后改变炮弹大小,再搜。几次过后就成功找到了这个内存地址。然后“查看什么代码访问了这个地址”,得到3个地方的代码访问了这个内存地址。

找到的炮弹大小内存地址

我打了3炮,第三行的代码执行了3次。所以我判断是这个地方附近就会判断剩余金币够不够发炮(事后证明:这个判断带我走了曲折道路,坑!)。

打开OD,定位到第三行代码的位置:0x4240e4。

读取炮弹大小的地方

经过一些简单的下断测试和猜测,这行代码下面都没有直接对比炮弹大小的代码,下面的几个call就第一个(call 00416CD0)用到了炮弹大小作为参数,这个call里面可能有解密金币数量的代码。所以在这里下断,先简单看一下它的4个参数都是什么,做好标记,然后跟进去分析。这个call里面又有好几层call,刚开始的代码还能看懂一些,但是进入里面嵌套的2层、3层call后,代码就越来越看不懂了。花了好几个小时,还是没有头绪。最后有个call就不想分析,直接F8步过,结果游戏进程终止了运行,应该是这个call里面有什么检查机制。我应该庆幸游戏在这里有个检查机制,否则不知道还要继续浪费多少时间。

分析第一个call

因为游戏进程终止了,所以重新登陆游戏,再用OD附加。现在想想,刚才那个call内部太复杂,可能方向错了,可能是自己想错了。然后进游戏,把金币下掉,让自己的金币不够发炮。然后再在这个地方下断点。结果在游戏内点发炮时,这里不会执行。这就证明判断金币够不够发炮的代码肯定在这个位置的前面,之前的分析都是在做无用功。然后向上翻,逐个地方下断,测试金币够发炮和不够发炮时的运行情况。最后找到了判断金币是否够发炮的地方:

找到了判断金币是否够发炮的地方

cmp dword ptr ss:[ebp-0x160],eax这句代码是判断金币是否够发炮的,其中[ebp-0x160]是用户金币,eax是要打的炮大小。然后再前面查找[ebp-0x160]的来源:

获取玩家金币的代码

最后找到玩家金币值的来源是:mov dword ptr ss:[ebp-0x160],eax,eax的来源是call 004035C0。

这个call内部的代码:

获取玩家金币call内部的代码

可以看到, 金币值来自一个和玩家座位号有关的地址。这个金币值的低32位和0xAAAAA969异或,高32位和0x29a异或,之后得到的数值就是玩家真实的金币值。真实金币值除了会临时在堆栈内存:[ebp-0x160]保存一下之外,不会保存在其他内存保存,所以用CE搜索不到。

总结:有的数值用CE搜索不到时,可以尝试先找到可能会使用这个数值的代码位置,然后下断点,断下之后再搜索,这样就可以搜到临时保存在堆栈内存中的数据,然后再分析这个数据的来源。这样可以少走弯路。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018 年 5 月 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
某棋牌游戏大厅座位内存分析过程
目标:通过内存判断每个座位上是否有玩家。所以,要找到每个桌子、每个座位相关内存的排布规律及其内存基址。
用户2135432
2019/01/03
2.4K1
集结号抢座挂的制作分析过程(一):座位内存的分析
因为集结号棋牌大厅更新的比较频繁,每次更新都需要重新找内存基址,功能call,而本人的脑子不好使,做过的东西一般过几天就会忘,重新做一遍还是要费不少脑筋。经过几番折腾,最后决定把相关的过程记录下来,以便以后游戏再更新时可以少一些工作量。所以,这篇文章不是教程,只是本人的工作笔记,其他人(老手)可以借鉴,但是不适合新手用来学习。 第一步,先用CE搜索到座位的内存地址。一个座位上有人时,其内存值是指向该玩家内存数据的地址;座位上没人时,其内存值是0。根据这个规律可以搜索到某个座位的内存地址,然后查看什么指令写入
用户2135432
2018/06/04
1.1K1
CE和OD配合找大闹天宫游戏基址
使用CE的传统方法找基址一般是先搜到内存地址以后,然后再查看是什么代码访问或者改写了该地址,再根据这行代码中的地址和偏移量一步步查找,例如我分析大闹天宫时,代表锁鱼类型的内存地址是:0x9BAFB28,然后查看改写这个地址的代码是:
用户2135432
2023/10/21
6960
CE和OD配合找大闹天宫游戏基址
植物大战僵尸:辅助制作高级技巧
通过向游戏中注入一段特殊的汇编代码,实现自动获取动态地址,省略找基址的麻烦。该方法适用于游戏基址层数过多无法直接获取到基址,游戏根本无法找到基址。本地CALL就是程序中的过程调用,通过调用已知的本地CALL即可实现某些变态功能,这些变态功能往往是通过修改数值参数也做不到的,接下来我们将通过遍历阳光产生的时间,寻找阳光产生的本地Call,并使用代码注入器注入,自定义生成阳光。通过基址加偏移的方式我们可以找到游戏中的指定参数,但这种找基址的方式并不是白用百灵的,在一些网络游戏中基址加密后根本无从下手,如果此时我们需要在程序中打补丁该如何定位到我们所需要的指令上呢,接下来将介绍一种全新的找地址方式,特征码定位技术。
王 瑞
2022/12/28
1.1K0
植物大战僵尸:辅助制作高级技巧
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内存地址 )
在上一篇博客 【Windows 逆向】使用 CE 分析内存地址 ( 运行游戏 | 使用 CE 工具分析游戏内子弹数量对应的内存地址 | 内存地址初步查找 | 使用二分法定位最终的内存地址 ) 中 , 分析到子弹的数据对应的地址是 019FFB48 地址 ;
韩曙亮
2023/03/29
1.8K0
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内存地址 )
植物大战僵尸:逆向分析阳光
植物大战僵尸这款游戏可以说是很多90后的回忆了,基本上只要是90后或多或少的都接触过,而玩游戏与制作辅助是两个概念,今天我将给大家分享一些游戏辅助方面的制作技巧,之所以使用植物大战僵尸这款游戏是因为游戏简单容易分析,且不需要考虑驱动保护版权等相应的问题,这里我会把我的分析思路分享出来,来供大家参考。
王 瑞
2022/12/28
7110
植物大战僵尸:逆向分析阳光
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )
在上一篇博客 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内存地址 ) 中 , 没有找到真实地址 , 本篇博客重新开始一个完整流程 ;
韩曙亮
2023/03/29
1.3K0
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★
在博客 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内存地址 ) 中 , 没有找到真实地址 , 本篇博客重新开始一个完整流程 ;
韩曙亮
2023/03/29
2K0
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★
植物大战僵尸:实现全屏爆炸
植物大战僵尸这款游戏可以说是很多90后的回忆了,基本上只要是90后或多或少的都接触过,而玩游戏与制作辅助是两个概念,今天我将给大家分享一些游戏辅助方面的制作技巧,之所以使用植物大战僵尸这款游戏是因为游戏简单容易分析,且不需要考虑驱动保护版权等相应的问题,这里我会把我的分析思路分享出来,来供大家参考。
王 瑞
2022/12/28
5820
植物大战僵尸:实现全屏爆炸
吞食鱼2(FeedingFrenzyTwo) 修改器[通俗易懂]
童年回忆系列。小时候特别喜欢玩这类游戏,软件不大,很慢的网速也不会下载太久,然后对配置要求不高,很破的电脑也可以玩得很开心。不过也有糟心的时候啊,大鱼太多,无数次死于挑战咬梭子鱼的尾巴……今年最后一天,就休闲一小会吧。
全栈程序员站长
2022/09/07
1.4K0
吞食鱼2(FeedingFrenzyTwo) 修改器[通俗易懂]
封包式游戏功能的原理与实现
1、模拟式:通过调用 Windows API 来控制鼠标键盘等,使游戏中的人物进行流动或攻击。优点是实现较为简单,周期短,涉及技术面小。缺点是功能不多,较为单一。按键精灵就是其中的代表。
信安之路
2020/04/22
3.9K0
封包式游戏功能的原理与实现
植物大战僵尸:寻找阳光掉落Call
本次实验内容:本次实验将接触到Call调用这个概念,什么是Call调用? Call相当于你在编程时所编写的函数,而高级语言中的函数最终也是会被编译器转换为汇编格式的Call调用,这些关键Call普遍都
王 瑞
2023/02/25
7130
植物大战僵尸:寻找阳光掉落Call
写辰龙抢座挂遇到的问题
这几天给客户写一个辰龙棋牌的抢座挂,客户要求抢座位时需要给桌子设置密码。本来觉得是个比较简单的时,可能改改内存就可以了。经过分析,找到了保存桌子密码的内存地址。开始查看“什么代码访问了该地址”,奇怪的发现:进入桌子时,游戏并不会读这处内存,而只有在游戏房间里设置这个密码时才会读写。本人第一次做这种东西,没有经验,所以开始胡乱想象:难道是把密码保存在硬盘文件或者注册表了?经过各种分析、查找、监控,发现密码既没有写入文件,也没有写入注册表。最后经过各种折腾,发现这个棋牌游戏的房间设置是保存在游戏服务器的(真是坑
用户2135432
2018/06/04
7293
JAVA开发外挂第二弹-CE查找游戏基址
昨天讲了JAVA的JNI,今天讲一下如何用CE(Cheat Engine)查找游戏的基址, 基址就是游戏在内存中的一个静态的内存地址,可以通过偏移找到本次游戏的数据地址。
博博1998
2022/04/25
4.4K0
JAVA开发外挂第二弹-CE查找游戏基址
1.7 完善自定位ShellCode后门
在之前的文章中,我们实现了一个正向的匿名管道ShellCode后门,为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能,此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用,接下来将实现通过PEB获取GetProcAddrees函数地址,并根据该函数实现所需其他函数的地址自定位功能,通过枚举内存导出表的方式自动实现定位所需函数的动态地址,从而实现后门的通用性。
王 瑞
2023/07/05
2530
1.7 完善自定位ShellCode后门
通过实例学习ROP技术
这两天闲着无聊就在 exploit-db 上找个小软件练练手,但是 exploit-db 上面给的 poc 并能正常运行,无奈只好自己写了一个,顺便写篇文章把自己写 shellcode 的思路分享给大家。
信安之路
2018/08/08
8160
通过实例学习ROP技术
PC微信逆向:实现自动添加好友分享名片
在我的成品 WeChatRobot 里面实现了四个自动系列的功能,自动添加好友分享名片,自动收款,自动同意好友请求,还有自动聊天。今天分享一下如何实现自动添加好友分享名片。其他的三个功能思路大致相同。
信安之路
2019/08/15
4.3K2
PC微信逆向:实现自动添加好友分享名片
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★
以查找子弹数量内存为例 , 参考 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★ 一、查找子弹数据临时内存地址 博客章节 ;
韩曙亮
2023/03/29
2.3K0
【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★
脱Aspack手动查找IAT完成脱壳修复
对于脱一些简单的壳来说,可以比较好的学习 PE 文件结构的知识,因为简单的壳比较容易脱,脱完以后进行修复的时候大部分就是处理 PE 文件结构了。因此,学习 PE 文件结构时,可以通过修复壳来加深对 PE 文件结构的学习。
码农UP2U
2020/08/26
1.6K0
PC 端微信技术研究之保存聊天语言
最近又学习了某位大佬用 CE 的方法,大佬的一句话有点醍醐灌顶,然后有了新的感觉,然后开始尝试实践这篇文章。
信安之路
2019/03/04
1.6K0
PC 端微信技术研究之保存聊天语言
推荐阅读
相关推荐
某棋牌游戏大厅座位内存分析过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档