【Android 逆向】apk反编译后重打包

android,逆向,apk,反编译,打包 · 浏览次数 : 92

小编点评

## apktool b smali_dirsmali_dir **步骤 1:** 执行命令 `apktool b smali_dirsmali_dir`。 **步骤 2:** 在反编译后的数据目录中执行以下命令: ``` sh /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml ``` **步骤 3:** 在生成的 `AndroidManifest.xml` 文件中删除以下属性: * `compileSdkVersion` * `compileSdkVersionCodename` * `appComponentFactory` **步骤 4:** 重打包 APK 文件。 **步骤 5:** 创建签名文件 `coolapk.keystorekeytool -genkey -keystore coolapk.keystore -keyalg RSA -validity 10000 -alias coolapk本地会生成一个文件coolapk.keystore3。` **步骤 6:** 对重打包后的 APK 进行签名。 **步骤 7:** 使用 `jarsigner` 命令将 APK 文件签名。 **步骤 8:** 安装签名好的 APK 文件到手机。 **步骤 9:** 使用 `adb` 命令在手机上安装 APK 文件。 **步骤 10:** 使用 `adb` 命令运行 APK 文件。

正文

1. 执行 apktool b smali_dir

smali_dir 为反编译出来的数据目录

执行后可能会报错

I: Building resources...
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:1: error: No resource identifier found for attribute 'compileSdkVersion' in package 'android'
W: 
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:1: error: No resource identifier found for attribute 'compileSdkVersionCodename' in package 'android'
W: 
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:37: error: No resource identifier found for attribute 'appComponentFactory' in package 'android'
W: 
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code =
1): [/tmp/brut_util_Jar_75145076448849533262091191559183387531.tmp, p, --forced-package-
id, 127, --min-sdk-version, 19, --target-sdk-version, 26, --version-code, 50400, --
version-name, 5.4, --no-version-vectors, -F, /tmp/APKTOOL5890277078150715820.tmp, -e, 
/tmp/APKTOOL1664296946725275904.tmp, -0, arsc, -I, 
/root/.local/share/apktool/framework/1.apk, -S, 
/root/Desktop/tmp/qimao_dir/qimao_v5.4/res, -M, 
/root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml]

虽然看起来像是Warning,但这就是重打包失败的原因
当前我用的apktool版本为2.7.0

解决办法:删除掉AndroidManifest.xml中那些报错的属性(这些属性好像是apktool反编译时自动加进去的,非原始代码)

删除后打包成功

2. 创建签名文件(创建了可以复用)

# 创建一个别名叫coolapk 的coolapk.keystore
keytool -genkey -keystore coolapk.keystore -keyalg RSA -validity 10000 -alias coolapk

本地会生成一个文件coolapk.keystore

3. 对重打包后的apk进行签名

#jarsigner 随jdk安装
#coolapk 是第二部创建的alias的值,这个必须保持一致
jarsigner  -verbose -keystore coolapk.keystore -signedjar xxx_v5.4_signed.apk xxx_v5.4.apk coolapk

4. 签名成功后安装到手机,成功运行

与【Android 逆向】apk反编译后重打包相似的内容:

【Android 逆向】apk反编译后重打包

1. 执行 apktool b smali_dir smali_dir 为反编译出来的数据目录 执行后可能会报错 I: Building resources... W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:1: err

【Android逆向】apk 反编译

1. Kali搭建apktool环境 1. 访问apktool 官网https://ibotpeaches.github.io/Apktool/install/ 参考红圈里的步骤处理即可 2. 执行命令反编译apk apktool d ./xxxx_v5.4.apk 注意这里有可能因为assert目

【Android逆向】frida hook so 函数

1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 java -jar ../apktool_2.2.4.jar d app-debug.apk 3. 用j

android 逆向笔记

壳检测工具 GDA 2. 逆向分析APP 一般流程 1. 使用自动化检测工具检测APP是否加壳,或者借助一些反编译工具依靠经验判断是否加壳 2. 如果apk加壳,则需要先对apk进行脱壳 3. 使用`jeb`, `jadx`, `apktool`等反编译工具对apk进行反编译 4. 先依据静态分析得

【Android逆向】反调试绕过

1. 拿到52pojie的反调试挑战apk 链接: https://www.52pojie.cn/thread-742686-1-1.html 的附件中 2. 项目进行安装,点开app,同时挑战成功,不慌 3. 使用IDA attach到目的进程观察,发现app立刻闪退,证明app必然存在反调试逻辑

【Android逆向】反调试绕过(nop 绕过)

1. 这是看雪上的一个题目,要求显示出 it is success https://www.kanxue.com/work-task_read-800648.htm 第三题 2. apk 安装到手机,发现闪退 3. apk拖入到jadx中,观察 public class MainActivity e

【Android 逆向】r0zapataNative.apk 破解

1. apk 安装到手机,需要输入内容,随便输入,提示fail... 2. apk 导入到jadx中查看一下 MainActivity.java String textData = "b2FueHVl"; ... String roysue_1 = Test.hallbBase64(MainActi

【Android 逆向】【攻防世界】APK逆向

1. apk安装到手机,提示输入flag 2. jadx打开apk 定位到checkSN方法 public boolean checkSN(String userName, String sn) { if (userName != null) { try { if (userName.length(

【Android逆向】破解黑宝宝apk,绕过签名校验

这是52pojie的一道题,实现输入任何密码都可以登录成功 他知道你最近在学习Android逆向 他想在游戏上线前让你测试一下他新加的签名验证是否能防住别人的破解。 下面是李华编写的黑宝宝apk 链接:https://pan.baidu.com/s/1h6pX2ARE3qtiKiYbcnJ-3g 密

【Android逆向】破解看雪 test1.apk

1. 获取apk,并安装至手机 apk 获取地址: https://www.kanxue.com/work-task_read-800624.htm adb install -t test1.apk # 这个apk必须加-t ,否则会报错 2. 只有一个输入框,随便输入内容,提示壮士继续加油 3.