APK处理

本文详细介绍了如何修改Android应用的启动页,创建和使用SO文件,以及JNI和CMake在开发中的应用。包括反编译、打包、签名和加壳等步骤,适用于技术开发者进行深入理解。
摘要由CSDN通过智能技术生成

修改启动页

新建一个空工程 什么都不用改 打包apk
使用apktool工具反编译apk
java -jar apktool_2.5.0.jar d app-release.apk -f --out=app-release
在这里插入图片描述
另起一个工程也可以在原有的工程中创建一个启动页
在这里插入图片描述在这里插入图片描述
运行在build目录下获取Monkey.java的dex文件
在这里插入图片描述
使用baksmali工具将dex转成smali文件
java -jar baksmali-2.2.2.jar disassemble Monkey.dex -o Monkey
在这里插入图片描述
也可以打包成apk用apktool工具反编译获取smali文件

将monkey的两个 smali文件放到最开始反编译的文件夹中
在这里插入图片描述
在这里插入图片描述
将activity_monkey.xml文件复制到
在这里插入图片描述
因为使用不同包名工程做的启动页 所以要将smali文件中所有用到包名的地方修改成目标apk的包名
在这里插入图片描述
在R$layout 中注册添加的xml文件 在最后添加 编码加一
在这里插入图片描述
将monkey中红框框的编码替换成修改的layout编码
在这里插入图片描述
上面的绿框是bbtt那个按钮的id
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
修改AndroidManifest.xml文件
在这里插入图片描述
为什么Monkey.java会有两个smali文件 查了一下资料大概意思的 Monkey$1.smali文件中放的是匿名类,如果代码中有用到匿名类就后生成连个smali文件,如果把monkey.java中那个按钮事件的匿名函数去掉的话就不会有Monkey$1.smali文件了

然后用apktool 打包成apk
java -jar apktool_2.5.0.jar b app-release -o app.apk
报错
在这里插入图片描述
找到对应的文件将值改成默认的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用zipalign工具对齐
zipalign -p -f -v 4 app.apk app-new.apk
在这里插入图片描述
使用apksigner.jar重签名

运行界面
在这里插入图片描述
点击跳转MainActivity
在这里插入图片描述

创建so文件

在这里插入图片描述
下载CMake
在这里插入图片描述
不需要修改直接运行 效果如下即可
在这里插入图片描述
在这里插入图片描述
在native-lib.cpp 中添加自己定义的方法 注意方法的签名路径要和使用的脚本路径一致
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f4fd598d550f4b94ab187bff75f426fd.png
也可以自己创建一个cpp文件
在这里插入图片描述
将自己创建的cpp文件加入构建
在这里插入图片描述

  • cmake_minimum_required(VERSION 3.10.2): 指定构建本项目所需的最低CMake版本。

  • project(“myapplication”): 定义项目名称为"myapplication"。

  • add_library(myapplication SHARED native-lib.cpp): 创建一个名为"myapplication"的共享库,其源代码位于native-lib.cpp文件中。这个命令将native-lib.cpp编译成共享库。

  • find_library(log-lib log): 查找名为"log"的NDK库,并将其路径存储在log-lib变量中。这个库通常用于在控制台上输出日志信息。

  • target_link_libraries(jnihello ${log-lib}): 将jnihello库与log库链接起来。这样,当你在JNI代码中使用#include <android/log.h>时,就可以使用log库中的函数来输出日志。

你可以修改这个文件来添加更多的源文件或依赖库,以满足你的项目需求。例如,如果你的JNI库依赖于其他第三方库,你可以通过find_library和target_link_libraries来添加这些库的链接。

在这里插入图片描述

使用so文件

将上面获取的so文件放入工程的libs文件夹中 添加引用
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f526e9fc541d49faa16b2df851d4de47.png
使用
在这里插入图片描述

在这里插入图片描述
修改monkey.java 尝试引用so文件并插入apk
在这里插入图片描述
获取这个文件的smali文件 复制替换到之前的test解压的工程中 记得修改路径和编码
在这里插入图片描述
打包成apk后运行报找不到Go方法
在这里插入图片描述
将两个smali文件中的Go放发改成Out 运行没问题
在这里插入图片描述

在这里插入图片描述
发现Smali中的Go方法不知道为什么变成了大写的GO 和so文件中匹配不上 改成Go后运行正常
在这里插入图片描述

加壳

参考连接:
修改启动页
安卓JNI
生成so文件
apk转aab

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值