App逆向百例|03|某游戏app sign分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: App逆向百例|03|某游戏app sign分析
样本:aHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvTmgxazNqbjU1WXM=

观前提示:

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

0x1 加密位置分析

打开app 发现无法连接服务器 一般认为是证书验证了 随便网上找个hook脚本就行了 或者用justtrustme也行

先抓包找到log-in.html

看post data有password和sign是被加密的


打开java-gui找

全局搜索一下log-in.html

只有一个结果 双击跳转过去

双击进来

能看到password的加密是调用native方法

往下滑可以看到

可以看到是加载了NativeHelper 也就是libNativeHelper.so

这就是password的加密位置了


还有一个sign参数

回到上层界面 找到buildRequestParams

进入super.buildRequestParams方法

进来之后 再次进入super.buildRequestParams

从这里就能看到sign的加密位置了

进入AppNativeHelper.getServerApi方法


0x2 加密逻辑分析

ida打开libNativeHelper.so 先去导出表看看导出方法有没有含有JAVA开头的

没有就需要考虑动态注册了

找到JNI_OnLoad

进入off_1C044

这里就可以看到动态注册的函数名了 本篇文章 我就只以getServerApi作为示例

双击下面的sub_12794进入getServerApi 如果是loc开头的 则需要Edit->Functions->Create function 或者直接按P 创建


进入到sub_12794后就可以开始分析了 同时也可以通过rename和convert to struct

进到sub_125B0

这里我名字已经改好了 可以看到salt是通过取dword_16954来计算写进内存的 最后传入sub_4DF0

进入sub_4DF0 同样我已经改好变量名和有分析注释了

整体流程还是可以直观看出来的 这里的大概意思就是 开内存 写数据

接着就看这俩个方法了

进入sub_4538

熟悉的码表 不懂也可以百度搜一下这几个数值 是md5没错了

进入sub_4564 可以看到全是计算操作

再进入其中的一个sub_45F4

得了 不用继续看了 md5坐实 静态分析就先到此结束 上frida


0x3 hook

上面分析可知 这个so是一个简单的动态注册

需要hook的是sub_4DF0这个方法 写法就是

var libNativeHelper=Module.findBaseAddress("libNativeHelper.so");
var sub_4DF0=libNativeHelper.add(0x4DF0+1);

hook代码网上很多 基本可以照抄学习

从代码可以知

sub_4DF0(env, str, salt);

str是从java传入的 salt是so里面计算的

所以直接console的话是乱码的 需要转换一下

var String=Java.use('java.lang.String')
console.log('str->',Java.cast(args[1],String))
console.log('key->',args[2].readCString())

写好hook代码就该测试一下啦

输出结果

str-> 1643530355352531084076641lXIjMLZ7qXY=123
salt-> ef2vx#sf*^FlklSD*9sdf(m$&qw%d7po

分割一下就是

1643530355 dateline
35253108407664 deviceIdentifier
1 info
lXIjMLZ7qXY= password
123 username

手动拼接 md5加密一下

可以看到 结果一模一样 md5无魔改


完美撒花 感谢各位大佬观看

如有错误 还请海涵

共同进步


[完]

相关文章
|
6天前
|
存储 安全 算法
什么是秒合约?竞猜游戏交易所app系统开发规则介绍
秒合约是一种基于区块链技术的超短期衍生品合约,交易周期以秒为单位。它通过智能合约实现交易的自动化和去信任化,优化执行流程,提高交易速度和效率。秒合约适合高风险投机者,收益和风险固定,不使用杠杆。此外,竞猜游戏交易所app系统也涉及快速交易和投机,需确保安全、稳定及合规运营。
|
8天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
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,只能通过内网访问,无法从公网访问的情况下)
|
4月前
|
存储 前端开发 安全
盲盒app游戏系统开发参考版/需求分析/规则玩法
开发盲盒App游戏系统的流程和细节可能因具体需求和技术实现而有所不同。以下是一般性的开发流程和相关细节,供您参考:
|
5月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
537 1
|
5月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取

热门文章

最新文章