到这里感觉特别激动,通过信息发现正是好友列表信息,而且有一个关键字段canCollectEnergy表示这个用户是否有能量可以收取的,所以到这里我们发现仅仅通过日志信息就可以找到突破口了,还找到了关键信息。所以对于一个线上的应用每家公司应该在最后的发包阶段对应用中所有的日志代码全部删除,这里是全部删除而不是仅仅加上一些开关来控制。只有删除才是最安全的,现在有些安全公司就是这么做的,内部有一个发包审核和自动删除应用所有打印日志代码,从这里看如果没有日志我们还是需要去分析这个方法的:
这个方法最后是返回了一个H5Response类。那么到这里我们已经找到返回结果了,那么这个返回结果执行前是有什么信息呢?比如参数等,而且这里看到好友列表默认是分页,每页是20个用户信息,所以后面我们肯定得获取所有的好友信息,应该有个参数来进行操作,所以为了更加直观看数据,直接hook这个H5RpcUtil.rpcCall方法,这个方法有十几个参数,其中有一个坑就是JSONObject格式的,其实他是阿里的fastjson包的对象,导致操作过程中始终没hook成功:
所以这里如果有的同学在使用Xposed进行hook一个方法,但是没有hook成功,最快找到原因就是把这个hook的代码外面加一个try...catch,然后catch到异常信息打印出来即可。如果有错误直接就可以看到原因了,不然很费劲去找hook失败的原因。然后我们在运行看看结果:
我们进行下拉获取更多好友列表信息发现打印的参数信息,里面的第二个参数的确是携带了分页信息,每页是20条,又每页的起始点,而且第一个参数其实是命令类型,后面还会有获取用户所有可以收取的能量以及收取能量的命令。那么到这里我们已经成功的获取到所有好友信息,并且可以通过解析response的json数据获取哪些用户可以有能量收取,那么怎么获取到这个用户所有的可以收取的能量信息呢?因为有的同学可以有很多能量收取的,这个直接点击这个用户进入他的蚂蚁森林页面即可,这时候依然是通过观察日志信息,首先还是入口参数信息: