有谁还不会找技能Call跟我来(以打坐为例子)

时间紧,我不想说太多了,看文章前先确保你有过研究天龙的经验
(注意抠紧我的每一个字,不然你的头会变大)
OD附加 bp send 打坐,断下
02D74C48 0B 00 1A 00 00 91 00 00 80 BF 23 00 FF FF FF FF
02D74C58 DA 74 00 00 FF FF FF FF 00 00 80 BF 00 00 80 BF
23是打坐的技能号,以前我也说过

在23那里下内存写入断点,回游戏里打坐,OD断在005545A9处,原来是串传送指令,看了一下中间的窗格,发现23是从[esi]=[0012FC20]传过来的,接下来我们把目标放到0012FC20上。





再重来一次,继续在23那里下断,断下后按N次ctrl+f9




直到停在Call 004247B0 的返回处,我们不知道004247B0这个函数是干什么的,但有一点时肯定的,
函数004247B0()
{
Mov [0012FC20],[xxx]
}


我们来看一下004247B0内部世界




在函数004247B0的第一句那里下断,回到游戏里打坐,游戏如我们所愿断了下来,注意了,一边步过每一句,一边观察[0012FC20] (别问我在那里看0012FC20),




直到步过0042490C Call 004243B0时,[0012FC20]变成了23,呵呵,是不是思路有点乱了?没关系,我们来整理一下,


函数004247B0()
{
Call 004243B0
Mov esi, 0012FC20
rep movs byte ptr es:[edi],byte ptr[esi] //串传送23至发包缓冲区
send(...)
}


函数004243B0()
{
Mov [0012FC20],[xxx]
}


明白不?我们接下来要揭开xxx的神秘面纱。
要跟进004242B0吗?你可以跟进去,但我在这里要偷懒一下
在0042490C Call 004243B0上面看到一句movsx edx,word ptr[esi+84]
我们来断这句看看(你会问为什么要断这一句?答:没什么,累了娱乐一下)




回到游戏里打坐,断下了,我们看看中间的窗格,[053FE09C]=0023,恩有搞头。思路又乱了?我们再整理


函数004247B0()
{
Call 004243B0
Mov esi, 0012FC20
rep movs byte ptr es:[edi],byte ptr[esi] //串传送23至发包缓冲区
send(...)
}


函数004243B0(传地址053FE09C)
{
Mov [0012FC20],[053FE09C] //[053FE09C]=0023
}


猜一下,xxx就是053FE09C,不信的话跟进函数004243B0里看看


我们看看是什么东西改变了[053FE09C],在053FE09C处下内存写入断点




回到游戏里打坐(又打坐啊,烦不烦,快成佛了~~)




断在00423A27 mov word ptr [esi+84],ax 看看中间窗格,你的明白?
ctrl+f9一次执行到返回




OK,看到了打坐的原貌了


函数004247B0()
{
Call 004243B0
Mov esi, 0012FC20
rep movs byte ptr es:[edi],byte ptr[esi] //串传送23至发包缓冲区
send(...)
}


函数004243B0(传地址053FE09C)
{
Mov [0012FC20],[053FE09C] //[053FE09C]=0023
}


打坐(...,23,...)
{
mov [053FE09C], 23
ret
}


完结。

转载于:https://www.cnblogs.com/rogee/archive/2010/10/11/1847948.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值