找CALL入门写给对找call一片茫然的兄弟

找CALL入门写给对找call一片茫然的兄弟
我本人是一个菜鸟,学外挂不久,在做出了简单的显红蓝人物信息,通过前台按键模拟挂机的外挂后小满足了一段时间(汗,大概2小时左右的样子)我性质勃勃的开始进入了菜鸟学call的队伍中。
中间遇到很多问题。也去不少地方发帖求助,但……没有人愿意或者说没有高手有时间来指点下
坚持,放弃,不死心,郁闷,终于在今天摸到一点头绪,这里发出来希望对广大的菜鸟兄弟们有一点帮助。
我不想直接帖出如何找call,而是一步步的进行,总结我在call的道路上遇到的问题,于大家共同学习,不对的地方肯定有,希望大家多指正,少口水,谢谢。
好了,废话不多说了,开始吧。
1:首先讲为什么要学call
我这里是因为开始时候做出的简单挂只能前台模拟按键,游戏窗口最小化或者切换当前窗口就会……呵呵,大家都知道,我见了很多和我一样的菜鸟卡在这里满世界发帖求助。
所以开始找可以后台按键的方法,到处找资料逛论坛之后发现2个可能实现方法。
(1)用call(2)winio,这个还正在学习中,具体情况还不清楚
我选择了call,因为高手们手里的这个武器对我来说很神秘的说哦
2: 既然要学call,总要搞明白什么是call吧,这里我摘抄以前一些老大的帖子内容,希望大家看后能对call有一个大概的理解
(1)call就是程序调用。熟悉VB的朋友,应该熟悉调用函数call add(a, b)的方法。
在任何程序的编写中都有很多call。如何找到正确的call是比较难的事情。
上面这句话讲的其实蛮简单的,但对我很有帮助。
这里我说下自己的理解。
为什么要call?游戏程序中有很多函数,游戏内部的程序会调来调去的说,当然函数有自己的函数名称。比如说游戏中打坐的函数,我们可以想象下有一个函数。名字叫“打坐”,只要一调用这个函数,人物就会执行这个动作。这个是简单的无参数的函数,所以我拿它来举例子。
现在我们需要做的就是用自己的小挂去调用这个名字叫“打坐”的函数,让人物执行动作。当然不会有人直接告诉你这个函数名字叫什么,等等这些具体的信息(突然想想MS有人告诉我好象我也不知道怎么用,呵呵。菜鸟一只)。所以我们需要在游戏运行时找到这个函数的内存地址,好象也叫入口(我们是菜鸟,不管它那么多),找这个函数的内存地址就叫做找call。而call或者说call的地址其实也就是说这个函数的内存地址。
不知道我这样说大家明白没,个人理解,可能有蛮大问题,希望高手指正。
明白了我们就继续,既然知道call能干什么,我们就开始找call吧。
3:如何找call
很多高手碰到这样的问题都很郁闷,因为这个问题范围太大了,确实也不知道该怎么讲。涉及问题太多。
这大概就是我们求助时候没人理会的原因吧。汗一个,我也追着不少人问这个问题
找call其实最低要求能看懂汇编代码,但这个要求对我一个小菜鸟来说实在太高。以前学的汇编都离开学校后都还给老师了。当然我们这里不去看什么汇编,直接开始找。但也要提前了解些东西,比如什么是汇编,内存地址什么的。OD这个工具很好,也要基本掌握使用,这些对大家来说应该不难吧。
好了,我们开始找call。
这里我们用最新的诛仙95还是99来找。
首先用OD打开游戏,登陆。

然后bp send下断(这个我那时候还没搞清楚断点怎么设,要感谢恶魔天尊老大告诉我这个小白,呵呵)

其实就是在这里输入bp send然后回车,就设置了一个断点,大家最好还是看看OD的使用教程吧,不要象我一样。
查看断点在OD里的快捷键是ALT+B,因为我们后面要用到所以这里说一下。
稍微等一下游戏就会中断下来

看这里
我们先不管它,按F9继续一直到游戏运行。
这里说下为什么要这样做。
因为游戏和服务器一直会保持通信,所以这里的中断和我们没关系,放过它吧,阿门。
等游戏正常运行后我们切换到游戏里按7(打坐),然后OD马上又会断下来。这次我们就要开始工作了,找call,哈哈
先按CTRL+F9组合键3次,这个蛮多教程里都有写,我一直没搞明白为什么是3次而不是5次8次的。
这里我解释一下,刚才说过游戏和服务器是持续保持连接的,当然就会有信息来回的发送,这些不是我们关注的。
所以按CTRL+F9组合键跳过。至于为什么是3次,这里{词语被屏蔽}的教程很多都说是经验什么的,后来我搞了很久有点明白了,但不知道是不是正确。
大家看这里

上面有写模块-WS2_32什么的,系统消息。所以我们不去理它,继续再按一次CTRL+F9,直到变成了

看到不同了么?呵呵。不过直接按3次也不会错,毕竟前人的经验要比我们丰富很多。这里大家看下就好
3次执行后我们按第4次,然后按ALT+K,这里把第一行保存下来

继续按CTRL+F9,然后ALT+K,同样保存下来

一般搞3次就可以了(网上不少教程中都有说到一般正确的CALL在4-7层之间,算下我们的,前面3次直接跳过,然后这里取3个结果,恩。6层,也差不多拉),然后ALT+B把断点先禁止,按F9让游戏正常运行,如果你中间速度比较慢一点游戏会断开,没关系,再用OD打开来一次。我这里发2个图。
这里就是call的地址了,但我们保存了3个,不知道是哪个,没关系,我们大概分析下
前面说了打坐是无参数函数,看第一张图,有2个参数,arg1和arg2,这个大概不是
第二张,恩,没有参数,我们把它记录下来,005A8260,第三张同样对待,现在我们可能记录了2-3个call的地址,ok。
我们来测试一下看看。
下面是测试call的代码,易语言的哦

上面的数字就是005A8260转为10进制后的值。
登陆游戏,打开你的小挂,点打坐按纽,看看,是不是真的打坐了?哈哈。是不是有点成就感了
(如果call不正确游戏可能会异常退出,我们再登陆游戏换另一个试下就好)
恩,别急,我们趁热打铁再找一个,普通攻击的call
好了,OD附加游戏,断点,然后游戏被断下,执行到正常运行,然后按1(普通攻击,这里要注意把你游戏人物站到怪近一点的地方,选中怪物后再按,要不然你找的可能是走路的call或者选怪的哦)。断下来了,我们这次不再记录多个值了,直接按5次CTRL+F9(问我为什么?因为刚才打坐的CALL我们是在第5层找到的,这个当然也一样拉,就不花时间去每个记录了),然后ALT+K,看图

直接拿去试试吧,5A7C20,哈哈。记得要选中一个怪再点攻击哦。
到这里我们不去关注汇编代码不去看{词语被屏蔽}资料成功的找到了打坐和攻击的call,呵呵。去完善你的小挂吧,HOHO,做出来别忘记发给我用用哦
另外强调,这里我们是找到了CALL,但如果你想继续深入的学习,相关的内容还是要学习的,投机不是长久之计哦
最后说一句,我写这些东西很累,但为了很多和我一样的菜鸟能够有点收获还是写出来了,请大家看完记得顶我一下,也算对我的支持。我的QQ30562834,可以加我大家一起学习,呵呵

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在Node.js中最大值可能会导致"maximum call stack size exceeded"错误的常见原因是递归函数的不正确实现。当使用递归来到最大值时,可能会发生无限递归调用,导致调用栈超过最大限制。 一个经典的例子是在遍历数组时使用递归函数来到最大值。例如,考虑以下代码: ``` function findMax(arr, index, max) { if (index >= arr.length) { return max; } if (arr[index] > max) { max = arr[index]; } return findMax(arr, index + 1, max); } let arr = [1, 5, 2, 9, 3]; console.log(findMax(arr, 0, arr[0])); ``` 在这个例子中,递归函数"findMax"会使用每个元素与最大值进行比较,并更新最大值。然后,它会递归调用自己来处理下一个元素。但是,如果没有正确的退出条件,该函数可能会无限递归下去,直到达到调用栈的最大限制。 为了修复这个问题,我们可以在递归函数中添加一个退出条件。在这种情况下,当遍历到数组的末尾时,我们应该返回当前的最大值,而不是继续递归。修复后的代码如下: ``` function findMax(arr, index, max) { if (index >= arr.length) { return max; } if (arr[index] > max) { max = arr[index]; } return findMax(arr, index + 1, max); } let arr = [1, 5, 2, 9, 3]; console.log(findMax(arr, 0, arr[0])); ``` 通过添加递归退出条件,我们可以确保递归函数在遍历完整个数组后正确地停止递归,从而避免了"maximum call stack size exceeded"错误的发生。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值