少女祈祷中...

逆向记录

软件说明

  • 软件名称与版本号:Aris终端桌面1.1.62
  • 想要修改的地方:通知显示只有开启点击之后才会显示title: context,不开启只能显示context,不太符合直觉。因而将其修改为一样的。

脱壳

  • 这个软件没有加固,也就没有脱壳这个步骤了。

反编译

  • 这一步完全可以用MT管理器来改,但我不太想在手机上弄。

安装apktool

1
sudo apt install apktool

进行反编译

1
apktool d 应用.apk

转Java

  • 很久没看smali了,还是java看着舒服,所以转换到java相对方便一点。

安装dex2jar

  • 下载源码到本地

    1
    git clone https://github.com/pxb1988/dex2jar.git
  • 编译。编译后会在dex-tools/build/distributions生成一个压缩文件,名字为dex-tools

    1
    ./gradlew distZip
  • 解压后进入目录后执行转换

    1
    2
    3
    4
    ./d2j-dex2jar.sh  应用.apk

    // 或者
    ./d2j-dex2jar.sh 应用的classes.dex

修改Smali并回编译

使用JD-GUI查看Java代码

  • JD-GUI_releases下载一个.jar的文件。

  • 打开文件

    1
    java -jar jd-gui-1.6.6.jar  生成的.jar 

修改相关Smali文件

  • 通过jd-gui查找关键词feed,发现在com/shinado/piping/home/ArisLauncher中。

  • 分析java代码,在未开启通知可点击功能前只显示context

  • 回到smali中,打开com/shinado/piping/home/ArisLauncher.smali,找到对应的smali代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const-string v1, ": "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0
  • 根据分析p1titlep2context,因而仿照加一段。

    1
    2
    3
    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0
  • 最后修改为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    const-string v1, ": "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    const-string v1, ": "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0
  • 回编译

    1
    apktool b 应用文件夹

签名安装

  • 这部分我比较倾向于用MT管理器来签名。

还存在的问题

  • 有些通知带有联系人姓名的话会重复显示。比如:
    1
    2
    测试:测试:内容
    测试::内容
    这部分可能得从源头的调用那地方改,当然在这处理一下字符串应该也行。不过又不是不能用。(手动滑稽)

后记

  • 起初我本来用的是1.0.98版本,这个版本可以说我从高中的时候就在使用。一个是因为没有新版那些花里胡哨的功能,二来是占用也比较低。这个桌面的迭代史可以说和QQ几乎一样,从一开始的简洁明了,到后面一大堆功能的加,甚至连最基本的稳定有时候都保障不了。

  • 选择1.1.62这个版本也属于无奈之举,但也是最合理的一个版本。

  • 网络上能找到的历史版本寥寥,上面的1.0.98用了不少时间才找到的。1.1.62属于是在酷友分享,网络上几乎没有,能找到的也是在一些小网站,不是很能保证下载安全。而且再新一到两个小版本号,很多东西都改了。想当初在Aris终端桌面的官网就能找到全部版本和全部更新日志。但好像从1.2之后就不行了,也许是为了保证用户的付费(没错,从1.2之后就开始需要付费才能使用一些之前版本就能用的功能),也许是为了避免用户流失。但终归是没有了。

  • 而且1.0.98在我这个机器似乎有些bug,具体是什么也说不上来,但可能是因为权限之类的问题,经常黑屏死机。(当然也可能是我手机的问题)

    • 2024.11.14确实是我手机问题,似乎是因为刷入新内核支持zstd的zram之后,就会这样,关闭就没事了。
    • 当然aris确实需要通讯录权限,不然可能会出问题,1.0.98还是1.1.62都是这样。
  • 为什么不用t-ui?因为t-ui在对中文搜索的时候需要切换中文输入法,而且其实我也不太需要对shell的支持,毕竟有termux,所谓术业有专攻。

  • 自己会用到的东西还是得好好保存才是,不然就消失在历史的长河中了。

参考文章以及相关资源链接