04|某听书App Signature分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 04|某听书App Signature分析
样本:aHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvbkFBcUhtcGFBczg=

观前提示:

本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

0x1 抓包

打开抓包软件, 发现app显示服务器连接失败,关闭抓包又正常了

基本可以考虑是证书验证了。

绕过方法网上很多,这里就不详细介绍。

绕过证书验证后就能正常抓包了

本文只分析signature这个字段的加密


0x2 加密位置分析

根据抓包信息搜索关键字很快就能找到关键点。

双击进来并找用例

跳转过来后就能看到signature的加密处了

进入LoginRequest.a方法

再继续进入b方法

可以看到这里就是加密处

进入a2.a方法后可以看到读取了map的内容拼接成字符串放进OvhrqNJCPF方法进行加密

进入OvhrqNJCPF方法

能看到是一个native方法,加载的是liblogin_encrypt.so


0x3 So分析

打开IDA,打开so文件。

搜Java可以看到出现了几个方法,其中也包含了本次分析的OvhrqNJCPF。

双击进来

发现需要等待挺久的,这是因为代码被混淆过了,体积膨胀了很多,加载需要点时间。

加载后能看到一堆框框,看到这个真是令人悲伤,又要爆肝了。

Tab看看伪代码发现字符串也被混淆了,并且可以使用Frida 一个一个dump数据。

只需要取so的地址再加上偏移地址就可以获取到正常的字符串了。

但是,字符串这么多需要挺大耐心的。

如下我曾经的分析记录

当然,还原字符串的方法不止这一个。

后面,我使用IDA动态调试dump出数据并配合010 Editor来替换数据,同样达成字符串还原的效果。(这里我比较懒,我就不详细说明流程了)

参考文章:
https://blog.csdn.net/wang_624/article/details/115066838
https://www.bilibili.com/video/BV1pa411w7Gz?from=search&seid=925396145472135392&spm_id_from=333.337.0.0

dump脚本

static main(void){
auto fp,dexAddress,end,size;
dexAddress=0xC5919000;
end=0xC591B000;
fp=fopen("I:\\liblogin_encrypt.so","wb");
for(;dexAddress<end;dexAddress++)
fputc(Byte(dexAddress),fp);
}

以下附上替换过程以及效果

已经基本能够帮助分析了。



回到代码 继续分析这个native方法干了啥。

还是老规矩,先改改JNIENV,改改变量名,辅助分析。

改完看到一堆控制流 在虚假块和真实块中间反复横跳,要咋搞呢?

我这里用一个比较讨巧的方法,找变量的调用,但这个就要你对整个流程的走向有一个把握了。

选中str变量,按X键,找调用

就一个跳过去 接着再找v128的调用

这里看到有好几个调用处,那就需要分析一下哪个才是要看的了。

例如上图有取长度进行计算的 有字符串拼接的 那优先选择字符串拼接的看看

如果错误了再反回来继续看别处调用。

过来之后可以看到这里还是在拼接内容,然后给了v113

还是同样找调用

比较符合下一步操作的就上面的CallObjectMethod那个方法了

照着这个方法看下来 就可以比较好的分析整个流程了,但是并不是所有情况都适合这个偷鸡的方法,是因为我选的这个样本比较简单。

从上图中能看到这个so方法还是最终会调回去Java层的方法的。


例如从中间就看到了

toUpperCase

java/lang/StringBuilder

append

java/security/MessageDigest(熟悉的朋友应该知道这是什么东西吧)

再往下看

还看到了SHA-1 update digest 这几个关键字眼。

基本可以判断这个so方法走的就是

  1. 拼接字符串
  2. 字符串转大写
  3. 调java/security/MessageDigest的SHA-1方法

那大概流程就分析清楚了啦

大家只需要去网上下载一个MessageDigest的hook脚本就行了



感谢各位大佬观看

如有错误 还请海涵

共同进步


[完]



相关文章
|
2月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
3月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
3月前
|
C# 开发工具
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
【Azure 应用服务】Azure Function App使用SendGrid发送邮件遇见异常消息The operation was canceled,分析源码渐入最源端
|
3月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
5月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
483 1
|
5月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
6月前
|
数据采集 小程序 网络安全
云擎技术---分析工信部APP备案的“传闻”
APP备案并非新事物,自2005年起已有非经营性互联网信息服务备案制度。备案针对的是网站主办者,而非用户,不涉及个人用户网络访问。网络接入服务提供者包括ISP和IDC,不限于三大运营商。通知要求不为未备案网站提供接入,但不影响国外软件使用。个人开发者不能涉及经营性内容,备案审核时长1-20个工作日。境内服务器和国内应用商店需备案,境外则无需。手机厂商不会开启白名单制,仅实行黑名单制。APP备案与民营经济发展壮大意见不冲突,工信部有权颁布相关规定。该政策不存在逐步试探底线情况,所有解读均有法律依据。
121 3
云擎技术---分析工信部APP备案的“传闻”
|
6月前
|
移动开发 JavaScript 前端开发
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
56 0
|
6月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
111 4