想问下新手实战ios的游戏逆向时,应该从哪些方向锁定关键的位置

刚学习ios逆向没多久,然后想实战给自己做点东西,目标是自己平时玩的游戏,类型是回合制的。然后自己摸索捣腾,砸壳,然后分析下二进制,然后用monkeydev写了个插件,把log打开了,然后去战斗,没有看到日志和战斗有什么关联的,然后又找了一些player和logger相关的各种类hook了一遍,还是没什么收获,然后我又找了下json和gzip相关的类全部hook了一下,然后看到有些等级和账号身份的信息,手机的型号信息存储了一份缓存在本地库中,依然和战斗没有什么关联,接着我又想从界面的角度出发,然后上了cycript,进去看了下界面控制器,结果发现只有root这一个控制器,往下一层也没有。这是我自己想的各种尝试,但是全部都没有找到,想问一下,应该如何去寻找锁定战斗时的关键逻辑部分呢。

1 Like

先确定游戏引擎😅

哈哈。是我是我。游戏引擎之前确认过拉。cocosjs的。我还在摸索这个。充值还有进入游戏。保存数据库。一堆东西都找出来了。就是没找到战斗的逻辑部分

1 Like

问题是游戏逻辑都不是用objective c写的

在脚本里。。

啊。那脚本里面的内容咋改啊?脚本已经解密出来了的。但是可读性不怎么样,这是要修改脚本内容然后重新打包才行么?

+1.我也打算给实况写一个自动经理人的脚本,天天手动点太麻烦了。。。

我知道 cocos2dx+lua 开发的游戏,关键代码都在lua里,比如跳过战斗等,需要解密lua,修改然后再加密回去,在重新打包

看来关键就看cocosjs是怎么加密重新打包了。这个不能写hook插件处理的么?

你Hook加载脚本的函数,也得解密脚本,因为关键代码都在脚本的代码里,既然都能解密了,就直接解密脚本修改完成,在加密回去打包就OK了

:joy:好吧。我解密是通过一个php的工具直接解密的jsc。看来我应该先看下解密的原理。然后再看看怎么加密回去

解密全部脚本,将来更新怎么弄,再整一遍吗?还是注 hook 合适:wink:

还是hook处理object-c的部分么?有没有什么文章之类的分享看看啊?

js hook 分obj的hook和class的hook,你需要找到执行js的c函数,然后运行你的js,你需要自己研究了

XTool.hookWithObj = function(obj, target, replace) {
var ori = obj[target].bind(obj)
if (ori) {
obj[target] = function() {
var args = Array.prototype.slice.call(arguments)
args.unshift(ori)
replace.apply(obj, args)
}
return true
}
return false
}

XTool.hookWithThis = function(obj, target, replace) {
var ori = obj.prototype[target]
if (ori) {
obj.prototype[target] = function() {
var args = Array.prototype.slice.call(arguments)
ori = ori.bind(this)
args.unshift(ori)
replace.apply(this, args)
}
return true
}
return false
}

1 Like

好的。非常感谢大佬。有个入口可以研究够了。最怕没有方向去研究

能不能加一个QQ,请教一些关于cocos的问题