App之算法分析

admin 2025年7月7日20:03:08评论1 views字数 2268阅读7分33秒阅读模式

一、前言

1.1概述

本文章仅做学习交流,请勿商业用途!如有侵权,请及时联系处理!感谢理解

1.2涉及算法及so文件

1.最频繁的是请求体和响应体的加密解密:libdusanwa.so的achilles和heracles方法

2.核心的ltk/ltn/rtk/lf...等参数:libszstone.so

3.核心的VMP中llibGameVMP.so中的IL等方法

4.还有像newSign/edk/sck等一系列的参数加密

5.此外还有libducloudpix.so中的一些列算法

1.3比较重要的一些请求

1.xxx/call 注册sdk/sm

2.xxx/cold 注册androidId

3.xxx/getVisitorUserId 获取X_Auth_Token

1.4其他一些相关的问题

1.ltk/skc 又分长和段:两者又有什么关联

2.sks代表算法类型:是否可以绕过加密

3.app中还会涉及到js的滑块问题:so中也有加解密

1.5分析目的

本次目的,通过最直接的方法还原请求中的加密和解密算法(unidbg模拟构造/trace日志结合ida综合分析还原算法)。其次是网上关于此app的一些研究比较多,但是相对核心的例如VMP/风控等的一些分析比较少,希望提高各位大佬的积极性,一起分析学习进步!

二、算法分析

2.1方法入口及参数分析

App之算法分析

1.可以发现是在IL方法(vmp)反射调用到achilles加密的

2.参数1是请求体明文

3.参数2是skc

4.参数3是请求次数(个人理解,未认证)

5.参数4是时间戳

6.返回值的格式可以分析其中包括了两部分:长skc和加密请求体

2.2ida静态分析及unidbg构造

App之算法分析

打开so文件,发现achilles方法无法直接识别,so文件加密,这就不深入研究如何解密的,直接dump so,可使用frida 或者 unidbg进行,无非就是当改so运行时,若实现了so解密,直接dump下内存中的so的数据。

App之算法分析

分析dump下来的文件,找到方法入口,发现ollvm混淆,直接使用D-810工具进行反混淆。

App之算法分析

构造好unidbg运行获取trace日志,这个基本没什么难度

2.3unidbg返回结果分析

App之算法分析

1.第一部分是长的skc+校验,第二部分则是base64存储了重要的uuid(和加密的key息息相关,当然后续最新版本应该是存在变动),第三部分则是数据加密内容。

2.未分析过该算法,肯定是不知道每部分的内容,但是明显的三部分划分还是比较容易的。

3.接下来就围绕这三部分如何产生的进行倒推法分析,当然该方法更适合初学者,有经验的大佬们会结合ida整体过一遍代码,然后挑选可疑方法或者代码,切入分析。我在有些so的算法分析中也遇到过,直接trace分析,可能误入一些简单魔改或者重写的算法中,圈子会绕的更大,但是ida上可能会更明了。

2.4第一部分-校验分析

1.本文不对skc进行深入分析,该参数特别敏感,感兴趣的大佬可以深入探讨

2.所以直接从第一部分的校验开始分析:unidbg写入日志搜索定位那里赋值

App之算法分析

1.定位到下图方法,一看就非常熟悉,并且结合32位长度和固定常量值,可以知道这里就是MD5(算法)

2.根据MD5算法源码可知道,通常在MD5算法前有个方法是做MD5加密数据初始化的(加密数据放置指定位置)

App之算法分析

App之算法分析

App之算法分析

根据unidbg调试查看参数发现前部分和第三部分数据加密内容一致,而后跟着0x20字节的内容(其实是uuid的md5和uuid的计算后的值进行拼接后的值)。

App之算法分析

2.5揭开uuid和0x20字节内容的关系

1.根据0x20字节内容,通过写入trace查找,定位到q0赋值,找到x10寄存器值,查看哪里赋值。

2.定位到如下图,用两个0x10长度的数据进行交叉写入。

App之算法分析

App之算法分析

需要注意的点是交叉插入的顺序,那么两个数的长度都是0x10,如果假设都是MD5的产物,上面我们已经知道MD5算法,跟一下结果,看有没有用。

正好可以发现uuid的md5是其中的一部分,而剩下0x10和uuid对比一下,发现就是uuid。

App之算法分析

2.6解密第三部分数据加解密

1.通过地址赋值,定位到在memcpy处进行复制,在定位到主体的方法调用。

2.unidbg验证,en_fun方法就是数据加密算法,参数1就是明文body,参数3则作为加密结果返回。

App之算法分析

App之算法分析

1.会发现,到了这一步,思路就很明确了。我最开始猜测是魔改的des算法,是因为8字节进行计算,第一反应联想的就是DES,然后进入到en加密方法看也不算复杂就直接扣了。

2.这里在对key和iv做一个分析,或者说我当时理解的"表"进行来源分析(我最开始将此算法定位成key和iv融入某表的类似查表法算法),上面截图中也就是v18的来源。

3.如下图,跟踪到en中的v18很简单,算法就几行代码,继续查看en_init的参数1的来源。

4.根据unidbg的trace日志,可以定位到如下的方法,去混淆好代码一目了然。

App之算法分析

App之算法分析

三、完结

1.整体来说该算法分析的比较简单,在于一个思路以及后续如何知道这个疑似DES算法究竟是什么算法,当然直接扣该算法的代价也很小,毕竟混淆力度都不大。

2.也想做一个延续,毕竟该app存在着大量不同的参数,涉及多个so以及不同的算法。目测网上相关资料不多。大家也可以一起探讨交流。

App之算法分析

看雪ID:我是小趴菜

https://bbs.kanxue.com/user-home-994949.htm

*本文为看雪论坛优秀文章,由 我是小趴菜原创,转载请注明来自看雪社区
App之算法分析
议题征集中!看雪·第九届安全开发者峰会

#

原文始发于微信公众号(看雪学苑):App之算法分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月7日20:03:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   App之算法分析http://cn-sec.com/archives/4229019.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息