Android反编译之修改应用包名
前言
近期看B站数码区这条视频 【大米】破处理器,它能行吗?K50电竞版评测_哔哩哔哩_bilibili 时,发现了UP主的一个比较骚的操作:

嗯?apk文件可以直接拿来使用修改包名的?作为 Android 开发者的我竟然都不知道,是不是太 low 了点儿。。接下来一块看看怎么修改apk的包名吧。
基本操作
以 Android 应用的跑分软件 com.primatelabs.geekbench5_5.4.4.apk 为例。
apk 解包
先确认本地是否安装 Java 环境,JDK的bin文件夹目录是否引入到 环境变量PATH下。确认完毕后,下载 apktool 工具并保存到任意一环境变量目录下。

cmd执行:
apktool d com.primatelabs.geekbench5_5.4.4.apk # 后面是apk路径
修改 apk 信息
本次修改的应用信息除了应用包名外,另外一个就是应用名。修改的方法大同小异,寻找解包后文件夹内对应字符,进行替换。
修改包名
包名使用的地方可能比较多,这里使用Notepad++进行文件夹内查找:

可以看到修改的地方并不多,且并不包含.so等二进制文件。接下来可以双击定位到每一行手动修改,也可以使用文件夹内查找并替换的功能。这里把原有的包名com.primatelabs.geekbench5修改为cn.wx2020.testbench。
修改文件名
文件名的路径是比较固定的,一般就在 res\values\strings.xml中,如果存在翻译的话还可以去找对应资源文件夹,比如中文就在 res\values-zh-rCN\strings.xml 中。
接下来搜索 app_name:

把原有的 Geekbenck 5 改成 Testbench。
重打包
cmd 执行:
apktool b com.primatelabs.geekbench5_5.4.4 # 后面是解包后生成的文件夹路径
重签名
针对最新的 Android 11 系统,需要三个步骤:v1签名、4k对齐、v2签名;针对Android 10 以及以下的系统,使用v1签名的步骤即可。
v1签名
生成签名证书
keytool -genkey -v -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 20000 -keystore {签名文件} -alias {签名别名} -keypass {key密码} -storepass {store密码}
进行签名
jarsigner -keystore {签名文件} -storepass {store密码} -keypass {key密码} -signedjar {签名后的APK文件} {待签名的APK文件} {签名别名}
执行以下命令前,确保Android SDK build-tools文件夹下的特定版本路径存在于 环境变量PATH 下。这里使用当前最新的 31.0.0 版本。
4K对齐
zipalign 4 {已签名的APK文件} {对齐后的APK文件}
v2签名
apksigner.bat sign --ks {签名文件路径} --ks-key-alias {签名别名} --ks-pass pass:{KeyStore_Password} --key-pass pass:{Key_Password} --out {V2签名后的APK文件} {对齐后的APK文件}
到此,基本操作就结束了。但其实基本操作并不是彻底地修改包名。彻底地修改包名需要配合修改代码文件才可以。
高级操作
未完待续。。。
参考地址
Android反编译之修改应用包名的更多相关文章
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- 将JAR包反编译,修改后重新打包(转)
将JAR包反编译,修改后重新打包(转) 在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...
- 在Android Studio中修改应用包名
紧凑模式下(包名中的每个字段紧贴在一起,例如),右键单击包名,Refactor -> Rename,只能修改包名最外层的字段 分离模式下(点击设置,将Hide Empty Middle Pack ...
- Android反编译(三)之重签名
Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...
- Android反编译(二)之反编译XML资源文件
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
- Android 反编译
Android 反编译 步骤:1.下载apktool 工具,这一步 主要是反编译 xml 文件. 步骤:2 把xx.smali 文件转为java 工具 (单个) 图形界面 下载dex2jar 和xj ...
- 转 谈谈android反编译和防止反编译的方法
谈谈android反编译和防止反编译的方法 android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项 ...
- 谈谈android反编译和防止反编译的方法(转)
谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...
- Android反编译odex然后重新打包
#Android反编译odex然后重新打包 最近不知道怎么回事,突然把我那刷了氧OS的root了,然后就开始好奇起来氢OS所带有的那些本地化的东西,比如通话录音就是典型的一个之一.其中也做了很多的尝试 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题
文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题 六.在 HEAP-INCREASE-KEY 的第 5 行的交换操作中,一般需要通过三次赋值来完成.想一想如何利用IN ...
- TypeScript: 类型别名
类型别名 在 TYPESCRIPT 中,类型别名可以使用 TYPE 关键字来定义.类型别名可以方便地定义一个类型,并为其起一个易于理解的名称,以便在其他地方引用该类型时使用. 示例 type MySt ...
- React错误: Can't resolve 'react-dom/client'
错误截图 解决方案 当你的react版本低于18时,但仍然报这个错误,可以采用如下方案 意外的发现当我采用上述方案时,我的React路由跳转时,页面不刷新的问题也解决了,很神奇,日后技艺精进再补充.
- win10安装mysql-8.0.19-winx64
第一步:去官网下载安装 (重点)第二步:先解压,然后在mysql下创建一个my.ini文件,更改my.ini文件里面的两行安装目录,第二行加上\data,my.ini文件不能多或少一个符号,内容见文章 ...
- Mysql高级5-SQL优化
一.插入数据优化 1.1 批量插入 如果有多条数据需要同时插入,不要每次插入一条,然后分多次插入,因为每执行一次插入的操作,都要进行数据库的连接,多个操作就会连接多次,而一次批量操作只需要连接1次 1 ...
- Unity的IPostprocessBuildWithReport:深入解析与实用案例
Unity IPostprocessBuildWithReport Unity IPostprocessBuildWithReport是Unity引擎中的一个非常有用的功能,它可以让开发者在构建项目后 ...
- js 文字像打字一样缓缓出现
点击查看代码 <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UT ...
- 测试与爬虫—抓包神器之Charles
前言 之前我们讲到过fiddler(https://www.cnblogs.com/zichliang/p/16067941.html),wireshark(https://www.cnblogs.c ...
- 如何爆破js加密后的密码?
如何爆破js加密后的密码? 1.首先burp中安装插件: https://github.com/whwlsfb/BurpCrypto 安装插件完毕后,分析进行js加密的算法. 2.分析加密过程: 找到 ...
- 【问题解决】容器部署MySQL的数据在docker commit导出的镜像中丢失
问题起因 最近公司有个甲方项目参加竞赛,要求在(基于kubeflow/arena)平台上部置应用,可以将MySQL打包在应用一起,也可以分开部署,没有提供volume相关的支持.大意是可以把初始好的数 ...