阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 2243|回复: 0

关于MIUI6、MIUI7的反编译那些事儿

[复制链接]

4212

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
126801
QQ
发表于 2017-2-17 10:01:52 | 显示全部楼层 |阅读模式
第一步:小星星适配MIUI6和MIUI7以及所有基于星星一号的包时很让人讨厌的就是要反编译开启虚拟按键的问题,因为MIUI6和MIUI7采用了小米应用框架,因此导致很多系统应用不能正常编译。
今天咱来看看小米到底是怎么阻止我们的反编译工作的。


准备下面的材料,二楼开始。Windows系统的台式机或笔记本一台;下面链接中apktool的MIUI特别版;JDK最新版。走起!



apktool for MIUI:
  1. 链接: https://pan.baidu.com/s/1jIyU9Em 密码: ptmq
复制代码


JDK8官方下载:
  1. http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
复制代码


第二步:
b1be1e44ad34598212b532d904f431adcbef8426.jpg


第三步:
现在我们开始编译工作。打开一键apktool,按2并回车,然后输入你要编译的apk(需要拷贝到apktool所在文件夹)的序号,按回车,这时会开始解包apk。我要反编译framework-res.apk开启虚拟按键,之前用了很多apktool版本都是竹篮打水一场空,只有这次找到了这个MIUI专用apktool,问题才迎刃而解。如果没有错误提示(通常是一大片英文),而是一条一条有序的提示,那么恭喜你,解包成功,你可以继续下面的操作了,例如开启虚拟按键,修改按键高度,美化状态栏,等等。


第四步:


完成工作后,最让人头疼的事来了,要回编译,很多星友都在这里栽了跟头。其实如果反编译正常的话,回编译只要简单排错就可以了,但是很多星友甚至在什么都没修改的情况下回编译也报错,这是怎么回事呢?别急,如果是用MIUI专用apktool还回编译失败,一般在错误提示中都有下面的字符:


963247198618367ae2a9a39626738bd4b31ce539.jpg


或者是其他的values-mccxxxx-mncxxxx,但是归纳起来其实就是一名话“此目录无效”。简单来说,就是这些目录不能被回编译程序识别。按照提示的路径查找到这个文件夹,是不是我将这些目录删除就可以了呢?其实不止这么简单,删除它你只对了一半,因为这些文件夹里面还包括了一些资源信息。打开文件夹,里面的这些文件你是否感觉到有几分相识?它们不就是values下的那些个资源文件么?所以我们接下来要做的事情就是把这几个无效目录内的资源文件合并到values目录下。相信你一定在我的apktool包里发现了UltraEdit,现在它就要派上用场啦。用它无效目录下的一个资源文件和values目录下的同名文件,在values目录文件中查找无效目录下的资源文件的名字(如bool name),如果没有,则复制那一行并粘贴到values目录中的同名文件里。如果有,则删除无效目录里的文件即可。以此类推,直到删除完报错的文件夹为止。特别提醒,如果无效目录里的文件中的一项和values目录里的同名文件中的一项冲突,如无效目录里的一项为false,values目录里的一项为true,则以values目录里的项目为准,保留true数值。
补充一下,UltraEdit和其他编辑软件产生的.bak备份文件一定要全部清理掉,不然无法回编译


第五步:


这样修改完之后,打开一键apktool,按3并回车,输入你编译的那个apk文件夹的序号并回车,已经可以正常回编译了吧?完成之后,在apktool目录下的回编apk生成目录中找到回编译完成的apk,这时的apk还没有签名,你可以将编译之前的原apk改后缀名为zip(不显示后缀名的自己搜索解决),然后解压出META-INF,再把编译完成的apk复制一份副本,改副本后缀名为zip,将其中内容全部解压到一个文件夹,把原apk中解压出来的META-INF文件夹拷贝进去,然后以仅存储方式压缩成zip文件,再改回后缀名为apk。这样做的好处是签名一致,方便替换操作。坏处是有可能提示“无法解析”,自然无法使用,而framework-res.apk又是整个系统的核心。所以,使用上述方法做出原签名的apk之后,建议先在手机上尝试打开(不要安装),如果显示正常,则可以替换进系统了。如果真的提示“无法解析”,那么只能通过APKSign等第三方apk签名应用将没有签名的apk正本签名,然后再替换进系统。这就是之前为什么要复制一个编译完成的apk的副本的原因。如果有疑问,可以在下面回帖问我。本教程一定程度上基于“MIUI6电脑端反编译环境搭建及回编译错误处理_红米Note_MIUI论坛”的工作。


感谢@hsh宏爷 提供正确方法指导,系统应用不能使用APKSign签名,而应该把原apk和编译好的apk的后缀名分别改为zip,然后从编译完成的apk中提取resources.arsc,然后替换进原apk,最后把放入新resources.arsc的原apk改回后缀名为apk,替换进系统。


第六步:


apktool_for_MIUI(11月更新版)下载地址:

  1. 链接: https://pan.baidu.com/s/1jIyU9Em 密码: ptmq
复制代码


删除了UltraEdit,可自行下载或用Notepad++代替(反正我用Notepad++)
更新apktool2.jar,可用来反编译MiuiSystemUI.apk等,需时只要把apktool2.jar改名成apktool.jar就可以了——原apktool.jar据我测试能反编译framework框架,但是UI不行。apktool2.jar能反编译UI,但是framework框架不行——也就是说,包里的apktool2.jar是公版apktool_2.2.1,apktool.jar是MIUI版apktool。


原文地址:


  1. https://tieba.baidu.com/p/4733549503?red_tag=2960883214
复制代码




捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2024-9-28 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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