emoestudio / eEEExplore-2023

电子工程相关技术交流讨论repo-2023年限定
GNU General Public License v3.0
20 stars 2 forks source link

[仪器仪表][Android]RIGOL_DHO800&900系统软件重安装和xx #22

Open alwaysmy opened 1 year ago

alwaysmy commented 1 year ago

大致说说情况

DHO800中官方软件有三个,分别为Launcher、WebControl、Sparrow.apk, 分别作用是:

1、Launcher:启动部分驱动,例如前面板按键,设置一些初始信息,似乎还有系统升级检测,守护示波器App进程,很大一堆,看MainActivity可以看到(函数名没有混淆)

可以看到"su -c \"/rigol/shell/do_update.sh " 的字样。

2、WebControl 这个是最简单的,除了打开websocket的前后端,还有截屏录屏的功能,以及回传屏幕操作,这几个需要系统权限,因此还是绕不开。

3、Sparrow.apk,示波器应用,不用说了。

我是啥也不懂,抛砖引玉了,希望大佬来攻击。

重签名后安装方法

操作流程

1、卸载原应用

由于是系统应用,所以需要提升权限。

    adb root
    adb remount
    adb install -r  webcontrol.apk
    adb install -r  Launcher.apk
    adb install -r  Sparrow.apk

如果不成功尝试先删除原来应用,删掉/system/app下对应的应用(上面这样应该是可以直接OK的)

    adb shell rm -rf system/app/webcontrol # 我不记得是大写还是小写了,进去看看吧
    adb uninstall com.rigol.webcontrol
    adb reboot #由于rigol的迷惑操作,它的adb reboot似乎没下电,所以如果无效就手动重启

但是此时如果用自己签名的应用由于有系统签名会提示安装失败,因此首先需要按照下面这样。 2、解决重新签名后安装问题

如果是一般的APP,即使签名不一样,先卸载原来的应用然后安装新的应用就完事了,

由于这些应用全部用到了系统权限,在AndroidManifest.xml中有android:sharedUserId="android.uid.system",因此需要系统签名,这里又没有源码,拿头签名,所以可以用核心破解去掉签名验证

安装幸运破解器:

Lucky Patcher All Versions Free Download - Lucky Patcher (luckypatchers.com)

点击工具箱:

往下翻找到Android 核心破解:

幸运破解器

勾选前两个后应用,提示重启的时候点否,还是因为日狗迷惑操作软重启不会下电,然后手动重启。

如果不行就勾选第三个。然后重启。

然后这时候就可以安装没有正确签名的应用了。(附件中有一个WebControl.apk)

逆向

你可以使用apktool来解包打包,signjar来签名,也可以用别的工具。

说一些问题:

wencontrol最容易改

前端代码都是现成的不需要逆向,改完前端后打包就好了。不过我感觉直接找rigol提要求似乎更直接。

不过你依然可以拿这个练练手提高一下修改DHO的满足感,因为这个改了不会有啥不利影响。

说一点问题:日狗这个app屏幕传输会被放大到1280x800,所以传输可能存在影响,而且非整数缩放糊了,这个大概是祖传代码,大概是后端忘了改。如果群友有明白的可以改一下,或者直接找日狗。设置播放帧率是35,不知道有没有和后端配合,如果有需要修改。

Launcher也比较简单

(但是我至今没找全他怎么守护示波器app的)

这个应用调用了so文件,也许是因为要加前面板按键驱动,所以解包打包之后会无法安装, 可以修改AndroidManifest.xml中的android:extractNativeLibs="false"为true后编译打包可以安装。

但是不知道是不是这个影响,重新安装Launcher后前面板按键无效(包括电源按键),Launcher会卡住。无语了。。真变成平板示波器了。 按照上面的步骤提升权限安装为系统app即可解决问题。

对了,这个应用手动启动后还会更换壁纸,我他妈真的无语,一张纯黑壁纸,还是1080p的。

你可以通过替换res\drawable下的wallpaper.png来让他变成一个自己想要的壁纸,或者直接修改mainactivity中的setWallpaper()来去掉这个功能(详细见下面)

我想这个app能去掉这个守护示波器进程的功能比较好,还有去掉这个替换壁纸。。。

Sparrow.apk

这个之前很多群友看过了,参考Launcher经验,首先解包之后需要修改AndroidManifest.xml中的android:extractNativeLibs="false"为true后编译打包

然后群友比较关注的改启动画面,除了群友说的启动阶段的两个启动画面,另外除了Launcher.apk包含一个启动画面,scope(sparrow)里面也有一个启动画面。这两个应用都是用的安卓的bg_splash来实现的,非常好改,不过launcher本来就没啥操作界面所以可以隐藏启动。

如何恢复

首先你应该做好备份。

然后,对于webcontrol,如果想恢复原来的apk,直接从官方升级包里面提取一个即可。

修改DHO800_DHO900_Update.GEL后缀为zip,解压后找到DHO800_DHO900_Update\app中的app即可。

需要依然移动app到system下,然后安装app 直接和前面的安装修改应用步骤一样安装官方app即可。 然后手动重启(如果问题没有解决,这时候前面板是无效的,在示波器app里面重启即可)

附件: Webcontrol_hacked_2.zip

alwaysmy commented 1 year ago

Good news!~

现在大家可以定制自己的app启动画面了 对于Launcher.apk,我建议直接隐藏启动画面,只需要在AndroidManifest.xml中的activity之间添加 android:theme="@android:style/Theme.NoDisplay"。 不过隐藏的话示波器开机中间有一段时间会有更长时间显示桌面,看自己喜好了。如果要修改启动画面则和下面一样 顺便推荐注释掉MainActivity.smali中的

    .line 95
    # invoke-direct {p0}, Lcom/rigol/launcher/MainActivity;->setWallpaper()

防止手动按上去之后替换壁纸。 然后按照上面的方法安装即可。 对于Sparrow.apk,启动画面就是Splash画面,只需要简单地修改res/drawable/bg_splash.xml中的图像信息,然后替换图像即可,例如修改为:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black" />
    <item android:gravity="center" android:height="600.0px" android:width="1024.0px">
        <bitmap android:src="@drawable/SplashImg" />
    </item>
</layer-list>

然后把一张命名为SplashImg.png的图存入res/drawable下即可(原来logo.bmp所在目录) 还有其他元素也可以自己修改,替换图片保持同名即可。 例如那个丑哭的开始按钮 image