UJN-Lib-Seat-API icon indicating copy to clipboard operation
UJN-Lib-Seat-API copied to clipboard

新版本APP逆向讨论issue

Open GhostLee opened this issue 5 years ago • 37 comments

新版本的APP使用了Flutter进行开发,目前我找到的信息如下:

  • 无法被抓包,使用了自签证书,程序内部可能验证证书信息
  • java层只有一个MainActivity,所有逻辑代码均被编译为AOT代码
  • dart文件均被打包进cn.com.libseatapp\assets 目录下的isolate_snapshot_dataisolate_snapshot_instrvm_snapshot_datavm_snapshot_instr
  • 该文件可以使用IDA 以32位arm平台类型打开
  • 上述带有instr的文件不清楚作用,**_snapshot_data包含执行逻辑
  • vm_snapshot_data可能是Dart虚拟机,我们需要的代码逻辑在isolate_snapshot_data
  • 密钥可能是leos3cr3t
  • 加密时调用了uuid包uuid.V1()方法

本人时间精力有限,请有能力实现的朋友一起进行逆向,将分析结果添加到该issue下.

GhostLee avatar May 07 '19 01:05 GhostLee

感谢提供信息,采用透明代理的方式也无法抓包?

hephyr avatar May 07 '19 01:05 hephyr

感谢提供信息,采用透明代理的方式也无法抓包?

没做测试,😂你要是有空的话做一下,麻烦贴上抓包结果

GhostLee avatar May 07 '19 02:05 GhostLee

新版 APP 添加了 SSL Pinning 来防止抓包,破解后抓包发现后台接口并没有发生什么变化。

hephyr avatar May 07 '19 06:05 hephyr

新版 APP 添加了 SSL Pinning 来防止抓包,破解后抓包发现后台接口并没有发生什么变化。

API版本没有变更,而且我在逆向APK时发现了检查违约记录的API。 检查参数或请求头你有没有发现有什么变化? -57897d06a5bb11bf.png

GhostLee avatar May 07 '19 08:05 GhostLee

等明天旧接口无法使用后再弄

hephyr avatar May 07 '19 08:05 hephyr

HTTP 头部多了 x-hmac-request-key x-request-id x-request-date,应该就是进行了签名认证。

hephyr avatar May 07 '19 08:05 hephyr

之前还在嘲笑,这么垃圾连个加密都没有,这下倒好了。最近没空搞这个呀!

xsh857104167 avatar May 07 '19 08:05 xsh857104167

HTTP 头部多了 x-hmac-request-key x-request-id x-request-date,应该就是进行了签名认证。

能不能发我一下你抓到的明文结果,我方便对比查源代码,尽可能要两到三个api的请求过程,麻烦了

GhostLee avatar May 07 '19 08:05 GhostLee

关于https校验的相关信息可以看这里Dio证书校验

GhostLee avatar May 07 '19 08:05 GhostLee

抓包还是挺容易的吧,电脑开个Android模拟器,然后上Wireshark,抓到的都是TLS包,在8443端口,登录过程只访问了一次HTTP但是404了

yukiiiteru avatar May 07 '19 14:05 yukiiiteru

抓包还是挺容易的吧,电脑开个Android模拟器,然后上Wireshark,抓到的都是TLS包,在8443端口,登录过程只访问了一次HTTP但是404了

所以明文请求体解出来了吗

GhostLee avatar May 07 '19 14:05 GhostLee

capture.zip

hephyr avatar May 07 '19 14:05 hephyr

抓包还是挺容易的吧,电脑开个Android模拟器,然后上Wireshark,抓到的都是TLS包,在8443端口,登录过程只访问了一次HTTP但是404了

签名不对,客户端会拒绝响应

hephyr avatar May 07 '19 14:05 hephyr

请求没解出来,但是看你们说接口没变,如果是这样的话我觉得只要搞到证书的话,直接在原来代码上套一层加密就能用了吧

yukiiiteru avatar May 07 '19 15:05 yukiiiteru

别搞了,dart产物是arm代码,逻辑短时间弄不出来,剩下的只能靠猜了

GhostLee avatar May 07 '19 18:05 GhostLee

抓包已经解决

API确实没啥变化,响应包带了个400,不知道是啥问题,八成是我写的BUG。

hafrans avatar May 07 '19 21:05 hafrans

其他的都不重要,重要的是那个hmac

hafrans avatar May 07 '19 22:05 hafrans

官方说微信端预约不受影响,是不是可以在微信上还可以?

FIlN avatar May 08 '19 00:05 FIlN

微信预约是在API的外层套了个小程序

GhostLee avatar May 08 '19 00:05 GhostLee

微信端也已经不行了。。

FIlN avatar May 08 '19 07:05 FIlN

怎么这里没动静了,你们搞的咋样了兄弟们

FIlN avatar May 11 '19 04:05 FIlN

https://www.52pojie.cn/forum.php?mod=viewthread&tid=838967&page=1#pid23155977

这个逆向我看着挺像的...有没有参考价值

这个是Android的逆向,如果是android的逆向那好搞了,不幸的是这个APP是flutter做的,用的dart,目前市面上尚无这个语言的decompiler

tensorflowerx avatar May 13 '19 12:05 tensorflowerx

用一个废旧手机部署上,运行在内网就行。只是每天都要充电就不是很方便。另外这个公司三次APP开发换了两个框架,像是临时搭起来的队伍的感觉…

GhostLee avatar May 20 '19 03:05 GhostLee

进一步测试发现签到功能仍然可以使用

hephyr avatar May 23 '19 08:05 hephyr

进一步测试发现签到功能仍然可以使用

需要内网吗?

kuiv587 avatar May 23 '19 08:05 kuiv587

进一步测试发现签到功能仍然可以使用

需要内网吗?

不需要。

hafrans avatar May 23 '19 08:05 hafrans

目前来看项目已经恢复到和以前一样可用的状态了。

hephyr avatar May 23 '19 08:05 hephyr

感谢各位大佬的努力🙏,小弟发现在服务器端运行会出现“由于连接方在一段时间没有正确答复或连接”,是因为服务器的设置原因吗

kuiv587 avatar May 23 '19 08:05 kuiv587

感谢各位大佬的努力🙏,小弟发现在服务器端运行会出现“由于连接方在一段时间没有正确答复或连接”,是因为服务器的设置原因吗

另开 issue,具体操作描述详细点。

hephyr avatar May 23 '19 08:05 hephyr

失效了

GhostLee avatar May 27 '19 00:05 GhostLee

有思路请到电报里讨论,hmac生成出来的是64位hex(截断个锤子 sha256生成出来能不是64位的嘛),应届考生求你们不要再大大方方的公布了好嘛???

GhostLee avatar May 27 '19 00:05 GhostLee

你倒是给个tg的群连接啊

woqkjda avatar May 27 '19 08:05 woqkjda

https://t.me/joinchat/NV8bIhYKeF1BnOE6VUfNhQ

GhostLee avatar May 27 '19 08:05 GhostLee

签到的FF挂了。

hafrans avatar May 28 '19 04:05 hafrans

抓包抓出来的也也没有用,利用包数据进行在次请求也是invalid request,核心问题就是要知道签名的生成逻辑是什么

Optimusruan avatar May 31 '19 00:05 Optimusruan

老哥,电报群再发一下,不存在了咋

kaiyuner avatar Jun 03 '19 04:06 kaiyuner

https://t.me/joinchat/NV8bIhYKeF2Zdz5jxP26wQ

GhostLee avatar Jun 04 '19 10:06 GhostLee