patch apk后重打包重签名

patch apk后重打包重签名

有很多时候想要逆向分析一个apk文件,单纯的静态分析不能解决我们的需求,我们需要patch一下apk的库文件(比如patch反调试),或是修改java源码等,我们希望修改之后重新打包成apk,然后装入实机调试,那么就需要将其重打包重签名。

工具

java环境

java环境是必不可少的,后面的所有工具都依赖java环境。

apk tools

下载apk tools

https://ibotpeaches.github.io/Apktool/install/
在这里插入图片描述

以windows平台来讲,需要下载的内容有两个,分别是途中画红框的,bat 脚本和apktool.jar 将bat脚本拷贝下来保存为apktool.bat并与apktool.jar放在一个目录下,我连测试用apk也放在了一起:
在这里插入图片描述

Android Studio

生成签名文件用,官网下载即可:https://developer.android.com/studio

然后一顿下一步安装即可,没什么坑。

解包

.\apktool.bat d .\test.apk

运行上述脚本进行解包:
在这里插入图片描述
解包好之后会出现test文件夹,里面都是apk包中的内容:
在这里插入图片描述

patch文件

这里我是patch了一下库文件,原本库文件中有ptrace反调试,被我nop掉了,然后将patch后的so文件与原文件替换:
在这里插入图片描述

重打包

patch之后我们想重新做成apk文件,首先要进行重打包。

再返回apktool目录,运行下面指令重打包:

.\apktool.bat b test -o new_test.apk   //test:文件夹名  new_test.apk重打包后的名字

在这里插入图片描述
发现多了一个new_test.apk,这就是重打包好的apk文件:
在这里插入图片描述
但目前还无法正常安装,因为还没有为其签名。

生成签名文件

想要重打包成可以正常安装的apk文件,我们还需要为其签名,这时我们需要准备一个签名文件,可以使用Android Studio来生成

首先用Android Studio打开apk,然后头部菜单中的build->Generate Signed APK
在这里插入图片描述

选择apk:
在这里插入图片描述
新建一个key store password:
在这里插入图片描述

然后输入秘钥信息,选择保存路径,下面的密码设置一下(我两个密码设置的一样,反正我也分不清哪个是干啥的),之后签名的时候会用到,alias是秘钥别名,起了别名之后也记住了,之后会用到,下面的certificate 中至少写一行就可以了(参照网上攻略所说,并不是专业搞Android的,马马虎虎吧):
在这里插入图片描述
新版的Android studio会报这个错:
在这里插入图片描述
不用管 ,直接ok,会自动给你改成新的秘钥格式,然后什么都不用碰,直接下一步,然后完成即可:
在这里插入图片描述
生成的秘钥文件:
在这里插入图片描述

给apk签名

给apk签名用到java环境中的jarsigner,如果java环境安装没有问题的话,是自动有的,使用命令如下:

jarsigner.exe -verbose -keystore .\testSign.jks -signedjar test_finish.apk .\new_test.apk cat -digestalg SHA1 -sigalg MD5withRSA 
//.\testSign.jks  签名文件
//test_finish.apk 给签名玩生成的apk起个名
//.\new_test.apk  要签名的apk
//cat      		  之前生成签名文件时设置的别名

然后还需要输入一下之前设置的密码:
在这里插入图片描述
之后就自动申城了签名好的apk:
在这里插入图片描述

安装测试

在这里插入图片描述
在这里插入图片描述
安装成功,并且成功将反调试patch调了。

参考资料

Android Studio生成签名文件:https://m.imooc.com/article/details?article_id=73361

重打包重签名:https://www.jianshu.com/p/792a08d5452c

https://www.jianshu.com/p/db709a280d9a

发布了56 篇原创文章 · 获赞 288 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/Breeze_CAT/article/details/104588568