本文最后更新于 932 天前,其中的信息可能已经有所发展或是发生改变。
处理
根据上一节总结的内容,在有 sim 卡的手机上会出现闪退,报错 log 是native 层的。
代码跳转到 ida 的逻辑,查看 对应的 native 代码
看到在进入游戏之后调用了 talingdata 的 登录逻辑,这里的登录逻辑会根据手机信息 生成 deviceid ,因为我们手机有手机卡,而且我们替换了签名,所以这里面的逻辑会导致崩溃。
那我现在的方案就是把这一行逻辑给 NOP 掉
老样子 ctrl+alt+k ,进入patch 界面
很明显看到 修改之后的 size 变化了,那么我们为了保证不出问题,就要把size 补齐
所以在 010editor 中修改的时候 要这样
后面补了 2 组 00
这样就实现了 nop 逻辑的效果。
意外
这样处理完成之后,报错又变成了 java 层的报错,很头疼呀。
看这个报错事 java 层的,看来 除了初始化的地方,其他地方也调用了 getDeviceId ,那我们只能在 java 层对这个 getDeviceId 函数做处理了。
进入 smali 逻辑 ,简单分析 可以得出,核心逻辑在 :
Lcom/tendcloud/tenddata/game/b;->j(Landroid/content/Context;)Ljava/lang/String;
这个函数
把函数内的逻辑删除掉,直接返回固定的字符串
到这里整个签名校验就完成了