前几天又把Minecraft PE
下载下来了,更新的还真的很快,我最后一次玩好像是在0.10
版本左右,现在已经更新到了1.6
了。
成功的利用PocketMine
搭了个服务器,但是我发现不知道从什么时候开始MCPE
连服务器的时候竟然需要登录Xbox
账号!!!
这个可以算是非常烦人。虽然我的手机上有Google
全家桶,但是要和别人联机这就不好玩了。如果把Google Play Service
的依赖弄掉,那么Xbox
的验证就无法成功。如果要成功登录Xbox
,手机里就必须装有Google Play Service
。这个真的是非常烦人。
所以我决定把Xbox
验证的功能手动弄掉。(注:直接用幸运破解器弄掉Google Play Service
的验证)
首先把整个APK
解包出来,来到./com.mojang.minecraftpe/lib/armeabi-v7a
,底下有两文件。
其中那个50多MB的libminecraftpe.so
就是我们的目标文件。
用IDA6.8
打开它(IDA7.0
我只有x64
的)(IDA6.8
下载地址:Click Here)
然后就是长达3个多小时的分析过程。。。。。。。。。。。(强烈吐槽IDA
的单线程)
(PS:是真的三个多小时)
首先快速定位到字符串xbox.externalServer.title
详细的字符串信息可在./assets/resource_packs/vanilla/texts/zh_CN.lang
找到
然后一个F5下去,寻找一下代码,立马就发现一个登录验证函数
isSignedIn()
的返回值给v14
,然后在底下判断是否成功
来到汇编代码,BLX
就是ARM
中的执行函数指令,且返回值保存在R0
寄存器
(Intel
汇编call
为执行函数指令,返回值保存在eax
)
因为IDA
不支持ARM
的汇编直接修改,所以必须转换为Hex
才可以修改。
观察到相同的部位,所以直接修改。
4F F0 01 04 = MOV R0, #1
00 BF = NOP
修改过后就变成这样,这就很开心了
但是还不能开心的太早,这里还有一句验证登陆的语句。
跟刚才一样弄掉。
这样所有的验证就都弄掉了,应用这个Patch
,然后重新打包APK
,就可以得到一个很开心的最新版本的MCPE Stable 1.6.0.14
只要在设置里更改名字就好了,再也不需要Xbox
和GooglePlayService
的登录验证了。
.idb
下载:libminecraftpe.idb
Thanks to https://bbs.pediy.com/thread-230034.htm,帮我节省了很多寻找验证的时间。