吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7776|回复: 23
收起左侧

[Android 原创] APP逆向分析分享,参数加密,第3饭

  [复制链接]
wxyzyou 发表于 2020-3-25 15:27
本帖最后由 wxyzyou 于 2020-3-25 15:29 编辑

吃饭不香,无法下饭的朋友们,第3次下饭操作来了.

本次是APP的POST参数加密,逆向分析,还原
同样的,有图,有代码,不发APP

Fiddler抓到的包文

fd.jpg
发现一个奇怪的问题,PSOT的参数呢?这个是登录接口,正常会有账号密码参数的, POST数据长度 Content-Length:0 并且确实没有POST任何数据,是否很奇怪?

仔细看协议头部分,发现有个token字段,它的值比较长,那基本可以确认了,这里面的数据就是POST数据,
正常token字段,不都是用来校验,验证的吗?这里,程序员另辟蹊径,不按套路出牌,把数据放到协议头的token中,并且加密了.
首先我们仔细看这个token的结构,像是一个数组,更加确认了它不是一个正常token.

结构: [内容,内容]

data1.jpg
从token的数组内容上看,像是BASE64编码,我尝试了解码,解出来是乱码,果然没那么简单(这不废话吗,如果解码成功了,还分享个XX)

2话不说,开始APP反编译,文件结构分析,一系列操作
掏出ApkToolAid查壳,居然是360壳,这可有点难受了
不管它,直接反编译,看看成功否

jc.jpg
fby.jpg
成功了,看来运气不错
首先到反编译出来的目录下查看文件结构,喜闻乐见的 assets目录内有 index.android.bundle 文件,这个再第1饭里讲过了,ReactNative+NodeJS开发的APP标准特征
首先分析这个文件,看看有没有我们要的东西,没有时,再去查看反编译的安卓代码
把index.android.bundle改后缀名为 index.android.js,到自己习惯的JS代码编辑器里查看该文件,我用的vscode
搜索 token字样,搜索到300多个结果,一个个的看下去,定位到了名为 do_request的函数,看起来没错了
从函数的代码上分析 token来自参数 t ,
t 又从JSON对象转为字符串赋值给 0 ,
然后 this.fenduan(o)函数对 0 做了处理后返回给 c,
c 再次对象转字符串,赋值给了最终的 token
从上面的结果来看,t 和 c 就是关键了,首先要确定 t 传进来时,是什么样的内容,其次,分析this.fenduan 这个函数在干什么

js1.jpg

搜索 do_request 函数名,看看有哪些地方在调用,定位到 hhtc_request 函数,看到第2个参数  s 是一个标准的JSON对象赋值,并且是明文,那我们的重心就要放到 this.fenduan上去了
sj2.jpg

fenduan函数,分析一下这个函数在干什么
把参数 n 的内容做了个分割,
每80位长度,分割1次,赋值给了 s ,
然后把 s 加密,加密后的内容 push给了数组 0 ,最后返回0
那看来关键点就是  this.encrypt的加密方案了, this字段的意思是,当前JS文件,当前页面内,也就是说加密方案,就在当前的代码附近了


js3.jpg

代码附近上下找找,果然找到了 encrypt加密函数,和 decrypt解密函数
下面还有关键的  RSA加密公钥,私钥,看来没跑了,这个加密到这里,就完事了
BEGIN PUBLIC KEY  公钥
BEGIN PRIVATE KEY 私钥


rsa.png

正常来说,本地没有解密操作时,是不需要存放 私钥 的,只需要公钥加密即可
既然它有私钥,我们尝试对token解密一波,看看参数内容
自写解密工具,解密出来参数明文.

jm.jpg

易语言改的加密函数
e.jpg


fby.jpg

免费评分

参与人数 10威望 +1 吾爱币 +29 热心值 +7 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
张富华 + 1 热心回复!
gougou20 + 1 我很赞同!
神经兮兮 + 2 + 1 我很赞同!
小哥9527 + 1 我很赞同!
笑笑布丁 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
挥汗如雨 + 2 + 1 热心回复!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
UPC + 1 我很赞同!
wtujoxk + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

涛之雨 发表于 2020-3-26 08:38
虽然成功了,但是楼主直接带壳反编译是错误的。。。。
如果不是boundjs打包的。。。楼主肯定这波就无缘了。。。。
和pc的一样,脱壳是第一位的。。。。
特别是数字壳楼主如果不是想分析分析的post而是想改代码。肯定都是不行的。。。
(一般数字壳都是hook签名过校验的,能直接脱的大佬很少。。。
wtujoxk 发表于 2020-3-25 15:48
我看到token的第一眼就想可能是RSA,后面公私钥在一起,捡到宝了!,谢谢分享!
柒汐 发表于 2020-3-25 15:53
w456789 发表于 2020-3-25 16:20
感谢楼主 学到了不少
Dream_Peng 发表于 2020-3-25 16:25
楼主 如果没有私钥 你怎么玩呢?
zncliving 发表于 2020-3-25 16:28
学习了  非常感谢
thysut 发表于 2020-3-25 16:29
学习了  非常感谢
hackgsl 发表于 2020-3-25 16:31
厉害了。
 楼主| wxyzyou 发表于 2020-3-25 16:32
Dream_Peng 发表于 2020-3-25 16:25
楼主 如果没有私钥 你怎么玩呢?

本身就不需要私钥,只需要公钥加密提交参数就行了,
它提供了私钥,我们也只是解密一下看看参数内容而已,没实际用途
Dream_Peng 发表于 2020-3-25 16:37
wxyzyou 发表于 2020-3-25 16:32
本身就不需要私钥,只需要公钥加密提交参数就行了,
它提供了私钥,我们也只是解密一下看看参数内容而已,没 ...

哦,也对。  
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表