首页
论坛
课程
招聘
[原创] 小红书 6.89.0.1版本 shield unidbg
2021-8-25 18:10 9534

[原创] 小红书 6.89.0.1版本 shield unidbg

2021-8-25 18:10
9534

本文章仅供学习,如有侵权,请告知删除

 

就在刚刚1629879304,用小红书练习unidbg成功了,解处了shield,趁着现在记忆力还好,赶紧写下,要不然肯定会忘了。这里严重感谢龙哥(你要是不知道龙哥是谁,可以加我我告诉你)

 

首先呢,shield我就默认大家都知道是什么,就是小红书请求中header的一个加密字段,具体生成位置在(位置怎么找网上都有,so用的libshield.so,本篇重点在unidbg使用,其实找这个位置是最难的):

1
2
com.xingin.shield.http.XhsHttpInterceptor的这个native方法
public native Response intercept(Interceptor.Chain chain, long j2) throws IOException;

既然知道native方法了,那我们就开始用unidbg开发把(补环境吧),首先把最基本的unidbg框架搭建以下(别告诉我你不会搭建,我都把注释写好了,什么意思都告诉你了)这就是一个最基础的模板,开搞之前先把这个弄好
图片描述
下面开始正式调用这个native函数了

1
intercept(Interceptor.Chain chain, long j2)

它有两个参数,第一个是Interceptor.Chain对象,我们就传初始化一个对象传进取(其实我感觉应该hook一下看这个对象有没有什么特殊的),第二参数一个long字段,这个字段我们通过jadx反编译代码后,可以看出是另外一个native方法的返回值

1
public native long initialize(String str);

图片描述
而这个方法需要一个字符串参数,这个参数我们通过jadx找一下调用位置,可以看到是"main"(这个简单就不截图了)。
到目前为之我们需要的东西都有了,把调用代码逻辑写上,然后只要运行代码,把报错的环境给补上就可以了。在调用目标函数之前,需要调用一个初始化native函数,如果没有可以不调,但是有的话必须调用。
具体步骤:

1:调用初始化native函数(调用的时候把报错的环境补完)
2:调用public native long initialize(String str);方法(调用的时候吧报错的环境补完)
3:调用最后的目标函数intercept(Interceptor.Chain chain, long j2)(调用的时候吧报错的环境补完)
最后就可以了,注意一个一个来,初始化native环境补完了,就把调用第二个函数的逻辑写上继续运行,不要一次性把所有调用逻辑写完,这样很可能出问题

 

先把初始化函数的代码逻辑写上
图片描述
运行一下
图片描述
报错了,看到这个错误一定要笑出来(内心(^_^)),因为这个错误最好处理了,就是我们说的补环境,我解释下什么意思啊这个错误:就是说java/nio/charset/Charset这个类实例调用defaultCharset()方法,返回java/nio/charset/Charset,没找到处理的逻辑,因为unidbg不可能把所有的情况都给我们写好,如果遇到这种比较个性的话情况,我们就自己写处理逻辑,我们点击第一个错误的位置看看
图片描述
我们复制这个函数到我们的类,自己重写一下,如果遇到这个signatur,因该怎么做
图片描述
现在你们可能疑问,为什么这样补,为什么要return这个,而不是return别的
下面这个图来解释一下
图片描述
补好后,继续点运行
图片描述
这个一看是android文件的某个类的某个参数,网上查了下,在这个地方
图片描述
继续运行,继续看
图片描述

这次要某个类的sDeviceId,这里是重点,刚因为jnitrace分析错误导致shield短了,我的信誉在群里全毁了,又退回到傻傻的初学者职位了,经历了社会性死亡瞬间。

jnitrace怎么把日志那出来就不说了,直接上分析的路径图,关键点就是保障TID一样,因为有多线程,如果分析到其他线程就错了,还有就是按顺序来,别刚刚在1800行,找下一个位置找到了1600行,得往下找,别往上找。
图片描述
图片描述
图片描述
图片描述
找到了这个字符串,就是我们的sDevicesid啦,把他返回就可以了
就这样往复几十次,把所有报错修复了就可以了,是不是很简单?
我就不把所有补的都截图了,因为太多了,大多数原理都一样,看返回值是什么,按照要求弄就可以了。
图片描述
初始化native这个报错全都补完后,再把调用获取第二个参数的方法逻辑写上,继续运行,继续补环境,接着是目标函数,知道最终不报错了。
图片描述
最终你会在这里得到shield值,因为shield值header的一个参数,所以补环境的时候,你会还想这个地方可能是shield生产的位置,打印一下确认就是了
图片描述
图片描述

以上就是小红书shield,用unidbg的调用方式。你可能会决定这样太简单了,是的,就是很简单。
只要你会用工具,你就超越了绝大多数猴子--出自《2001太空漫游》
-
有兴趣的加个微信呦,带你认识大佬,带你赶龙超肉
wechat:zhoutianxing_
龙哥星球:https://t.zsxq.com/NVVrBYJ
图片描述


[注意] 欢迎加入看雪团队!base上海,招聘CTF安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

最后于 2021-10-21 11:55 被贪吃虫编辑 ,原因: 细节调整
收藏
点赞3
打赏
分享
最新回复 (6)
雪    币: 124
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
陈世已忘 活跃值 2021-8-26 23:34
2
0

最新版7.6版本shield zhao我 eGhzIGtzIG**********************IA== base64解码以后看

最后于 2021-8-27 09:42 被kanxue编辑 ,原因: 广告
雪    币: 106
活跃值: 活跃值 (665)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
贪吃虫 活跃值 2021-8-27 08:38
3
0
陈世已忘 最新版7.6版本shield zhao我 eG******************************A= ...

以学习为目的的可以加我进群和龙哥学习最新版的解密方法呀(little wink)

最后于 2021-8-27 09:42 被kanxue编辑 ,原因:
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
sicssss 活跃值 2021-8-27 09:32
4
0
贪吃虫 以学习为目的的可以加我进群和龙哥学习最新版的解密方法呀(little wink)
已经在群里了,等新版解密方法
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_我住隔壁我姓张 活跃值 2021-9-8 15:00
5
0

最后于 2021-9-8 15:20 被wx_我住隔壁我姓张编辑 ,原因:
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_eroobxld 活跃值 2021-9-12 16:42
6
0
sicssss 已经在群里了,等新版解密方法
怎么加群
雪    币: 106
活跃值: 活跃值 (665)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
贪吃虫 活跃值 2021-9-12 21:11
7
0
mb_eroobxld 怎么加群
可以加我微信(文章底部)拉你加群呦(wink)
游客
登录 | 注册 方可回帖
返回