xhs某书shield逆向破解(一) | 寻找Native函数

shield是xhs请求header中的一个加密参数,具体算法是在so中计算的,so文件是libshield.so。我这边主要就讲一下如何利用unidbg调用so生成shield参数。因篇幅可能较长,这篇文章就讲下如何找到Native函数和函数所对应的偏移位置。

一、寻找Native函数

老规矩,首先反编译apk后用JD-GUI工具打开(也可使用jadx等工具),直接搜索shield,结果意料之中,在java层没搜到什么有用的信息,算法大概率放在了so层。

那我们只能在so层中寻找突破口,这里推荐一位大佬开发的工具frida_hook_libart(项目地址:https://github.com/lasting-yang/frida_hook_libart),它是把在libart.so中的常用函数都进行了hook。

总共有三个hook文件hook_RegisterNatives.js、hook_art.js、hook_artmethod.js,我们先使用这个hook_art。

首先在手机上打开frida-server服务,电脑终端运行命令:“frida -U –no-pause -f com.xingin.xhs -l hook_art.js”。

xhs某书shield逆向破解(一)

然后找啊找,会发现在NewStringUTF这个函数中,出现了shield结果。这里所对应的so文件是libshield.so 。

然后运行命令:“frida -U –no-pause -f com.xingin.xhs -l hook_RegisterNatives.js”,看一下在libshield里动态注册了哪些Native函数。

xhs某书shield逆向破解(一)

可以看到,在so中,注册了initializeNative、intercept、initialize这几个函数。

然后在java层找下,可以找到在“com.xingin.shield.http.XhsHttpInterceptor”这个类下,如下图:

xhs某书shield逆向破解(一)

二、寻找Native函数的偏移位置

方法一:

上文有使用Frida hook了so的RegisterNatives函数,hook到的同时,也打印出了函数的offset偏移位置。

xhs某书shield逆向破解(一)

initializeNative函数的偏移位为:0x6c11d

intercept函数的偏移位为:0x6b9e9

initialize函数的偏移位为:0x6b801

方法二:

首先使用ida打开libshield.so文件,使用shift+F12打开String window窗口。

在窗口中直接搜索刚刚找到的Native函数,如intercept:

xhs某书shield逆向破解(一)

然后点进去,就能找到这里

xhs某书shield逆向破解(一)

intercept函数的偏移位就是0x6b9e9。

方法三:

同样使用ida打开libshield.so文件,在Exports窗口中找到JNI_OnLoad(动态注册的函数都会在JNI_OnLoad中进行注册),然后进去F5反汇编下。

xhs某书shield逆向破解(一)

然后可以看到sub_9FA0这个函数,点进去。

xhs某书shield逆向破解(一)

这边有很多函数,逐个进行查看,最终找到sub_6B360这个地方,点进去。

xhs某书shield逆向破解(一)

可以看到java层的“com.xingin.shield.http.XhsHttpInterceptor”这个类,在点进去,就到了刚刚方法二中的这个位置,偏移位直接复制下就好。

xhs某书shield逆向破解(一)

 

发布者:小趣,转载请注明出处:https://www.qztxs.com/archives/science/technology/8919

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月2日 上午10:53
下一篇 2022年6月2日 上午11:18

相关推荐

  • 我去,拷贝代码,居然还有这等好处?

    什么是耦合?耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。感官上,怎么发现系统中的耦合?作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什么关系?为什么需要我来配合做这个事情?”。明明不应该联动,却要被动配合,就可能有潜在的耦合。  因为公共库,导致相互受影响...

    技术 2022年5月11日
    1500
  • 博客添加威胁情报播报模块

    漏洞威胁情报,通过公开的威胁情报来源爬取并整合最新信息 clone项目地址:https://github.com/lyy289065406/threat-broadcast 通过Github Actions部署,并自动生成 Github Page 播报页面 Github Page

    2022年5月27日
    2100
  • 推荐算法: 相似性推荐(没有用户历史行为数据的推荐)

    前几天和老板通俗的介绍了协同过滤(Collaborative Filtering)和基于内容的推荐(Content-based Recommendation),但都必须分析用户的历史行为数据(例如电影点击数据,职位查看数据等),针对不同的用户进行个性化推荐。   老板问我,如果系统没有用户的历史行为数据积累,就不能实施推荐了吗?   今天讲讲“相似性推荐”。...

    技术 2022年5月10日
    3000
  • Git修改远程URL

    Github 设置使用了ssh key,每次提交代码还是需要输入用户名???   检查发现,在设置远程url的时候使用了https https://github.com/Pa55w0rd/pa55w0rd.github.io.git 使用git remote set-url命令从https切换到ssh 1 # git remote set-url ...

    技术 2022年5月28日
    3500
  • 群消息已读回执(这个屌),究竟是推还是拉?

    每当发出一条微信消息,都希望对方尽快看到,并尽快回复,但始终不知道对方是否阅读。   每当收到一条不能立马回复的微信消息,都默默返回,假装没看见。 画外音:不想回复的人,唉,你只是个好人。   微信用于个人社交,产品设计上,在线状态,强制已读回执都有可能暴露个人隐私,故微信并无相关功能。   钉钉用于商务交流,其“强制已读回执”功能,让职场人无法再“假装不在...

    2022年5月15日
    4100

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信