Android逆向——定位到某书 Sign 算法(下)

简介: Android逆向——定位到某书 Sign 算法(下)

但我们总不可能点几百几千下,这样实在太麻烦了。Jadx 的设计者给我们提供了一种类似正则表达式的匹配方法,可以屏蔽这些讨人厌的第三方类,操作也很简单。打开文件——首选项,如下图,(建议)不要勾选“自动后台反编译”,因为它可能占用你电脑更多的内存。

640.jpg


点击编辑,像我这样输入,类名以 baidu 或 android 开头的类就会被 Jadx 屏蔽掉,点击确定后保存设置,Jadx 会重新加载这个 Apk,你会发现已经生效,这些类变成了灰色。

640.png

我们浏览一下列表,将比较明显的一些刺头并闭掉。

android

com.alipay

com.baidu

com.facebook

com.google

com.huawei

com.meizu

com.networkbench

com.qiniu

com.tencent

com.vivo

kotlin

你可能会难以把控,怕误伤,比如 com.networkbench.xxx,它似乎很像 App 中用于处理网络请求的模块,怎么避免误伤呢?百度一下就行,如果消息模棱两可,就搁在那儿不排除即可。

640.jpg


640.jpg

android com.alipay com.baidu com.facebook com.google com.huawei com.meizu com.networkbench com.qiniu com.tencent com.vivo kotlin

一路保存设置,最好重启一下JADX,这样可以释放掉由于反复操作Jadx的设置而导致的内存占用。

640.png


640.jpg

Jadx默认在使用搜索功能时,才开始反编译,点击Jadx左上角魔法棒,然后稍等片刻。


640.jpg

原先反编译某书时占用6G左右内存,现在少了几乎一半。


640.png

经过这一顿调教

我们正式开始搜索拦截器相关的特征。

三、定位关键代码

Jadx 并不支持正则表达式的方式进行检索,所以我们这儿搜索 “implements Interceptor {”

640.jpg


再试试第二个关键词

640.jpg


再试试第三个关键词

640.jpg

真是让人惊喜,只有三处适宜的代码,而且其实就在两个类里,先看一下第一个类

640.png

传入了一个 map 集合,不停 for 循环,按照键和值的方式将内容传进 addQueryParameter 方法中,妙啊,比如map为 {“sign:12345678”},这不就传进去了吗,赶紧右键查找一下用例,只有一处,点进去。

640.jpg

代码越来越乱了,这个时候冷静一下,要避免一叶障目,不要先钻进去研究逻辑,保持怀疑,然后直接看下一个符合条件的类,要知道这儿可是出现多处 .addQueryParameter 方法,也很像添加多个参数的操作。

点进去看一下,有些代码会让你觉得很 demo 很像,比如什么request.url().newBuilder(),除此之外,我们看到了大量类似 oldRequest 的提示,这也只能说明这个地方很可疑,就像第一个检索内容一样,但不足以让我们认定它就是我们要找到拦截器。

640.jpg

从上往下看一下这个类

640.jpg

这儿似乎就是我们需要的那个拦截器类,我们看一下sign的用例,j上右键——查找用例

640.jpg

两处方法点开后,仔细瞅瞅,不管是map的put方法,还是newBuilder的add方法,其实都是往集合里塞东西,里面都是两个参数,迷糊的同学可以看一下前面的demo,参数一是键,也就是参数名,在这儿也就是this.j,也就是”sign“,参数二就是具体的sign值,也就是我们要破解的sign。我们可以发现,两处的sign值都是由a方法生成,a方法的传入是一个map集合(linkedhashmap是map的一种),返回一个String。

640.gif

多半这个a方法就是sign的生成处了,在下一讲中,我们会验证一下是否属实,如果没找错的话,就可以分析这个 sign,进行 sign 的破解。这篇文章就到此为止了。

640.jpg

看我教程的人不多,但读者一直支撑着我继续写这些拙劣的文字和教程,非常非常感谢大家。

在这儿做一下更新的说明,我每一节的内容其实量挺大的,再加上我需要反复琢磨表达和思路,所以更新比较慢,以后会减少单篇的内容,在保证质量的前提下尝试一天一更,谢谢三五读者的支持和厚爱

相关文章
|
6月前
|
算法 Android开发
Android签名算法的原理
Android签名算法的原理
68 0
|
2月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
166 4
Android性能测试——发现和定位内存泄露和卡顿
|
3月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点讲解了如何使用 Kotlin 实现 AES-256 的加密和解密,并提供了详细的代码示例。通过生成密钥、加密和解密数据等步骤,展示了如何在 Kotlin 项目中实现数据的安全加密。
119 1
|
3月前
|
算法 安全 数据安全/隐私保护
Android经典实战之常见的移动端加密算法和用kotlin进行AES-256加密和解密
本文介绍了移动端开发中常用的数据加密算法,包括对称加密(如 AES 和 DES)、非对称加密(如 RSA)、散列算法(如 SHA-256 和 MD5)及消息认证码(如 HMAC)。重点展示了如何使用 Kotlin 实现 AES-256 的加密和解密,提供了详细的代码示例。
74 2
|
4月前
|
机器学习/深度学习 搜索推荐 算法
利用机器学习算法增强IAA广告定位和预测:实现个性化广告投放以最大化收益
【7月更文第30天】在当今高度竞争的移动应用市场中,应用内广告(IAA)是许多开发者获取收入的重要途径之一。然而,传统的广告推送方式往往忽略了用户的个体差异性,导致广告效果不佳。通过运用机器学习技术,我们可以更准确地理解用户偏好,从而实现个性化的广告推送。
292 0
|
5月前
|
存储 算法 Java
Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。
【6月更文挑战第21天】Java查找算法概览:二分查找适用于有序数组,通过比较中间元素缩小搜索范围;哈希查找利用哈希函数快速定位,示例中使用HashMap存储键值对,支持多值关联。简单哈希表实现未涵盖冲突解决和删除操作。
57 1
|
5月前
|
算法 Java API
记录我第一次在Android开发图像处理算法的经历
记录我第一次在Android开发图像处理算法的经历
35 1
|
6月前
|
自然语言处理 算法 搜索推荐
Android文字匹配度算法
【5月更文挑战第15天】
|
6月前
|
算法 前端开发 Android开发
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
|
6月前
|
机器学习/深度学习 算法 网络架构
基于yolov2深度学习网络的单人口罩佩戴检测和人脸定位算法matlab仿真
摘要:该内容展示了一个基于YOLOv2的单人口罩佩戴检测和人脸定位算法的应用。使用MATLAB2022A,YOLOv2通过Darknet-19网络和锚框技术检测图像中的口罩佩戴情况。核心代码段展示了如何处理图像,检测人脸并标注口罩区域。程序会实时显示检测结果,等待一段时间以优化显示流畅性。