求助关于车机桌面的逆向

查看 103|回复 6
作者:scy444888   
前言:我的小奇瑞搞到车机的工程密码后,可以用adb安装软件了,但是安装的软件的在桌面上不能显示,只能通过其他方式打开,很不方便
尝试过别的桌面app,使用起来效果一般还让本来就不富裕的内存雪上加霜,于是想着把桌面app逆向一下看能不能解决这个问题
pass: 自己对安卓app是一窍不通,只懂点js,只能找资料现学现试,而且不知道这个app做了什么限制在模拟器上和手机均无法运行,每次都只能到车上去试,很麻烦
先说一下目前的进度,apk反编译之后通过观察,发现桌面的图标在res/layout目录下都有对应的xml文件
[XML] 纯文本查看 复制代码
    [I]
   
通过搜索id找到了下面这个
[Java] 纯文本查看 复制代码package com.chery.launcher;
/* loaded from: C:\Users\Chuny\AppData\Local\Temp\jadx-5344058567848042476.dex */
public final class R$id {
    public static final int DraggableViewPager = 2131099648;
    public static final int ViewPagerIndicator = 2131099649;
    public static final int btn_app = 2131099650;
    public static final int btn_cancel = 2131099651;
    public static final int btn_close = 2131099652;
    public static final int btn_confirm = 2131099653;
    public static final int btn_media = 2131099654;
    public static final int btn_navi = 2131099655;
    public static final int btn_ok = 2131099656;
    public static final int btn_phone = 2131099657;
    public static final int btn_yuansheng = 2131099658;
    public static final int cb_interconnect = 2131099659;
    public static final int il_aimp = 2131099728;
    public static final int il_assistance = 2131099660;
    public static final int il_auto = 2131099661;
    public static final int il_car_manual = 2131099662;
    public static final int il_carlife = 2131099663;
    public static final int il_carplay = 2131099664;
    public static final int il_carset = 2131099665;
    public static final int il_contact = 2131099666;
    public static final int il_diagnose = 2131099667;
    public static final int il_dvr = 2131099668;
    public static final int il_esfile = 2131099729;
    public static final int il_icm = 2131099669;
    public static final int il_kaola = 2131099670;
    public static final int il_maintain = 2131099671;
    public static final int il_manage = 2131099672;
    public static final int il_manual = 2131099673;
    public static final int il_map = 2131099674;
    public static final int il_message = 2131099675;
    public static final int il_music = 2131099676;
    public static final int il_personal = 2131099677;
    public static final int il_qdlink = 2131099678;
    public static final int il_setup = 2131099679;
    public static final int il_system_update = 2131099680;
    public static final int il_ting = 2131099681;
    public static final int il_update = 2131099682;
    public static final int il_violation = 2131099683;
    public static final int il_weather = 2131099684;
    public static final int iv_hour_g = 2131099685;
    public static final int iv_hour_s = 2131099686;
    public static final int iv_maohao = 2131099687;
    public static final int iv_min_g = 2131099688;
    public static final int iv_min_s = 2131099689;
    public static final int iv_tips = 2131099690;
    public static final int iv_unread_dot = 2131099691;
    public static final int iv_update_dot = 2131099692;
    public static final int iv_weather = 2131099693;
    public static final int ll_left = 2131099694;
    public static final int rl_time = 2131099695;
    public static final int rl_weather = 2131099696;
    public static final int tag_layout_id = 2131099697;
    public static final int tag_order = 2131099698;
    public static final int tv_air_quality = 2131099699;
    public static final int tv_miss_call = 2131099700;
    public static final int tv_month_day = 2131099701;
    public static final int tv_msg = 2131099702;
    public static final int tv_temp = 2131099703;
    public static final int tv_tips = 2131099704;
    public static final int tv_week = 2131099705;
    public static final int txt_air_quality = 2131099706;
}
不是很懂这些id是怎么定义的,在经过一段时间的摸索找到了这个方法,猜测应该就是在这里实现的点击打开图标的操作
[Java] 纯文本查看 复制代码    public void onItemClick(AdapterView adapterView, View view, int i, long j) {
        if (view == null) {
            return;
        }
        switch (view.getId()) {
            case 2131099660:
                startBCall();
                return;
            case 2131099661:
                startAndroidAuto();
                return;
            case 2131099662:
                startCarManual();
                return;
            case 2131099663:
                startCarLife();
                return;
            case 2131099664:
                startCarPlay();
                return;
            case 2131099665:
                startCarSet();
                return;
            case 2131099666:
                startEmegrency();
                return;
            case 2131099667:
                startDiagnose();
                return;
            case 2131099668:
                startDvr();
                return;
            case 2131099669:
            case 2131099672:
            case 2131099676:
            case 2131099682:
            default:
                return;
            case 2131099670:
                startKaoLa();
                return;
            case 2131099671:
                startMaintain();
                return;
            case 2131099673:
                startManual();
                return;
            case 2131099674:
                startMap();
                return;
            case 2131099675:
                startMessage();
                return;
            case 2131099677:
                startPersonal();
                return;
            case 2131099678:
                ActivityUtils.startActivity(this.ctx, "com.neusoft.ssp.ces.c4.car.assistant", "com.neusoft.ssp.ces.c4.car.assistant.SplashActivity");
                return;
            case 2131099679:
                startSetting();
                return;
            case 2131099680:
                startUpdate();
                return;
            case 2131099681:
                startTing();
                return;
            case 2131099683:
                startViolation();
                return;
            case 2131099684:
                startWeather();
                return;
            case 2131099728:
                TspUploadUtils tspUploadUtils = this.uploadUtils;
                tspUploadUtils.sendBroadcast(1, "Common.SK.Aimp");
                ActivityUtils.startActivity(tspUploadUtils.ctx, "com.aimp.player", "com.aimp.player.ui.activities.main.MainActivity");
                return;
            case 2131099729:
                TspUploadUtils tspUploadUtils2 = this.uploadUtils;
                tspUploadUtils2.sendBroadcast(1, "Common.SK.EsFile");
                ActivityUtils.startActivity(tspUploadUtils2.ctx, "com.estrongs.android.pop", "com.estrongs.android.pop.view.FileExplorerActivity");
                return;
        }
    }
试着加了两个图标之后重新编译打包安装到车机上无法打开,选择桌面的地方识别不到车机桌面了,再不知道该怎么查了,大佬们给帮忙看看
加个未修改apk的链接:https://www.lanzv.com/iYD7b1mvkyrg

桌面, 图标

freelive   

建议替换第三方车机桌面,可以实现正常使用。
系统自带的车机桌面,应该是有些限制的版本。
他说我说   

希望你早点解决,俺是21款7p,也是ADB安装
scy444888
OP
  


他说我说 发表于 2024-2-1 17:21
希望你早点解决,俺是21款7p,也是ADB安装

太惨了,把车机搞坏了
baikunlun   

我说一个思路,我在电视盒子上用过的。
先看一下原桌面上有什么用不到的APP,把它弄下来看下包名,就是 com.xxx.xxxx 这样子的。
然后自己编一个APP使用这个包名,并安装到车机上去。
这样在桌面上就可以直接启动这个APP,在自己的APP中实现其它APP的跳转。
这个方法不用动原桌面,风险较低。
晓风残雪月   

21虎8,车机系统安卓4.43         嘟嘟桌面悬浮高德需要会员   崩溃!~!~!氢桌面悬浮地图不收费,本地音乐DC Player  悬浮不了,布丁UI安卓4.0用着不适应
smartfrog   


baikunlun 发表于 2024-2-3 22:06
我说一个思路,我在电视盒子上用过的。
先看一下原桌面上有什么用不到的APP,把它弄下来看下包名,就是  ...

好主意,原来的APP是手动替换掉还是直接adb安装替换掉?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部