安卓逆向初体验

admin 2024年2月23日20:55:10评论17 views字数 1128阅读3分45秒阅读模式

背景

最近在捣鼓安卓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. publicvoid 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已经更新,也许更新一下最新的映射或许还能用?这部分就等后面有空了再研究吧。

原文始发于微信公众号(网络安全回收站):安卓逆向初体验

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月23日20:55:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向初体验https://cn-sec.com/archives/2114416.html

发表评论

匿名网友 填写信息