首页 > 其他分享 >Riru和Lsp

Riru和Lsp

时间:2024-06-21 18:53:55浏览次数:19  
标签:函数 Riru zygote onModuleLoaded Lsp dalvik post riru

参考 lsposed运行流程分析

riru

  1. 通过修改系统属性ro.dalvik.vm.native.bridge将libriruloader.so注入到zygote进程中

    zygote会执行LoadNativeBridge函数, LoadNativeBridge函数会根据属性ro.dalvik.vm.native.bridge的值进行dlopen,因此.init_array成为了Hook点

  2. libriru的init函数分别调用了PrepareMapsHideLibrary,InstallHooks和 Load

  • PrepareMapsHideLibrary // 隐藏maps

  • InstallHooks // 利用xHook框架hook函数jniRegisterNativeMethods,因此可以拿到nativeForkAndSpecialize, nativeSpecializeAppProcess, nativeForkSystemServer的函数地址

  • Load // 调用LoadModule函数,通过dlopen加载所有的riru模块so,隐藏maps, 加载的riru模块so的onModuleLoaded函数


LSP

LSP就是一个Riru模块

	void onModuleLoaded() {
		LOGI("onModuleLoaded: welcome to LSPosed!");
		LOGI("onModuleLoaded: version v{} ({})", versionName, versionCode);
		MagiskLoader::Init();
		ConfigImpl::Init();
	}

zygote上的钩子

  • nativeForkAndSpecialize(pre/post)

    • LoadDex // 将lspd.dex文件从磁盘map到内存中, InMemoryClassLoader加载,而不是pathclassload可能还是怕被风控

    • InitArtHooker

      1. InitJNI(env) //通过jni env 获取java 比如 dalvik/system/PathClassLoader

      2. InitNative(env, info)

    • InitHooks

  • nativeSpecializeAppProcess(pre/post),

  • nativeForkSystemServer(pre/post)

标签:函数,Riru,zygote,onModuleLoaded,Lsp,dalvik,post,riru
From: https://www.cnblogs.com/tangshunhui/p/18261194

相关文章

  • 基于对比稀疏扰动技术的时间序列解释框架 ContraLSP
    开篇近日,由阿里云计算平台大数据基础工程技术团队主导,与南京大学、宾夕法尼亚州立大学、清华大学等高校合作,解释时间序列预测模型的论文《ExplainingTimeSeriesviaContrastiveandLocallySparsePerturbations》被机器学习领域顶会ICLR2024接收。该论文提出了一种创新的基......
  • 18--Scrapy04--CrawlSpider、源码模板文件
    Scrapy04--CrawlSpider、源码模板文件案例:汽车之家,全站抓取二手车的信息来区分Spider和CrawlSpider注意:汽车之家的访问频率要控制一下,要不然会跳验证settings.py中设置DOWNLOAD_DELAY=3一、常规Spider#spiders/Ershou.pyimportscrapyfromscrapy.linkextra......
  • mybatilsplus属性为json类型的坑
    最近做的一个项目由于需要把json类型字段在springboot+mybatisplus的框架中。实体类上的jsonobject死活存不进数据库,总结出一下经验1.实体类上:@TableName(value="mix_target",autoResultMap=true)2.自定义Hander:自定义实现AbstractJsonTypeHandler(mybatilsplus里面带了......
  • htmlentities和htmlspecialchars 的区别有哪些
    htmlspecialchars只转化下面这几个html代码,而htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。'&'(ampersand)becomes'&''"'(doublequote)becomes'"'whenENT_NOQUOTESisnotset.''......
  • MPLS-基础、LSR、LSP、标签、体系结构
    MPLS技术MPLS基础MPLS:转发数据时,只在网络边缘分析IP报文头,不在每一跳都分析,节约了转发时间。MPLS:MultiprotocolLabelSwitching,多协议标签交换骨干网技术。主要应用:VPN、流量工程、QoS(QualityofService)等方面。ATM:AsynchronousTransferMode,异步传输模式。应用方面:VPN......
  • ILSpy是一个开源的.NET反编译器
    在软件开发领域,反编译器是一种强大的工具,它允许开发者查看已编译代码的内部结构。对于.NET平台,ILSpy是一款备受欢迎的反编译器,它能够将已编译的.NET程序集(如DLL或EXE文件)转换回近似的C#或VB.NET源代码。这不仅有助于理解第三方库的工作原理,还能在调试、优化或学习他人代码时提供巨......
  • scrapy框架之CrawlSpider全站爬取
    一、什么是全站爬取全站爬取(CrawltheEntireSite)是指通过网络爬虫程序遍历并获取一个网站上的所有页面或资源的过程。这种爬取方式旨在获取网站的全部内容,包括文本、图片、视频、链接等,以建立网站的完整内容索引或进行数据分析。二、全栈爬取介绍1、全站数据爬取的方式(1)通过......
  • Linux系统中的lsmod、lsof、lspci、lsscsi命令及实例
    作为运维同学怎能不知道Linux系统中的lsmod、lsof、lspci、lsscsi命令呢,今天就来盘一盘她及实例。1、lsmod命令Linuxlsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务......
  • 编码绕过xss说明和htmlspecialchars函数
    html实体编码JS编码1.htmlspecialchars函数把一些预定义的字符转换为html实体预定义的字符&->&amp;"->"'->'<-><>->gt;<script>--><&ltscript&gt默认绕过绕过方式:payload:'onclick='alert(123)'或者&#......
  • MIUI系统手机解BL锁刷入Magisk + LSPosed +Shamiko
    目录Bootloader解锁获取root刷入Magisk(LSPosed+Shamiko)获取boot.img文件安装Magisk刷入LSPosed模块刷入Shamiko模块隐藏Magisk应用名Bootloader解锁打开开发者选项打开开发者模式后绑定账号和设备设置->1.更多设置–2.开发者选项–3.设备解锁状态–4.绑定账号......