xposed调用substrate的一些思考

Xposed中Hook某个方法并且主动调用的学习总结 start:2020年8月29日 一、前言 应用场景:我最近正在分析一个App的网络协议,通过分析我已经找到了加密方法的位置,我现在需要用这个加密方法为我主动加密一些数据,然后再将这些数据返回给服务器,这样我就可以提交自定义的内容给服务器了。 二、调用流程 ClassLoader -> 类加载器 Class - > 类 Instance -> 实例化对象 Method -> 方法 第一步:拿到要Hook的方法所在类的Class.. 阅读详情

//1.就是实现substrate调用的模块的位置一定要在Global.config中设置。
//2.这个调用会在每个包的调用过程中实现加载native层的hook代码。
//3.要hook的库的路径这里也可以写死,因为我们hook的是系统的函数,不用hook第三方的库
//4.最后就是我们写的nativehook的so文件的代码位置。这个也可以固定,我们每增加一个nativehook,就要在interface的文件里添加相应的实现。
//综上,源代码中的frame和interface的so不用传递参数,我们直接写死,包名传递已经实现。
//唯一需要变化的是系统libso的位置,

路径的问题,我们可以确定,不需要从java层传递到native层这样实现。

我们只需要在interface中硬编码或者直接读取lib的路径。

但一般来讲,系统libso在内存中已经加载过一次,我们似乎不用再次加载。

1.如果不再次加载,我们无法得到模块的基地址,也是个问题。如果我们再次加载系统模块,那这两个相同的模块会不会冲突。

2.两次加载进内存的模块到底在调用的过程中是哪一个执行了也是个问题。

3还有个严重的问题这里的substrate的实现也是采用的系统函数实现的,也就是说必然后部分系统函数是无法hook的。否者就是死循环。那么那些函数是无法hook的,我也不确定。

简直了。

原来加载过的so 在内存中是有map文件的

首先我们的插件在加载substrate实现nativehook的时候,使用的自己的pid,也就是说,我们系寻找自己pid下面的函数。
那这样我们就很容易获取到所用系统native函数的基地址。

我们现有的hook框架实现的是远程注入。

个人觉得hook 系统native不用再dlopen进行专门的处理,因为map中已经映射了所有函数的地址。我们只需要那我们的需要的东西就行了。

如果是第三方的so就不一样了,我们不确定这些库在什么时候会被加载到内存中,所以没有一个好的时机获取这些信息。
为了解决这个问题,我们需要实现hook dlopen ,因为dlopen 是加载so的必经之路,而且通过dlopen 的参数我们可以轻易的获取到加载的模块的基地址和函数地址。这样hooK的时候就会方便。

substrate hook 的特点就是必须要有函数的地址,然后我们构造和原始函数一样的申明和调用,就可以利用substra实现hook

系统函数可以轻易获取,所以我们不需要在dlopen的地方进行特殊的处理。

也就是说,我们根本不需要专门写第二so 来操作hook的代码。interface的模块式可以取消的。

总的利用方式:
xposed挂钩每一个应用的system.load函数是想加载我们自己的调用substrate.lib的c层代码。

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        if (off == false)
        {
            flushConfig();
        }
        if (!loadPackageParam.packageName.equals(GlobalConfig.Inject_PackageName))
            return;
        Class clazz = XposedHelpers.findClass("java.lang.System", loadPackageParam.classLoader); //使用注入包的类加载器来反射查找System.load函数,从而调用加载自己的框架so
        if(clazz == null)
        {
            XposedBridge.log("[-] not found class: " + "java.lang.System");
            Log.e(GlobalConfig.Log_TAG, "[-] can't found class: " + "java.lang.System");
            return;
        }
        Log.e(GlobalConfig.Log_TAG, "[+] found class: " + "java.lang.System");
        Method method = XposedHelpers.findMethodExact(clazz, "load", String.class);//查找system.load函数
        if (method == null)
        {
            Log.e(GlobalConfig.Log_TAG, "[-] can't found function: " + method.getName());
        }
        Log.e(GlobalConfig.Log_TAG, "[+] found function: " + method.getName());
        method.invoke(null, GlobalConfig.Inject_SoPath);//加载待注入库
    }

这里GlobalConfig.Inject_SoPath就是我们调用substrate.lib入口,原本的设计是通过加载frame继而加载interface,我们的hook在interface当中实现。
这样的设计的方便之处在于灵活的判断加载不同的lib的时机,借以实现hook.

xposed 框架学习 xposed 框架学习 xposed 框架学习 一xposed 启动过程 app_main 虚拟机 二hook流程分析 findAndHookMethod findMethodExact hookMethod 1hookMethodNative hookedMethodCallback handleHookedMethod invokeOriginalMethodNative 三注册流程分析一、xp... 阅读详情

相关推荐

安卓Xposed Hook实战:从环境搭建到参数拦截完整指南

Hook技术是软件工程中实现运行时行为监控与修改的核心机制,其原理是通过拦截目标函数调用,在特定时机插入自定义代码逻辑。这项技术在安卓生态中具有重要价值,广泛应用于安全分析、功能增强与自动化测试等领域。Xposed框架作为安卓Java层Hook的成熟解决方案,通过修改Zygote进程实现系统级非侵入式Hook,为开发者提供了稳定且高效的开发模式。本文以实战为导向,详细解析了基于Xposed框架的环境搭建、模块开发、参数拦截等关键步骤,并针对安卓逆向中常见的混淆处理和复杂参数类型解析提供了具体解决方案。通过完

443

Xposed的一些常用总结

通过遍历所有函数,可以去定位参数中是否有我们需要的变量;修饰符 – getModifiers()hook 堆栈 防止堆栈监测。

weixin_44236034的博客 1871

同花顺数据逆向的隐秘角落:Cookie加密与Hook注入的深层博弈

本文深入探讨了同花顺数据接口的安全防护机制,重点分析了Cookie加密与Hook注入技术在数据逆向中的应用与对抗。通过详细的加密参数解析和Hook技术实践,为技术研究者提供了一套完整的逆向分析框架,同时强调了技术应用的伦理边界。

cuda7parallel的博客 929

[原创]算法助手!基于Xposed的通用Hook工具

算法助手 前言 大家好,我是Junge,以前接单的时候,经常需要分析各种加密算法,还有数据的sign算法,由于静态分析效率太低,就随便写了这个Hook工具。 起初使用的是logcat打印日志,将密文,密钥,明文,md5前的信息,MD5后的信息等信息打印出来,但是很快发现了一个问题,在数据量大的时候,密文很多,密钥也很多,打印信息太乱,经常会出现密文不知道对应哪个密钥,而且如果是动态秘钥,单纯的打印秘钥就显得没有意义了。 于是改过以后,才有了这软件的初版,能够将秘钥,密文,明文,联系起来,并打印出调用堆栈。

u014645251的博客 1万+

JustTrustMe原理与实战:绕过SSL证书锁定,赋能AI安全审计数据采集

SSL/TLS证书验证是保障网络通信安全的基础机制,通过数字证书链、有效期和域名匹配等多层验证确保连接可信。其核心原理在于建立客户端与服务器之间的加密通道,防止数据在传输过程中被窃取或篡改。这项技术的价值在于为移动应用、Web服务提供了至关重要的传输层安全保障,广泛应用于金融、电商、社交等涉及敏感数据传输的场景。然而,在安全测试与审计领域,应用开发者常采用SSL证书锁定技术加固防御,这却阻碍了安全研究人员对应用流量进行动态分析。JustTrustMe作为一款运行时Hook工具,通过拦截并绕过Android的

weixin_34013044的博客 362

微信防撤回技术原理与安卓端实战:逆向分析与Hook实现

在即时通讯与客户端开发领域,消息的生命周期管理与状态同步是核心基础概念。其原理通常涉及客户端-服务器架构下的本地数据存储、状态标记与UI渲染机制。从技术价值看,深入理解这一流程有助于掌握应用层协议分析、客户端安全机制及UI框架的工作原理,是进行软件逆向工程、自动化测试与安全评估的重要实践。应用场景广泛,包括客户端功能扩展、自动化测试脚本开发及安全漏洞研究。本文聚焦于微信消息撤回机制,通过逆向工程定位关键方法,并利用Xposed/LSPosed框架进行Hook拦截,实现防撤回功能。文中详细拆解了消息撤回的完整

weixin_38166557的博客 432

xposed 使用Proxy调用方法时参数为接口

当我们使用xposed主动调用目标方法时 发现有一个参数是接口类型 该怎么办呢 这个时候不像平时是普通的int string 类型可以直接写 需要使用到反射Proxy.newProxyInstance 通过这个方法可以获取到接口的实例 其中method为接口中的方法 args为参数 ...

weixin_41722852的博客 1419

深度解析微信客户端安全检测机制:从动态防御到合规实践

在移动应用安全领域,客户端安全检测是保障应用与用户数据安全的核心防线。其基本原理在于通过多层次、立体化的监控体系,识别运行环境的异常与潜在威胁。动态防御技术作为前沿方向,强调从静态特征比对转向运行时行为序列的可信验证,极大提升了对抗自动化攻击与恶意篡改的能力。这项技术的核心价值在于为超级应用构建可信执行环境,确保支付、通信等关键业务逻辑的完整性与机密性。其典型应用场景包括防止Root/越狱设备滥用、检测模拟器与Hook框架、以及监控内存注入等恶意行为。本文以微信客户端为例,深入剖析其如何集成动态防御技术与环

379

java层 android_Android Java层的anti-hooking技巧

0x00 前言一个最近关于检测native hook框架的方法让我开始思考一个Android应用如何在Java层检测Cydia Substrate或者Xposed框架。声明:下文所有的anti-hooking技巧很容易就可以被有经验的逆向人员绕过,这里只是展示几个检测的方法。在最近DexGuard和GuardIT等工具中还没有这类anti-hooking检测功能,不过我相信不久就会增加这个功能。...

weixin_33101399的博客 346

SSL证书固定绕过实战:从原理到Frida动态Hook技术解析

SSL/TLS协议是保障网络通信安全的基石,其核心在于通过数字证书实现身份认证与加密传输。中间人攻击正是利用客户端对证书颁发机构的信任机制,通过植入伪造证书截获通信数据。为应对此风险,证书固定技术应运而生,它要求应用只信任预设的特定证书或公钥,从而显著提升安全性。这项技术在金融、社交等涉及敏感数据的移动应用中尤为重要,能有效防止协议分析、数据窃取及自动化攻击。在实际安全测试与逆向工程中,绕过证书固定成为关键挑战,常需结合动态分析与静态修改技术。以Frida为代表的Hook框架通过运行时修改验证逻辑,成为当前

weixin_30603633的博客 357

Android Root与系统完整性检测:原理、方案与实战部署指南

在移动应用安全领域,系统完整性检测是保障应用运行环境可信的核心技术。其基本原理是通过多维度探查设备因获取Root权限或遭受篡改而留下的痕迹,包括异常文件、被修改的系统属性、非常规的进程调试状态以及第三方Hook框架的加载。这项技术的核心价值在于构建纵深防御体系,保护金融支付、游戏反作弊等高安全要求场景下的业务逻辑与用户数据免遭恶意篡改。随着Magisk等系统化Root方案的普及,检测与绕过之间的对抗不断升级,促使方案向综合化、动态化演进。本文聚焦Android平台,深入剖析了基于文件、属性、原生代码及Goo

优快云头条 1013

Android反挂钩技术-Java层

原文: http://d3adend.org/blog/?p=589 翻译: Zhiwei(http://zhiwei.li/text/) 最近一个在native代码层(C/C++)检测 挂钩框架(hooking frameworks)的内部讨论,引发了我的思考:一个纯Java的Android应用,有什么方法来检测 Cydia Substrate或者Xposed framework的存在

云守护的专栏 1836

游戏融合版开发实战:多平台适配与代码注入技术解析

代码注入与资源替换是软件功能扩展与修改的底层核心技术,其原理在于通过动态链接库或运行时插桩技术,将自定义逻辑嵌入到目标进程的执行流程中,从而实现对程序行为的动态控制与扩展。这项技术的核心价值在于能够在不修改原始程序源代码的情况下,为现有软件添加新功能、修复漏洞或进行深度定制,极大地提升了软件的可塑性与复用性。在游戏开发、安全研究、软件调试与自动化测试等领域,代码注入技术有着广泛的应用场景。例如,在游戏模组开发中,开发者通过Hook游戏函数并替换资源文件,可以实现“二创植物”等全新游戏内容;在移动端,则需处理

快马扬鞭须努力! 555

Android Root检测与绕过攻防实战:从RootBeer原理到多层次防御方案

在移动应用安全领域,Root权限检测是保护应用免受恶意篡改和破解的关键技术。其核心原理是通过检查系统属性、文件状态、运行环境等多维度特征,判断设备是否获取了超级用户权限。这项技术的价值在于防止核心业务逻辑被逆向分析、数据被篡改以及外挂程序的侵入,广泛应用于金融支付、游戏反作弊、企业数据保护等对安全性要求极高的场景。当前,随着Magisk等动态隐藏工具和Hook框架的普及,传统的静态检测方法面临严峻挑战。本文以热门的RootBeer开源库为例,深入剖析其检测机制被绕过的手法,并探讨如何构建包含Native层校

weixin_33836874的博客 328

逆向工程揭秘:x-mini-wua设备指纹生成算法与安全防护实战

在移动应用安全领域,设备指纹技术是客户端风控的核心机制之一,它通过采集设备硬件、系统环境等参数生成唯一标识,用于识别可信设备与防范恶意请求。其原理通常基于数据采集、规范化处理、哈希签名或加密编码等步骤,确保指纹的唯一性和防篡改性。这项技术的价值在于为无状态的HTTP请求提供身份凭证,广泛应用于反欺诈、防爬虫、账号安全等场景。本文聚焦于x-mini-wua这一典型请求头参数的生成逻辑,通过逆向工程方法,深入剖析其算法实现,并结合Frida动态调试与代码混淆对抗,为开发者提供从算法还原到安全加固的完整实践指南。

babing2770的博客 457

嵌入式通信协议----Wi-Fi协议详解(一)

Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。

聪聪的成长之路 1656

HTTPS安全攻防:从单向/双向认证到抓包与反抓包实战

HTTPS作为互联网通信的安全基石,其核心在于TLS/SSL协议提供的加密、完整性校验与身份认证机制。单向认证通过服务器证书验证,解决了客户端对服务器身份的信任问题,是公开Web服务的标准模式。而双向认证则要求客户端也提供证书,实现了服务间的严格互信,在微服务、物联网等高安全场景中至关重要。从技术价值看,HTTPS不仅保障了数据传输的机密性,更是构建零信任网络的基础。然而,在开发调试与安全测试中,常需借助抓包工具分析流量,这本质上是一种受控的中间人攻击,其原理在于代理动态生成证书并介入TLS握手。为应对此风

weixin_34228387的博客 430

Plot3d 网格数据格式

PLOT3D是一个计算机图形程序,旨在可视化计算流体力学的网格和解决方案。PLOT3D文件可以是ASCII, 也可是Fortran unformatted 或 C binary形式。PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

weixin_62592231的博客 3721

SSL Kill Switch 2原理与实战:深入剖析移动端证书固定绕过技术

SSL/TLS证书固定(Certificate Pinning)是移动应用安全中防止中间人攻击的核心技术,它通过在应用内预置服务器证书指纹来确保通信端点可信。其工作原理是在HTTPS握手阶段,应用将服务器返回的证书与本地存储的指纹进行比对,只有匹配才允许连接建立。这项技术的核心价值在于为敏感数据传输提供了额外的保护层,广泛应用于金融、社交、企业应用等高安全要求场景。然而,在安全测试与审计等合法场景下,研究人员常需暂时绕过此机制以分析流量,这就引出了对SSL Pinning绕过技术的需求。SSL Kill S

weixin_30784501的博客 424

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

通过miniconda conda安装jupyer的时候报错: InvalidArchiveError(“Error with archive

摘要:本文针对Windows系统使用Conda时出现的InvalidArchiveError错误(文件路径过长或压缩包损坏),提供了解决方案。建议以管理员身份运行PowerShell并执行命令启用长路径支持(LongPathsEnabled),然后重启电脑或终端。作者通过该方法成功解决了jupyter安装问题。附有错误截图和解决后的成功截图。

猿小白的博客 786

逆向工程实战:从Hook到数据监控的防撤回技术解析

逆向工程是一种通过分析软件成品来理解其设计、结构和行为的技术方法,广泛应用于安全研究、兼容性开发和功能理解。其核心原理包括静态分析与动态调试,通过反编译、Hook等技术手段,可以深入理解应用程序的内部逻辑和数据流。在工程实践中,逆向工程的价值在于帮助开发者学习优秀软件的设计思路,进行安全评估,以及实现特定的功能扩展。例如,在即时通讯软件中,通过监控本地数据库或Hook关键函数,可以探索消息防撤回等功能的实现路径。本文以Android平台为例,详细解析了基于Frida动态插桩和SQLite数据库监控的技术方案

weixin_30907935的博客 424

17、神经网络训练算法与高阶模糊Cohen - Grossberg神经网络稳定性分析

本文介绍了一种新的数据驱动算法用于神经网络训练,该算法继承三次样条权重函数的优点,具有简单架构和良好泛化性能,并通过并行机制显著提升训练速度。同时,研究了高阶模糊Cohen-Grossberg神经网络(HOFCGNN)在可变及无界延迟下的稳定性,利用M矩阵理论和向量Lyapunov函数方法,证明了系统平衡点的存在性、唯一性和全局指数稳定性。研究成果为神经网络的高效训练与稳定应用提供了理论支持和技术路径。

b9c0d的博客 149
上一篇: 独立分发模拟器
下一篇: 广播和Cursor
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值