ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 170052|回复: 25
上一主题 下一主题
[软件教程分享]

广东广电u点盒免拆机装第三方软件破签名冲突安卓逆向教程

  [复制链接]
跳转到指定楼层
楼主
发表于 2022-2-2 19:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xigxmmbc 于 2022-2-3 10:47 编辑

    修改有危险,事先备份!事先备份!事先备份!备份教程论坛里找。可以用dd命令备份,好像也可以用hitool的上载备份。用hitool的烧写还原,用hitool要拆机。
    只在e900-s Hi3796MV310上实践过,可能所有U点盒通用。解决签名冲突错误,或者adb安装中出现的INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误。这可能是因为安卓相关源码被修改为只有指定签名的安装包才能安装。教程涉及到修改安卓系统源码编译后的jar文件,需要有一定编程语言基础。

1.打开adb调试
    遥控器语音说“应用设置”打开原生设置,再打开usb调试。遥控器语音“设置”打开非原生设置,输入96956,打开adb调试,此时不会有反馈。

2.提取services.jar文件
    论坛里下载开心电视助手,连接电视。点击解锁 System,再点击文件管理器,先返回上一级目录,再打开/system/framework,提取services.jar。我的盒子是自带root权限的,没有root这一步可能无法完成。有些机子有root,但adb调试没有获取root,但我的不是这种情况,获取方法自行研究。

3.提取PackageManagerService.smali
    吾爱破解论坛里下载BatchApkTool,services.jar放到工具目录下的_INPUT_JAR文件夹里,反编译services.jar,得到一个文件夹,装着很多.smail文件。检索PackageManagerService.smali,找到它。参考https://www.52pojie.cn/thread-1136160-1-1.html

4.获取java文件
    百度并下载jadx-gui或者其他能smali转java的软件,用jadx-gui打开PackageManagerService.smali,它会自动转换,之后点左上角保存为一个嵌套文件夹,里面有PackageManagerService.java文件。

评分

参与人数 1金币 +1 收起 理由
TXK-1 + 1 感谢分享^_^

查看全部评分


上一篇:一包烟求教刷机康佳LED42R6680AU,我进不去刷机哪里
下一篇:安卓9固件解包修改封包签名个人独创教程
推荐
发表于 2023-3-8 16:25 | 只看该作者
链接失效了,大佬是否可以再分享一下呢?感激不尽!
回复 支持 1 反对 0

使用道具 举报

推荐
 楼主| 发表于 2023-2-6 14:31 | 只看该作者
1OmMM_nX2n2x4tsMAbB8oog
amcp
回复 支持 1 反对 0

使用道具 举报

推荐
 楼主| 发表于 2022-11-4 10:03 | 只看该作者
本帖最后由 xigxmmbc 于 2022-11-4 10:12 编辑

/s/16WaSDBqdI0OcnxiojcIkmA
mkew
带图版的和services.jar在这里了, 之前图发不出来. services.jar能用的话回来说一声.
回复 支持 1 反对 0

使用道具 举报

沙发
发表于 2022-2-2 20:07 | 只看该作者
感谢楼主分享
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2022-2-2 23:25 | 只看该作者
5.修改smali文件
    打开java文件,这里用vscode打开,检索-104,可以找到大约10处。-104就是签名冲突错误或者INCONSISTENT_CERTIFICATES错误对应的代码,要找到并修改对应代码,跳过中断安装的代码块。我们分析java文件只是为了方便修改与之对应的smali文件,而不能直接修改java文件,因为smali文件夹和jar文件的转换是可逆的,而java文件夹与jar文件的转换使不可逆的,jar文件几乎就是安卓系统直接运行的文件,而我们的目标是使jar文件按照我们的想法改变。分析java文件的原因是smali文件杂乱且冗长,不好分析。看下面的分析。

    分析这个代码结构,是一个最外面的if括起来的结构,这个大if里又有很多个小if和else结构,而这些小结构里每一个都有return null,这会退出当前函数,中断安装过程,而这个大if结构里又没有必要的安装代码,所以这整个大if结构都可以跳过。有很多方法可以跳过,但我们要使smali代码的容易修改。这里我选择使if的条件永假。观察条件,只要使needVerify永远为0即可。翻译needVerify,它的意思是需要验证,容易知道needVerify为1时需要验证,为0不需要。观察代码我们知道needVerify是由函数checkIsNeedVerify赋予的,改checkIsNeedVerify的输出可以同时改变所有needVerify的值,并且checkIsNeedVerify函数名在smali文件和java文件中是同名的,找查易于修改。观察代码,由boolean知这个函数输出值不是0就是1,这就更好改了。
    用vscode打开smali文件(弹出提示安装一个插件),检索checkIsNeedVerify,把它修改成如下的样子,只会输出0。

    再看下一个地方,同样的结构,同样的思路,使verifySignaturesLP永远输出1。

    改后如下。

    下一处,这里没有那种大if嵌套结构,又好像有很多代码和安装相关,所以找到包含-104的小if结构,跳过它。

    观察java代码,在smali文件中检索字符串New package has a different signature:,向上几行可以看到条件跳转语句,对应java中的if,改为无条件跳转语句goto,改完如下。

    下一处,观察发现,图中String oldCodePath = null;之前的代码都是对错误情况的处理,String oldCodePath = null;之后的代码才似乎是安装相关的代码。所以最好能直接跳到String oldCodePath = null;的相关位置。

    由相关字符串检索定位到String oldCodePath = null;前面的if语句对应的smali代码,修改条件跳转为无条件跳转到:cond_19b(标签不一定相同,这个前面带冒号的东西叫标签,可以标定要跳转到哪里),改后如下。上图剩下的两个-104相关代码只改第一个跳转到:cond_19b即可,程序顺序执行,第二个被跳过了。

6.收尾
    jar文件和改后的文件夹放在_INPUT_JAR中,重新编译,编译后的jar文件在_OUT_JAR中。用开心电视助手删除盒子中原有services.jar文件,再把改后的发送进去。开心电视助手中点击工具箱,再双击重启。重启后成功则会进入电视桌面,失败则会卡在开机画面。若失败则用hitool烧写还原,因为只改动了system区,只烧写system区即可。

一些说明和疑问
1.为什么要修改services.jar文件
    参考https://blog.csdn.net/RussellTheRush/article/details/43705951,安卓源码中的java文件和反编译出来的smali文件的文件名是对应相同的。百度文件名或许可以找到java文件被编译到了那个jar文件中,可能有其他方法我不知道,请教各位如何知道java文件被编译到哪里。

2.为什么只改PackageManagerService
    一开始并不知道改哪个,把网上出现最多的几个文件都找出来改改,发现PackageManagerService最可疑,有guangdong这个字符串,可能是调用广电的签名和app的签名比较,相同的才安装,所以问题出在它。

3.-104是怎么知道的
    可以把盒子里的安装包拉出来,用AndroidKiller分析,找到签名冲突字符串对应的资源id,再检索即可知道-104。还可以在安卓源码搜索网站上搜索INCONSISTENT_CERTIFICATES,溯源得到-104。或许可以在进一步溯源直接知道要修改PackageManagerService文件,而不必百度。但是我卡住了,有一个参数不知道是从哪传进来的。在此请教各位如何锁定PackageManagerService文件。

非计算机专业,都是这几天在网上东拼西凑弄的,若有更好的方法,请各位指出。备份出img文件后用相关ROM工具安装应用再刷回不知是否可行,可以试试。

回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2022-2-3 10:25 来自ZNDS手机版 | 只看该作者
本帖最后由 xigxmmbc 于 2022-2-3 10:42 编辑

若没有root,则可以先备份img文件,再修改img文件再刷回,要拆机。可以用rom相关工具修改,原理同上。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2022-2-3 10:26 来自ZNDS手机版 | 只看该作者
本帖最后由 xigxmmbc 于 2022-2-3 10:39 编辑

备份可以用dd命令,adb调试即可,不用拆机。刷回好像不能用,因为adb输入命令依赖于system分区的文件,刷回不就改变了system分区了吗,不太清楚,但我试过失败了。只能拆机刷回。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2022-2-4 10:55 | 只看该作者
本帖最后由 xigxmmbc 于 2022-2-4 20:32 编辑

回复 支持 反对

使用道具 举报

7#
发表于 2022-3-25 18:01 来自ZNDS手机版 | 只看该作者
太复杂,不适合小白初学者
回复 支持 反对

使用道具 举报

8#
发表于 2022-3-26 17:55 来自ZNDS手机版 | 只看该作者
luo396825486 发表于 2022-3-25 18:01
太复杂,不适合小白初学者

确实
回复 支持 反对

使用道具 举报

9#
发表于 2022-5-21 21:09 | 只看该作者
楼主修改代码图没了,不会smali代码
回复 支持 反对

使用道具 举报

10#
发表于 2022-5-31 09:54 来自ZNDS手机版 | 只看该作者
是否可以直接替换services.jar这个文件??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2024-4-27 12:03 , Processed in 0.073999 second(s), 16 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2024 ZNDS.Com

快速回复 返回顶部 返回列表