分享好友 最新动态首页 最新动态分类 切换频道
Android Apk 反编译和重打包说明 定制资源替换
2024-12-27 05:48

Android Apk 反编译和重打包说明

Android Apk 反编译和重打包说明 定制资源替换

可参考网站: https://ibotpeaches.github.io/Apktool/install/  

测试环境: Ubuntu 18.04
按照上面网站的说明,下载了apktoolhe apktool.jar, 用法如下:


hulk@hulk-PC:~/byod/tools/repackage-tools$ apktool d -r demo-app-signed.apk -o test
I: Using Apktool 2.5.0 on demo-app-signed.apk
I: Copying raw resources...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...


hulk@hulk-PC:~/byod/tools/repackage-tools$ apktool b test -o test.apk
I: Using Apktool 2.5.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Copying raw resources...
I: Copying libs... (/lib)
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...
hulk@hulk-PC:~/byod/tools/repackage-tools$ 

如果没有"-r"参数

配置到环境变量中, 可正常反编译,但是重打包事会提示找不到资源问题
hulk@hulk-PC:~/Downloads$ apktool b demo-app-signed
I: Using Apktool 2.5.0
I: Checking whether sources has changed...
I: Checking whether resources has changed...
I: Building resources...
W: /home/hulk/Downloads/demo-app-signed/AndroidManifest.xml:1: error: No resource identifier ....................................
W: 
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [/tmp/brut_util_Jar_31932934467824414377604707760593060500.tmp, p, --forced-package-id, .............................signed/res, -M, /home/hulk/Downloads/demo-app-signed/AndroidManifest.xml]

找不到资源,丢东西了?

解决办法: 
修改反编译命令:  
apktool脚本命令:  apktool d -r demo-app-signed.apk -o test
原始java命令: java -jar apktool.jar -r d demo-app-signed.apk -o test   //反编译时增加 -r 参数,便是循环反编译完成;

反编译
hulk@hulk-PC:~/byod/tools/repackage-tools$ java -jar apktool.jar -r d demo-app-signed.apk -o test
I: Using Apktool 2.4.1 on demo-app-signed.apk
I: Copying raw resources...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

//重新打包
hulk@hulk-PC:~/byod/tools/repackage-tools$  java -jar apktool.jar b test
I: Using Apktool 2.4.1
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Copying raw resources...
I: Copying libs... (/lib)
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...

反编译之后, 肯定事需要修改资源文件

1. 替换定制项目的字符串和图片等等;

(1) 替换图片资源

cp -rf custom_res/drawable-xxhdpi-v4/. https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-xxhdpi
cp -rf custom_res/res/drawable-xxhdpi-v4/. https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-xhdpi
cp -rf custom_res/res/drawable-xxhdpi-v4/. https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-hdpi
cp -rf custom_res/res/drawable-xxhdpi-v4/. .test/res/drawable-mdpi

还可以通过命令把原图片进行放缩之后在输出到新的apk:

convert custom_res/res/drawable-xxhdpi-v4/ic_launcher_home.png -resize 96x96 https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-xhdpi-v4/ic_launcher_home.png
convert custom_res/res/drawable-xxhdpi-v4/ic_launcher_home.png -resize 72x72 https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-hdpi-v4/ic_launcher_home.png
convert custom_res/res/drawable-xxhdpi-v4/ic_launcher_home.png -resize 48x48 https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/drawable-mdpi-v4/ic_launcher_home.png

(2) 修改字符串

把string.txt文件里面的所有字符串,按照行替换到新包中

sed -i "s/${line_array[0]}/${line_array[1]}/g" https://blog.csdn.net/zhanghao_Hulk/article/details/test/res/values/strings.xml

# 替换/res/values/strings.xml中字符串
cat custom_res/string.txt | awk '{print $0}'| while read line
do
    echo $line
    OLD_IFS="$IFS"
    IFS=":"
    line_array=($line)
    IFS="$OLD_IFS"
    echo "line_array size:"${#line_array[*]}" line_array:"${line_array[*]}
    if [ ${#line_array[*]} = 2 ]
    then

   #实际替换strings.xml中的文字
    sed -i "s/${line_array[0]}/${line_array[1]}/g" https://blog.csdn.net/zhanghao_Hulk/article/details/"${sourcename%.*}"/res/values/strings.xml
    else
    continue
    fi
done

2. 修改smali文件
这个复杂度比较大, 也比较简单. 可以自行研究


# 替换manifest 添加自定义权限
if [ -f "custom_res/permissions.txt" ]
then

    #找到manifest的uses-permission数量
    permissioncount=$(cat https://blog.csdn.net/zhanghao_Hulk/article/details/test/AndroidManifest.xml  | grep '<uses-permission' -n | awk -F ':' '{print $1}' | head -n 1)
    permissioncount=$permissioncount"r"
    echo " permissioncount :"$permissioncount
    echo "replace manifest and permissionms"
    sed -i  "${permissioncount} custom_res/permissions.txt" https://blog.csdn.net/zhanghao_Hulk/article/details/test/AndroidManifest.xml
fi

# 替换versionCode和VersionName

#   $v  为 versionName, $c 为versionCode  
ls -al https://blog.csdn.net/zhanghao_Hulk/article/details/test
if [ $c != "" ]
then
    sed -i "s/versionCode.*/versionCode: '$c'/g" https://blog.csdn.net/zhanghao_Hulk/article/details/test/apktool.yml
fi

if [ $v != "" ]
then
    sed -i "s/versionName.*/versionName: $v/g" https://blog.csdn.net/zhanghao_Hulk/article/details/test/apktool.yml
fi
echo "replace versionName and versionCode"

# 重打包

$t为新包输出文件目录
if [ $targetPath = "" ]
then
echo "not give target path, need to rebuild package by apktool"
else
https://blog.csdn.net/zhanghao_Hulk/article/details/apktool b https://blog.csdn.net/zhanghao_Hulk/article/details/test -o $targetPath
echo "apktool b target:"$targetPath
fi

最新文章
成免费的CRM1688:如何利用免费CRM系统提高企业管理效率
在当今数字化时代,CRM(客户关系管理)系统成为了企业管理的核心工具之一。随着市场需求的增长,越来越多的企业开始寻找一款既能高效管理客户信息,又能降低成本的CRM工具。成免费的CRM1688便是这样一款引起广泛关注的产品。很多小企业和
微信小程序开发系列(一)·微信小程序开发账号的注册以及开发者工具的安装和使用
目录1.  小程序与普通网页开发的区别 1.1  运行环境不同 1.2   API 不同 1.3  开发模式不同 2.  注册小程序开发账号 2.1  注册平台登录 2.2  账号信息填写 2.3  邮箱激活 2.4  个人信息登记 2.5  获取小程序的AppID 3.  安装开
华为手机经鼎桥的一番“武装”后......
  第一次听闻鼎桥通信技术有限公司(以下简称“鼎桥”)的双系统安全定制手机之概念并一睹其英姿,还是在去年年底的“2015中国移动全球合作伙伴大会”上,至今犹记当时观者如潮的场景。可见鼎桥联合其母公司华为技术有限公司(以下简称“
web前端开发必会的二十五个知识点
web前端开发培训之前端开发必会的二十五个知识点1. 常用那几种浏览器测试?有哪些内核(Layout Engine)?(Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera。(Q2) 内核:Trident,Blink,Gecko,Webkit,Blink。2. 说下行内元素和块级元素的
重庆长安科技申请控制器测试专利,大大提高了控制器的测试效率和测试准确性
本文源自:金融界金融界2024年12月18日消息,国家知识产权局信息显示,重庆长安科技有限责任公司申请一项名为“控制器测试方法、系统、装置及电子设备”的专利,公开号CN 119126759 A,申请日期为2024年9月。
置顶微信商户号被恶意投诉,给我们经营者带来极大的不便,无法维权,反而处处受到限制!精选热门
我们是做一个商家平台,让商家在我们平台上使用,在使用过程中难免会遇到一些竞争对手,故意作为消费者购买商家的产品,然后恶意投诉你平台的微信商户号,明明商户这里有把产品给对方了,产品和服务都没有问题,关键是这个用户就是要恶意搞
网红游戏推荐哪个 2024网红游戏排行榜
2024网红游戏排行榜新鲜出炉!探索当下的游戏潮流,想知道哪些热门游戏在玩家们的指尖风靡一时?本文带你走进最新最in的游戏世界,无论是创新玩法还是视觉盛宴,不容错过。紧跟潮流玩家的步伐,一睹未来趋势所在,一起沉浸在那些即将引领新
百度山西推广秘籍,让你的广告在百变大放异彩
山西百度推广优化,关键在于精准定位和创意策略。通过深入分析目标受众,定制个性化广告内容,优化关键词布局,提高广告点击率。利用百度大数据分析,实时调整推广策略,确保广告在百度搜索结果中脱颖而出,提升品牌曝光度和率。随着互联网
时尚精致的Mac 为什么开始成为更多企业的选择?
“每次都宣传视频剪辑,Mac就适合拿来剪视频”、“Mac长得好看,它就适合给设计师用”、“Mac就是给iOS开发者准备的”...伴随着社交媒体的普及,我们听到了无数媒体与用户的评价,而这些对Mac的固有印象,也随着时间的推移在不断加深。然而
谷歌浏览器手机版下载
Chrome浏览器是由谷歌开发的一款广受欢迎的网络浏览器。它以其速度快、安全稳定及丰富的功能而受到广大用户的青睐。Chrome浏览器支持跨平台,在windows、Mac、Linux、Android和iOS等操作系统上都有相应的版本。1. 快速浏览:Chrome浏览器采
相关文章
推荐文章
发表评论
0评