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无魔改


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

如有错误 还请海涵

共同进步


[完]

相关文章
|
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+付款码+合单)
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