简单分析某个棋牌游戏的抢位置功能
来源:互联网 发布:有关修车的软件 编辑:程序博客网 时间:2024/05/29 06:28
最近研究了一款棋牌游戏的抢位置功能,通过分析找到了抢位置的关键位置,有了call 后,有人说有了call 那参数还不容易吗? 曾经发过一个帖‘让游戏自动送上call的参数’ 有人曾经这样回复
找到call了, 分析参数还不容易...
静态用ida看引用
动态下断点, 回溯栈
需要你这么麻烦么
其实真的有点call 的参数不是你想的那么简单,就比如在游戏中捡取物品,有的通过物品id做参数,那么你需要遍历周围物品,得到物品id 然而一切都不是想的那么简单,也许光遍历周围物品就花费你几天的时间(高手除外。。).....然而像做游戏辅助的不是想说怎么分析游戏才有意义之类的,有的只是想怎样才能达到我的目的,在做这个抢位置的过程中发现游戏的数据太难找了.......当我向上回溯了十几个循环都没找到完整的参数来源..................分析的过程很艰难。。后来通过内存搜索定位特征码从而找到了数据的来源参数.....然而搜索的过程挺艰难的..... 搜索的目的只是获得2个参数.....一个ecx ,一个是每个位置对应的一个内存地址
*************关键call**********************************************
83BA 98000000 00 cmp dword ptr ds:[edx+0x98],0x0 判断这个位置是否有人,有 就跳走不发送抢位置的相应call
75 15 jnz short Lobby.00444927 有人跳走不发送call
8B45 08 mov eax,[arg.1]
50 push eax 参数一
8B4D FC mov ecx,[local.1]
51 push ecx 参数二
8B4D F0 mov ecx,[local.4]
E8 9EEBFFFF call Lobby.
*****************************************************************
最关键是就是那2个参数了
下面分析参数*******************************
通过分析了很久......那个参数中第一个就是代表是那个位置,比如第一张桌子的第一个就是一个参数,第二个又是另外一个参数*********************反正进过分析想找到那个数据不是那么简单的.......
上面都是很久以前分析过了的,最近再次拿到分析突然想到一个办法也许能够让参数的获取变得简单.....
cmp dword ptr ds:[edx+0x98],0x0 判断这个位置是否有人
里面的edx就是那个座位的参数......每次点击一下那个位置无论有没有人代码都会执行一遍.......
那么我想到如果我就在这里hook住,当你想抢哪个位置,你点击一下那个位置,我的软件通过hook 那里参数不就自动把参数取出来了吗?那么在软件也不用输入第几桌,上桌还是下桌(因为按照常理的话你必须输入你要抢的是那一桌,上面那个位置还是下面的).........每次用户想抢哪个位置叫他点击一下那个位置,就表明了他要抢的位置...那么我 的软件就可以开始抢位置了....
下面我就具体写出来我的部分代码(delphi)
var
st:integer;///定义一个全局变量来保存位置参数
c_ecx:integer;
st_1:integer;
function hook():bool;stdcall
var
jm:integer;
begin
jm:=xxxxxxxxx;//跳回去
asm
mov i,ebx
mov c_ecx,ecx
jmp jm
end;
上面就是我的hook 由于是今天想到的思路,我还没开始写代码。。。
你把找到的call 那里找个合适的地方hook 了就行了、,。。。。
找到call了, 分析参数还不容易...
静态用ida看引用
动态下断点, 回溯栈
需要你这么麻烦么
其实真的有点call 的参数不是你想的那么简单,就比如在游戏中捡取物品,有的通过物品id做参数,那么你需要遍历周围物品,得到物品id 然而一切都不是想的那么简单,也许光遍历周围物品就花费你几天的时间(高手除外。。).....然而像做游戏辅助的不是想说怎么分析游戏才有意义之类的,有的只是想怎样才能达到我的目的,在做这个抢位置的过程中发现游戏的数据太难找了.......当我向上回溯了十几个循环都没找到完整的参数来源..................分析的过程很艰难。。后来通过内存搜索定位特征码从而找到了数据的来源参数.....然而搜索的过程挺艰难的..... 搜索的目的只是获得2个参数.....一个ecx ,一个是每个位置对应的一个内存地址
*************关键call**********************************************
83BA 98000000 00 cmp dword ptr ds:[edx+0x98],0x0 判断这个位置是否有人,有 就跳走不发送抢位置的相应call
75 15 jnz short Lobby.00444927 有人跳走不发送call
8B45 08 mov eax,[arg.1]
50 push eax 参数一
8B4D FC mov ecx,[local.1]
51 push ecx 参数二
8B4D F0 mov ecx,[local.4]
E8 9EEBFFFF call Lobby.
*****************************************************************
最关键是就是那2个参数了
下面分析参数*******************************
通过分析了很久......那个参数中第一个就是代表是那个位置,比如第一张桌子的第一个就是一个参数,第二个又是另外一个参数*********************反正进过分析想找到那个数据不是那么简单的.......
上面都是很久以前分析过了的,最近再次拿到分析突然想到一个办法也许能够让参数的获取变得简单.....
cmp dword ptr ds:[edx+0x98],0x0 判断这个位置是否有人
里面的edx就是那个座位的参数......每次点击一下那个位置无论有没有人代码都会执行一遍.......
那么我想到如果我就在这里hook住,当你想抢哪个位置,你点击一下那个位置,我的软件通过hook 那里参数不就自动把参数取出来了吗?那么在软件也不用输入第几桌,上桌还是下桌(因为按照常理的话你必须输入你要抢的是那一桌,上面那个位置还是下面的).........每次用户想抢哪个位置叫他点击一下那个位置,就表明了他要抢的位置...那么我 的软件就可以开始抢位置了....
下面我就具体写出来我的部分代码(delphi)
var
st:integer;///定义一个全局变量来保存位置参数
c_ecx:integer;
st_1:integer;
function hook():bool;stdcall
var
jm:integer;
begin
jm:=xxxxxxxxx;//跳回去
asm
mov i,ebx
mov c_ecx,ecx
jmp jm
end;
上面就是我的hook 由于是今天想到的思路,我还没开始写代码。。。
你把找到的call 那里找个合适的地方hook 了就行了、,。。。。
最后只需要用户点击一下他想坐的位置,那么我就能获取到他的参数。。于是只用发送相应的call 了
(有什么问题欢迎指教,企鹅:2172243813 更多资讯尽在www.ttkmwl.com)
阅读全文
0 0
- 简单分析某个棋牌游戏的抢位置功能
- 简单分析某个棋牌游戏的抢位置功能
- 棋牌游戏运营分析
- 棋牌游戏发展前景分析
- 2014新增更多功能的棋牌游戏开发商
- 棋牌游戏携带的远控木马分析
- 手机棋牌游戏—棋牌游戏发展的必然趋势
- 我做的棋牌游戏
- 家乡的一种棋牌游戏
- 最受欢迎的棋牌游戏
- 棋牌游戏的真谛是什么
- 棋牌类游戏客户端结构分析
- 网上桌面棋牌游戏分析与设计
- 棋牌类游戏客户端结构分析
- 手机棋牌的盈利分析
- 分析关于棋牌类游戏开发运营成功需要注意的几点
- 棋牌游戏网站分析——远航游戏中心
- 网狐棋牌游戏的搭建
- fabirc1.0商业正式版本源码解析9——文档翻译之MSP
- WHUST 2017 Div.2 Day 15 [2017-08-06](图论八题)
- java中如何设置HTTP协议的头信息(header)
- 学习笔记之浅谈面向对象编程4(继承中的构造方法)
- 两点画线比较简单的方法
- 简单分析某个棋牌游戏的抢位置功能
- UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
- HDU1829 A Bug's Life dfs黑白染色二分图
- QML组件之Component
- Tomcat服务器顶层结构和启动过程
- Java内部类的使用小结
- LeetCode 216. Combination Sum III
- Mybatis中SQL性能优化注意事项
- fabirc1.0商业正式版本源码解析10——文档翻译之Architecture