[原创]简单分析某个棋牌游戏的抢位置功能
发表于:
2011-8-25 23:22
9432
最近忙着都没逛论坛了,今天有点时间跑来看看.......顺便发个帖....没有什么好于不好,如果对你有用就行
最近研究了一款棋牌游戏的抢位置功能,通过分析找到了抢位置的关键位置,有了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 了 一个思路而已 如果对你有用就收下 end;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!