Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析

马肤

温馨提示:这篇文章已超过468天没有更新,请注意相关的内容是否还可用!

摘要:,,本文主要探讨Android逆向工程中的两个关键技术:过Frida检测以及SO层算法逆向。针对Frida检测,介绍如何绕过或应对这种动态代码插桩工具的检测机制,确保逆向工程的安全进行。针对SO层算法逆向,详细阐述如何通过技术手段分析并还原算法逻辑,揭示其工作原理。本文旨在为Android逆向工程师提供有效的技术手段和策略,推动相关领域的研究与发展。

0x01 Frida检测绕过

Frida是一个强大的动态代码注入工具,常用于逆向工程,但在实际应用中,由于其流行性,也遭遇了各种检测机制。

检测方式:

1、ptrace占坑、进程名检测、端口检测(这些绕过方法较为简单)。

2、D-Bus通信协议的检测。

3、maps、fd检测。

4、App中线程名的检测。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第1张

绕过方法:

直接使用hluda-server,通过修改运行端口并以spawn方式注入frida,hluda-server的好处在于其生成的so库名字去掉了frida等特征字段,可以很好地绕过maps和fd的检测。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第2张

对于可能的D-Bus通信协议检测,可以尝试hook相关的函数如strstr来查看是否含有特定的字符串或认证消息,如果App向每一个端口都发送了D-Bus认证消息,那么利用strcmp()或strstr()函数进行检测是可能的。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第3张

对于maps和fd检测,可以尝试hook open函数,过滤掉含有tmp的行,并将剩余内容输出到新的文件中,修改open的返回值指向新生成的文件。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第4张

0x02 SO层算法逆向

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第5张

数据包分析

登录时,关注sign字段(看起来像散列值)和经过加密处理的password字段。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第6张

2. so算法逆向(password参数)

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第7张

通过JNI机制,Java层在和so层交互时,会通过NewStringUTF函数返回加密后的数据,可以hook这个函数并输出堆栈信息。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第8张

通过分析堆栈,找到libNativeHelper.so中的函数,通过反编译找到相应的函数,分析数据流程,发现NewStringUTF的调用和一个看起来像base64编码的字符串,进一步分析发现这是一个base64编码函数,输入是16进制数据,继续向上找,找到加密函数的入口,发现输入的密码和某个16进制数据作为参数传入,猜测该函数是某种加密,进一步跟踪发现v23中的数据可能与子密钥生成有关,经过验证确实如此,最终得出结论:输入的密码经过DES/CBC模式加密后再进行base64编码得到password的值。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第9张

so算法逆向(sign参数)

同样通过hook NewStringUTF找到对应的函数位置,找到特征如MD5的初始化常量,进一步hook得到明文数据,对比数据包发现,sign的值是将多个字段拼接后进行md5散列的结果。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第10张

至此,整个逆向过程结束。

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第11张

是根据您提供的内容进行的整理和格式化,希望对您有帮助!

Android逆向——过frida检测+so层算法逆向,Android逆向技术,Frida检测破解与SO层算法深度逆向解析 第12张


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码