前言

近期看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 反编译入门指南

更改 android apk 名字、包名 可双开及躲过检测

Android反编译之修改应用包名的更多相关文章

  1. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  2. 将JAR包反编译,修改后重新打包(转)

     将JAR包反编译,修改后重新打包(转)   在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...

  3. 在Android Studio中修改应用包名

    紧凑模式下(包名中的每个字段紧贴在一起,例如),右键单击包名,Refactor -> Rename,只能修改包名最外层的字段 分离模式下(点击设置,将Hide Empty Middle Pack ...

  4. Android反编译(三)之重签名

    Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...

  5. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  6. Android 反编译

    Android 反编译 步骤:1.下载apktool 工具,这一步 主要是反编译 xml 文件. 步骤:2 把xx.smali 文件转为java 工具 (单个) 图形界面 下载dex2jar  和xj ...

  7. 转 谈谈android反编译和防止反编译的方法

    谈谈android反编译和防止反编译的方法   android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项 ...

  8. 谈谈android反编译和防止反编译的方法(转)

    谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...

  9. Android反编译odex然后重新打包

    #Android反编译odex然后重新打包 最近不知道怎么回事,突然把我那刷了氧OS的root了,然后就开始好奇起来氢OS所带有的那些本地化的东西,比如通话录音就是典型的一个之一.其中也做了很多的尝试 ...

  10. Android反编译(一)之反编译JAVA源码

    Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具  dex2jar   http://code.go ...

随机推荐

  1. linux文本编辑YCM报错

    linux文本编辑YCM报错 刚从github安装了vimplus,可是发现存在不少的问题.索性给直接记录一下. The ycmd server SHUT DOWN (restart with ':Y ...

  2. Django:数据库驱动安装

    import pymysql pymysql.install_as_MySQLdb() 常见MySQL驱动介绍: MySQL-python:也就是MySQLdb.是对C语言操作MySQL数据库的一个简 ...

  3. 快速了解DevSecOps:构建安全软件开发的基石!

    关键词 DevSecOps - 在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中 SDLC-软件交付生命周期 SCA-软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞 ...

  4. 4.4 C++ Boost 数据集序列化库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  5. 形象谈JVM-第四章-JVM内存结构

    给我一个CPU,给我一块内存,我来执行一段代码. 我要如何分配呢? new User(); 这里有一个有一个User类,如果我要new出来User对象,必须先知道它长什么样子,我先搞一块区域出来,把U ...

  6. langchain中的LLM模型使用介绍

    简介 构建在大语言模型基础上的应用通常有两种,第一种叫做text completion,也就是一问一答的模式,输入是text,输出也是text.这种模型下应用并不会记忆之前的问题内容,每一个问题都是最 ...

  7. WPF学习:Slider — 冒泡显示值

    想做一个下图所示的Slider,以冒泡的方式显示其Value值,该怎么做呢? 功能要求,当鼠标放在滑块上的时候,冒"泡"显示值:当滑块移动的时候,"泡"跟随移动 ...

  8. Jquery ajax方式提交表单

    Jquery ajax方式提交表单,目前用过的有两种方式: 1.引人jquery.js和jquery.easyui.min.js后,用下面的方法: $('#checkForm1').form('sub ...

  9. WPF动画入门教程

    Windows Presentation Foundation (WPF)是一种用于创建Windows客户端应用程序的UI框架.它让我们能够创建丰富的图形界面,包括各种各样的动画效果.接下来,我们将介 ...

  10. Modbus转profinet网关连接位移计在1200程序控制案例

    Modbus转profinet网关连接位移计在1200程序控制案例 本案例讲述了兴达易控Modbus转profinet网关(XD-MDPN100)连接现场用台达LD-E镭射位移计检测控制在1200PL ...