长亭百川云 - 文章详情

安卓逆向初体验

网络安全回收站

44

2024-07-13

背景

最近在捣鼓安卓yuzu模拟器,发现一个问题:JoyCon通过蓝牙连接手机后,两个手柄无法识别为一个设备。电脑上可以用betterjoy解决,安卓上搜了一下据说Joy-Con Enabler这个app可以解决。下载下来发现需要付费才能开启,就研究了一下安卓逆向。

过程

打开app,提示需要升级到PRO版,搜一下关键字

dump出apk,拖到jadx里定位到关键点,还好apk没有加壳,其实也就是看Java代码。可以看到第一个点是会判断hVar.f1655b是否为joyconenablerpro这个字符串安卓逆向不能直接修改Java,需要修改smali字节码,随便搜一个语法教程:https://zhuanlan.zhihu.com/p/580962131,把if-eqz改成if-nez,反转一下逻辑即可绕过。修改smali有很多种办法,mt管理器比较方便,但是需要买会员,所以后来选了个破解的np管理器,修改后自动签名,安装。装上后发现不行,提示License校验失败,继续搜索关键字发现这里jadx报错了,有一个小坑,需要改一下jadx的配置:文件 - 首选项 - 反编译 里面的显示不一致代码 选中 保存退出然后就可以正常反编译了发现有一个这样的逻辑:



1.  `public void a(Context context) {`
    
2.      `try {`
    
3.          `if (!context.getPackageManager().getPackageInfo(context.getPackageName(), 64).signatures[0].toCharsString().contentEquals(getResources().getString(R.string.sin))) {`
    
4.              `this.f502f = false;`
    
5.          `}`
    
6.      `} catch (PackageManager.NameNotFoundException unused) {`
    
7.          `this.f502f = false;`
    
8.      `}`
    
9.      `R = true;`
    
10.  `}`
    


问问GPT,发现是检验包签名,如果发现被篡改就把this.f502f设置为false

搜一下this.f502f这个变量在哪儿被赋值过都给他强行赋值为true,这里有个坑:f502f是重命名后的结果,f502f的原名称是f,为了防止跟包名冲突了

最后

破解完终于可以正常启动了,可惜的是最后他这个软件还是无法使用。。。看了下评论都是在喷他不能用的,还好没有花钱买pro。。。

看了下代码,大概的原理是模拟了一个输入法,通过获取不同的蓝牙指令映射为不同的key。这个apk大概是5-6年前的,猜测可能是随着版本迭代key已经更新,也许更新一下最新的映射或许还能用?这部分就等后面有空了再研究吧。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2