【app逆向】某动app端逆向&小程序端逆向实现接口购票

【声明】

        本文仅供学习用途,不接受商业合作,本代码不再做开源       文字为本人NORTH原创,若转载,请备注来源。因为之前网页端会出现app版本问题,这次直接安装最新版5.5.9!

【目录】

1.绕过代理检测与frida检测

2.逆向接口&算法分析

3.验证成果

一.绕过代理检测与frida检测

         通过开启代理,可以发现x动app是做了代理检测,通过开启fiddler抓包是抓不了的。

【图片】

看过几篇文章所提到的解决办法,都是通过frida hook找到代理检测位置,通过hook 检测方法im【方法名】进行绕过,但是我觉得太繁琐了,第一步开始就上神器,有点大题小做了。

我的办法是通过编写代理脚本,抓取通过andirod发出去的请求包,得到返回response,在其返回的途中截获TCP流量,我们都知道HTTP连接的时候,tcp会经过三次握手,TCP的三次握手(Three-Way Handshake)是建立TCP连接的一种过程

过程1:客户端服务器发送一个SYN(同步)报文段,表示希望建立连接。这个报文中包含一个初始序列号(ISN)。
过程2:SYN-ACK 这个是通过服务端返回客户端的,可以看到确认号和自己的序列号。
在服务器向客户端返回确认号时,我会伪装成中间人截获流量。之所以选择在这里截获,是因为当数据到达应用层的HTTP请求时,已经被app内部的某个类监测过了。

因此我的思路是:

通过截获流量包,进行转发到抓包工具。

因此原理弄明白了,直接编写代理转发流量机制的脚本,进行监听转发。效果如下:

这样,我们可以看到fiddler,能够成功抓到包。下面我们就来分析吧。

二.逆向接口&算法

首先,下单的话,我们需要登录,看过我之前的网页端的文章,都知道秀动它加密的地方就那几处。通过分析headers,我们可以知道:

首先,请求头里面的crisign参数,这个参数不用说的,每个请求头都是用这个参数去请求。这时候光分析不行了,现在得上科技:

1.jadx反编译
        不用看,这个app一定是被加固了,直接拖到jadx反编译可能不行,我们得解决这个问题
解决这个问题,我们得知道问题是什么。我们应该先看他是被什么加固的。通过市面上的软件分析
里面是:某讯的加固方式(函数抽取加固)。(这里不详细说,网上很多教程)

既然知道是什么加固,那我们就想办法脱壳。

如何脱壳呢?我这里采用的方法是,通过过修改apk的dex文件,进行修改dex文件的签名来解决这个问题,目前,有人提出使用现在fidx的方式,或者FART工具进行脱壳,但是我觉得太麻烦了,我还是喜欢使用原生的办法(你在哪里加固,我就在哪里给你解除)。

因为apk就是个压缩包,直接解压,您就可以看到里面的打包文件。来吧,一起看看里面有些什么东西:

我们发现里面dex文件的话,就那几个,我们可以打开进行分析,分析他是从哪里进行加固函数,在此,我想提示下,因为在apk启动时候,会加载
Application类:当APK首次启动时,系统会创建Application对象,并调用其onCreate()方法。这是应用程序的入口点,通常在这里进行全局初始化

Activity组件:如果APK包含Activity,系统会加载指定的Activity,并调用其onCreate()onStart()onResume()等生命周期方法。
通过我得分析:

  • Application类的onCreate():在这个阶段,秀动执行初始化操作,包括加载加固库或进行自定义的安全检查。
  • 秀动使用的动态加载的形式进行加固

于是,我找到该dex进行修改其中的函数逻辑,在加载时候防止改代码的执行。

具体的方式不公布!

接下来,通过我的修改,我进行了jadx的脱壳:

好了,现在重点分析crisign参数,因为你拿到这个参数了,基本上就逆向成功了。

我直接告诉大家加密位置

hook结果:


就在com.showstart.net.NetEngine类中的signature_v3函数!!!

我们发现这个参数是通过.so文件调用内部的函数。需要注意的是,.so文件(共享对象文件)是Linux系统中的动态链接库,通常用于存放可由多个程序共享的代码和数据。

逆向它可能需要一点反编译基础。

这里我直接告诉大家加密函数的位置:上神器:ida分析汇编代码


1.通过我的分析,已经还原了其算法,但是这个难度是很大,这个也花费我很多时间(暂不公布)。

2.因此我提供的第二种方式:
通过搭建linux arm平台将其放在arm环境下运行。我在本机通过wsl 下载了ubuntu虚拟环境。通过桥接宿主机的网络,接收宿主机网络的转发包。

我们知道他之所以能够调用so文件就是因为其在linux-arm环境下实现的调用,那就将计就计,我再本地也搭建个linux-arm环境baolu端口,通过RPC方式实现自由调用。

1.先拉取linux-arm64镜像;

2.搭建时候把自己的rpc脚本目录映射到docker容器
至于我为什么选择用docker,因为liunx-arm搭建在windows 很恶心的做法。

三.验证

我们看看效果
【成功案例】

哈哈 不出所料成功了!果然有想法就要去尝试。

好了,现在进行下一个恶心的加密,q的解密算法的解密
通过jadx的分析,我们可以知道其加密函数很容易被找到,同样的方法,通过RPC脚本,进行暴漏服务。这里不多说,感兴趣的可以自己去试试。


最后来看下效果验证下吧。
先随便选一个演出发送请求 订单id是一样的

最后试试go协程调度后的抢票 

这里涉及go脚本的编写打印的日志,不公示其他参数。

三.小程序端

因为小程序端并比较简单,是熟悉的js调试,这个就简单的说下

1.首先开启devtools调试小程序的工具(网上有教程)

这里就不浪费口舌了 这种js逆向和之前网页的一模一样。。。

【写在最后】

大家遇到什么问题可以在评论区留言,我看到会尽快回复。该教程未公布任何代码信息...本文未有涉违规的信息,请官方手下留情!!!!

希望大家点赞支持下,后续继续更其他的apk逆向。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NorthGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值