ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

安卓逆向实战:通过修改smali文件,破解签名校验

2021-08-23 13:03:08  阅读:211  来源: 互联网

标签:shuqi 安卓 校验 apk 签名 app smali ###


####

shuqi.apk

mumu模拟器

###

正常的shuqi.apk,是在模拟器可以正常运行的,

###

首先第一步使用apktool.sh d shuqi.apk

反编译出来这个apk,

###

然后再次打包这个apk,

使用命令,apktool.sh b shuqi

会在产生一个dist文件夹,里面有一个shuqi.apk

####

进入这个dist文件夹,cd 进入,

开始生成签名,

使用命令:keytool -genkey -keystore my-release-key.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000

输入密码123456

签名就生成了

###

使用生成的签名文件,对apk进行签名,

使用命令:jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar shuqi_sign.apk shuqi.apk my_alias

会生成一个签名的apk

####

在模拟器再次安装这个apk

发现安装失败了,

分析

第一步,因为你启动的时候就退出了,所以应该是在启动的某一个阶段, 做了签名的校验,所以你要找到是在启动的哪一个阶段做的校验,

因为app启动是会去读取,Androidmanifest.xml的,一个apk只有一个这个文件,里面有一个,application,这个加载完,app的生命周期就启动了,

所以应该是还没有加载完这个application,就退出了,

第二步,所以我们去找application,找到Android.name的地方,这个就是app启动的入口,

大概率是会在这个启动的入口文件里,做一些事情,然后校验了签名的,我们要做的就是找到这个校验 签名的地方,

这个地方的文件是不会混淆的,因为混淆了app就找不到了,

 

###

这个就是对签名进行了校验,

开发签名了之后是记录到代码里面的, 每次app启动,会读取这个签名,如果不对就会有问题,

我们下一步要找到这个签名的地方在哪里,

###

使用jadx打开shuqi.apk

是启动的时候就退出了,可以猜测是启动的时候做了校验,

找到启动application页面,

 

找到书旗的application,

 

可以通过右键的方式,找到这个函数的具体位置,

我们猜测是做了校验,就要重点关注if,check,verify,这样的词,

 

就是这个地方做了校验了,我们要做的就是把这一句注释掉,然后重新打包,

###

我们找到对应的路径,修改smali文件,

 

把对应的四行删除,然后再去打包,

###

重新签名,打包,

注意把之前生成的build和dist删除掉,

首先重新打包

使用命令,apktool.sh b shuqi

会在产生一个dist文件夹,里面有一个shuqi.apk

####

进入这个dist文件夹,cd 进入,

开始生成签名,

使用命令: 

输入密码123456

签名就生成了

###

使用生成的签名文件,对apk进行签名,

使用命令:jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar shuqi_sign.apk shuqi.apk my_alias

会生成一个签名的apk

###

再次安装这个签名之后的apk,

哈哈,就可以正常安装了,绕过了他的签名校验!!!!

####

为什么能够绕过这个签名,

本质还是对安卓系统,对app加载流程有一个深刻的认识啊!

#####

标签:shuqi,安卓,校验,apk,签名,app,smali,###
来源: https://www.cnblogs.com/andy0816/p/15175400.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有