Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apk 签名验证

Apk 签名验证

作者头像
全栈程序员站长
发布于 2022-09-06 09:08:28
发布于 2022-09-06 09:08:28
1.7K0
举报

大家好,又见面了,我是你们的朋友全栈君。

当app进行反编译后修改,再回编译,若出现闪退的情况时,则有可能是由于程序本身已存在签名验证,才会出现闪退,今天分享如何解决因签名验证而出现的闪退现象。

1 阅读签名验证源码 1.打开文件

2.分析Java层,在调用init这个方法里面,是进行按钮以及其他控件的初始化

3.接下来是一个注册函数,判断用户名和密码是否相等,从而弹出不同的提示

4.LoginActivity类继承了BaseActivity,先分析BaseActivity这个类

5.分析onCreate方法里面的getSignature方法,该方法需要传入参数包名,根据包名获取签名信息,做出判断

6.完成上述操作后,开始获取签名信息

7.接着分析getSignature方法,首先,获取一个包管理

8.获取包管理后,将包名以及其他两个参数传进来

9.接下来,获取当前签名信息的途径,就是获取包管理等的操作

10.通过字符串定位,移动到这个类

11.找到类后,开始获取签名

12.获取签名时,会发现下面还有一个isOwnapp方法,进行一个是否相等的判断

13.判断过后,来到这个类

14.调用isOwnApp方法,对返回值进行判断,条件满足就killProcess,杀死进程

2 实战分析及过掉签名校验 以霸哥磁力为例。 1.安装程序霸哥磁力,直接拖进雷电模拟器,打开程序

2.打开androidkiller,对程序进行重新签名

3.重新签名过后,再次拖入,点击执行

4.将原有程序卸载,安装签名后的程序

5.安装完成,运行程序,提示:很抱歉,“霸哥磁力搜索”已停止运行

6.这里继续分析,首先将原版程序拖到androidkiller中进行反编译

7.反编译完成后,判断程序崩溃在打开程序时,说明检测签名校验的逻辑会在这种执行时间比较早的地方,先从启动界面开始查看

8.找到Oncreate方法,直接从Oncreate方法开始分析,然后点击咖啡图标,查看Java代码

9.找到Oncreate方法和onclick方法

10.一开始调用了函数:qian

11.点击该函数,获取包名管理,再进行签名,然后hash

12.如果这里不等于,会出现一个弹窗。继续分析,发现这里只是进行简单的判断就返回了,所以并不会杀死程序

13.继续查看onclick函数,发现在它下面还存在一个方法,是将bug函数返回值给eee,判断是否相等,然后弹窗

14.分析这个bug,在oncCreate里面,只有一个qian方法,然后是点击该方法,最后是bug,继续点击进来,发现是native,上面是so库的加载

15.解压文件,将so文件拖入IDA,发现没有JNI_onload,只有以Java_开头的一个文件

16.双击进入,简单分析。先压栈,然后move传参,然后调用getSignHashCode

17.点击进入,发现签名三兄弟

18.继续往下分析sinatureHashcode,从字符串中可以看出来,这些一块一块函数的调用,按快捷键F5,查看伪代码,查看具体参数

19.回到上一层,只传了一个R0,那么这里就是env

20.第二个参数没有被static修饰,那就是obj

21.将参数类型分别修改为JNIEnv *a1,jobject a2

22.隐藏类型

23.调用各种方法,若返回值与下图不相符,则直接exit退出

总结:通过一个案例,从java到so层,先分析动态注册和静态分册,再找到逻辑代码,找有签名三兄弟的函数,找到后分析这个函数的引用,进而可以采取手段过掉签名验证。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134306.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android逆向08 IDA爆破签名验证
关于apk的签名我想你一定不生疏 apk假如被反编译 那么原有的签名将不会保存 假如你要想对反编译后的apk重新打包 那么就要对apk重新签名才干装置到手机上。 经过百度晓得一个apk只要一个签名 而且这个签名是必需存在的 不然你这个apk就不能装置到手机上 。
axiomxs
2021/11/26
4150
绕过接口参数签名验证
在一些关键业务接口,系统通常会对请求参数进行签名验证,一旦篡改参数服务端就会提示签名校验失败。在黑盒渗透过程中,如果没办法绕过签名校验,那么就无法进一步深入。
Bypass
2022/12/01
1.4K0
绕过小程序签名验证
在一些关键业务接口,系统通常会对请求参数进行签名验证,一旦篡改参数服务端就会提示签名校验失败。在黑盒渗透过程中,如果没办法绕过签名校验,那么就无法进一步漏洞检测。
Bypass
2022/12/01
1.3K0
初探Android逆向:通过游戏APP破解引发的安全思考
如今移动互联网已经完全融入到我们的生活中,各类APP也是层出不穷,因此对于安卓APP安全的研究也尤为重要。本文通过对一款安卓APP的破解实例,来引出对于APP安全的探讨。(本人纯小白,初次接触安卓逆向一星期,略有体验,在这里分享一下)
FB客服
2018/07/30
1.4K0
初探Android逆向:通过游戏APP破解引发的安全思考
Android 安全逆向:篡改你的位置信息
前几天,一个哥们向我提了一个需求,怎么能改变当前应用的位置信息。当时工作比较忙,就说有时间研究下。想了下,这个可以有三种方式来解决。
陈宇明
2020/12/15
1.6K0
Android 安全逆向:篡改你的位置信息
你可能还不知道的apk签名绕过方法
近期更新Android应用可要注意了,不要随意点个链接就升级,你的正宗应用可能升级成山寨应用哦。 Google在12月发布的安全公告中提到的“Janus”漏洞,可使攻击者在不改变原应用签名的情况上,注入恶意代码。
Erwin
2020/01/02
3.4K0
Android签名攻与防
JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。JNI目前提供两种注册方式,静态注册方式实现较为简单,但有一些系列的缺陷,动态注册要复写JNI_OnLoad函数,过程稍微复杂。
Anymarvel
2018/10/22
2.3K0
Android签名攻与防
QT4A重打包实现原理
重打包是一种将非产品代码静态插入到安装包中,从而实现注入测试代码的能力。这种技术可以用于非root手机上无法利用ptrace动态注入被测进程的场景。
drunkdream
2020/01/02
1.1K0
apktool动态破解apk
那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围。当然动态方式很多,所以这里就分为三篇文章来讲解这块: 1、动态方式破解apk前奏篇(Eclipse动态调试smail源码) 2、动态方式破解apk升级篇(IDA动态调试so源码) 3、动态方式破解apk终极篇(应对加固的apk破解方法) 从这三篇文章能够让我们破解一般的apk没有任何问题,不过不能代表能够破解所有的apk,因为没有
xiangzhihong
2018/02/01
2.7K0
apktool动态破解apk
Android应用签名、反编译与防止二次签名
我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份即keystore。小编所在项目,遇到应用被恶意篡改的情况。新版本客户端加入了在线签名逻辑以及防止二次签名逻辑。小编对相关知识加深了理解,并运用在项目测试中,分享给大家。
用户5521279
2019/06/02
5.4K0
App安全测试
在App项目中都会碰到三座App安全大山。App客户端安全、数据传输安全、App服务端安全。下面以分析检测的思路进行对App安全威胁的这三座大山进行一些剖析梳理总结。
小道安全
2021/09/02
2.5K0
安卓安装包签名_笔记签名验证
我们知道,一款Android 要发布的话,必须经过签名,Android目前支持的签名方式包括三种:
全栈程序员站长
2022/11/17
1.4K0
安卓安装包签名_笔记签名验证
实现 APK 保护时常见的坑和解决方案
前言 何老师开启了逗猫线程; 何老师开启了黑科技线程; 何老师 嘿嘿嘿; 何老师 烫烫烫; 对 APK 进行保护是我们经常需要做的事,而且似乎也是每个公司必备的技能了。在使用如 ProGuard,DexGuard 等常见的产品之余,也有很多公司自行研发了一些保护的方案,专门来针对自家产品做出保护,比如说我司也开发了专门防止二次打包的工具。 在开发这款产品,并用于实战的过程中,也发现了很多坑,下面一一细数过来,希望对同样也希望开发一款 APK 保护类产品的人们能有所启发。 坑一: 签名校验 本来以为签名校验是
用户1907613
2018/07/20
4880
技术分享|微信小程序绕过sign签名思路
测试小程序的逻辑漏洞经常会遇到sign签名标识,若不知道sign的生成方式,只篡改参数的值无法修改sign的值,那么漏洞测试就很难进行下一步。本篇分享将围绕如何绕过小程序sign标识展开
亿人安全
2023/07/06
1.2K0
Android敏感数据泄露引发的思考
链接:https://juejin.im/post/6862732328406351879
陈宇明
2020/12/16
1.1K0
Android敏感数据泄露引发的思考
JAVA版微信小程序用户数据的签名验证和加解密
签名验证和加解密 数据签名校验 为了确保 开放接口 返回用户数据的安全性,微信会对明文数据进行签名。开发者可以根据业务需要对数据包进行签名校验,确保数据的完整性。 签名校验算法涉及用户的session_key,通过 wx.login 登录流程获取用户session_key,并自行维护与应用自身登录态的对应关系。 通过调用接口(如 wx.getUserInfo)获取数据时,接口会同时返回 rawData、signature,其中 signature = sha1( rawData + session_key
小柒2012
2018/04/13
1.8K0
toast弹窗教程_toast提示是什么
首先,需要从网上下载样本安装包,这里使用的样本是哒哒文件助手,读者可以从安卓市场下载。在反编译APK之前,还需要从网上下载第三方模拟器,如夜神、雷电等模拟器。安装下载好的样本,运行看一下效果,大概了解一下该APK实现的相关功能,如图2.6所示,该界面就是程序入口界面。
全栈程序员站长
2022/09/29
1.3K0
toast弹窗教程_toast提示是什么
Android APP安全防护总结
使用Lint对无用资源进行清理,而Lint则可以检查所有无用的资源文件,只要使用命令./gradlew lint或者在Android Studio工程中点击Analyze->Inspect Code,选择Whole Project点击ok就行。它在检测完之后会提供一份详细的资源文件清单,并将无用的资源列在“UnusedResources: Unused resources” 区域之下。只要你不通过反射来反问这些无用资源,你就可以放心地移除这些文件了。
天钧
2020/02/17
1.6K0
手把手教你逆向分析 Android 程序
很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下。 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的图片,苍老师你们不会不认识吧? 第二张图是微信运动步数作弊,6不6? ok,那我们从头说起…… 1.反编译 Android 的反编译,相信大家都应该有所了解,apktool、JEB 等工具。 我们先看一下 Apk 文件的结构吧,如下图: 1.META-INF:签名文件(这个是如何生成的后面会提到)。 2.r
腾讯Bugly
2018/03/23
3.3K0
手把手教你逆向分析 Android 程序
Android逆向入门篇--java层静态分析
apk包内的dex文件是dalvik虚拟机可识别的可执行文件,我们主要也是对dex文件进行逆向,分析其代码逻辑、更改其逻辑做一些分析、破解之类的行为
迅达集团
2019/07/01
1K0
相关推荐
Android逆向08 IDA爆破签名验证
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档