机毒霸去广告功能分析三:java代码(dex)注入

Android逆向实战:通过smali/baksmali动态注入DEX逻辑 本文详细介绍了在无源码条件下对Android应用进行动态逻辑注入的实战方法。通过使用smali和baksmali工具对DEX文件进行反编译、修改与重打包,实现在目标方法中插入自定义代码(如日志打印),并分享了定位目标、处理寄存器、避免常见错误的实用技巧与避坑指南。 阅读详情

 

首先简单介绍一下进程注入的概念:进程注入就是将一段代码拷贝到目标进程,然后让目标进程执行这段代码的技术。由于这样的代码构造起来比较复杂,所以实际情况下,只将很少的代码注入到目标进程,而将真正做事的代码放到一个共享库中,即.so文件。被注入的那段代码只负责加载这个.so,并执行里面的函数。

由于.so中的函数是在目标进程中执行的,所以在.so中的函数可以修改目标进程空间的任何内存,当然也可以加钩子,从而达到改变目标进程工作机制的目的。

当然不是任何进程都有权限执行注入操作的。Android平台上的进程注入是基于ptrace()的,要调用ptrace()需要有root权限。目前市面上的主流安全软件也都是基于进程注入来管理和控制其他应用进程的。这也就是为什么这些安全软件需要获得root权限的原因。

关于如何.so注入的实现,有兴趣的朋友可以参考看雪论坛的上的一个注入库LibInject

和洗大师的一个开源项目Android Injector Library。

    .so注入以后已经可以干很多事情了,但毕竟是在native层。想要在native层直接修改Java层的变量和逻辑还是很不方便的。况且Android平台的绝大多数应用都是用Java代码写的。因此自然而然就会想到,有没有什么方式可以将dex文件注入目标进程,然后执行dex文件中的Java代码?

 

经过一段时间的研究,笔者找到了一个切实可行的方法。这里分享给大家:首先,所有的Java类都是由类加载器(ClassLoader)加载的,我们要从特定的路径下加载一个我们自己的dex文件,就必须要有一个自己类加载器才行。有了这个类加载器我们就可以加载我们自己的类,并用反射调用这个类里面的方法。其次,要构造生成这样一个类加载器必须要获得现有的类加载器,因为类加载器是双亲委派模式的。现有的类加载器可以通过反射获得。只是这些都需要用native代码实现。

下面简述一下dex注入的过程:

1.   将.so注入目标进程,执行.so文件中的某个函数。

2.   在这个函数里先获得一个JNIEnv指针,通过这个指针就可以调JNI函数了。

3.   反射得到当前应用进程的PathClassLoader,用这个ClassLoader来构造一个DexClassLoader对象。Dex文件路径作为一个参数传入DexClassLoader的构造函数,另一个重要的参数是,一个具有可写权限的文件夹路径。因为在做dex优化时,需要生成优化过的dex文件,这跟生成/data/dalvik-cache/下的dex文件是一个道理。

4.    通过这个DexClassLoader对象,来加载目标类,然后反射目标类中的目标函数。最终调用之。

 

Android-一款自动对dex文件中的字符串进行加密Android插件工具 使用StringFog插件自动对 dex 中的字符串进行加密 立即下载

相关推荐

注入器下载

找不到工具,注入工具,现在外挂的制作都需要注入器的,应用

手机毒霸去广告功能分析三:java代码(dex)注入

首先简单介绍一下进程注入的概念:进程注入就是将一段代码拷贝到目标进程,然后让目标进程执行这段代码的技术。由于这样的代码构造起来比较复杂,所以实际情况下,只将很少的代码注入到目标进程,而将真正做事的代码放到一个共享库中,即.so文件。被注入的那段代码只负责加载这个.so,并执行里面的函数。   由于.so中的函数是在目标进程中执行的,所以在.so中的函数可以修改目标进程空间的任何内存,当然也可...

iteye_2439的博客 223

德玛西亚2.0注入工具

德玛西亚Call测试工具是一款 保护的远程call测试工具,主要功能是远程进程CALL代码注入测试,本软件实现了远程Call代码测试,且以Try异常保护的形式去执行汇编代码,从而有效防止目标进程由于代码错误或参数错误导致的进程崩溃现象。

Java反射dex注入_利用smali代码注入修改Android应用

很久前写的文档了,发出来以作纪念:)利用smali代码注入修改Android应用Smali介绍简单的说,smali就是Dalvik VM内部执行的核心代码。Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化。虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事。Dalvik VM是基于寄存器的,而JVM是基于栈...

weixin_42362885的博客 574

海思MPP平台千兆以太网驱动集成与测试指南

千兆以太网(GE)是嵌入式视觉系统中音视频流传输与边缘控制的核心物理接口,其底层驱动需兼顾DMA高效调度、中断实时响应与PHY链路稳定性。在Linux嵌入式环境中,GE驱动通常基于net_device框架实现,并深度耦合于SoC专用媒体处理平台(如海思MPP),通过硬件抽象层(HAL)屏蔽寄存器操作,提供零拷贝、RGMII时序适配、描述符环管理等关键能力。技术价值体现在降低CPU负载、保障1080p@30fps实时推流、支持ONVIF/RTSP协议交互及固件远程升级。典型应用场景包括网络摄像机(IPC)、A

weixin_42599908的博客 90

告别手动下载!用Python脚本5分钟搞定NREL风速数据(附完整API调用代码)

本文详细介绍了如何使用Python脚本自动化获取NREL风速数据,从API密钥申请到数据保存的全流程。通过完整的API调用代码和实战技巧,帮助研究人员和开发者高效下载全球高精度风速数据,告别繁琐的手动操作,提升工作效率。

weixin_33724059的博客 297

LSPatch核心原理深度解析:DEX和SO注入技术揭秘

LSPatch作为一款非Root环境下的Xposed框架扩展,其核心原理围绕DEX和SO注入技术构建,实现了无需系统权限即可对Android应用进行 Hook 操作。本文将深入剖析LSPatch的底层工作机制,带你了解DEX文件注入与SO库加载的关键技术细节。 ## 一、LSPatch架构概览:非Root注入的实现基础 LSPatch通过修改目标APK文件实现框架注入,主要包含三大核心模块:

gitblog_00501的博客 456

使用STM32F103C8T6控制舵机丝滑运转附代码

使用STM32F103C8T6控制舵机丝滑运转原理和案例,附代码。

m0_63566592的博客 4238

Java反射dex注入_手机毒霸去广告功能分析三:java代码(dex)注入

首先简单介绍一下进程注入的概念:进程注入就是将一段代码拷贝到目标进程,然后让目标进程执行这段代码的技术。由于这样的代码构造起来比较复杂,所以实际情况下,只将很少的代码注入到目标进程,而将真正做事的代码放到一个共享库中,即.so文件。被注入的那段代码只负责加载这个.so,并执行里面的函数。由于.so中的函数是在目标进程中执行的,所以在.so中的函数可以修改目标进程空间的任何内存,当然也可以加钩子,从...

weixin_39926394的博客 268

【GlobalMapper精品教程】072:GlobalmapperV25中文版下载地址及安装教程

GlobalmapperV25中文版下载地址及安装教程安装包位于专栏完整数据包中,请订阅后从优快云私信查收!最新GlobalMapper中文版入门实战实验教程,图文并茂,实用性强,内容包括:GM基础操作、数据处理及地形图制作、航测内业数据处理、点云处理、地形分析、空间分析、数据库建库入库等。配套完整案例数据,持续同步更新!订阅专栏后,从私信查收中文安装包永久版(中文23.0+24.0)及配套实验数据包。

智慧空间实验室 4737

YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】

YOLOv8改进,小目标检测,yolov8

kay_545 6022

手机毒霸去广告功能分析一:总体分析

不久前金山公司推出了手机毒霸,并声称手机毒霸具有了清除广告的功能,顿时在业内掀起轩然大波。国内众多靠广告生存的移动开发者们对金山的这一功能进行强烈的谴责,但另一方面,大多数用户都觉得这个功能挺不错的,毕竟国内市场上的应用里的广告真的实在太多了。          当然口水战不是本文关注的重点,只是对手机毒霸的去广告功能产生的极大的兴趣。这东西到底是怎么实现的呢?在好奇心的驱使下,@安卓安全小

android_squad的专栏 979

Prompt提示优化工具

在大模型使用过程中,Prompt尤为重要。一个好的Prompt可以解决很多的问题。那么如何撰写一个完美的Prompt?下面汇总了一些Prompt工具,可以辅助日常Prompt的编写。

HJ_blog 3109

手机毒霸去广告功能分析之一:总体分析

不久前金山公司推出了手机毒霸,并声称手机毒霸具有了清除广告的功能,顿时在业内掀起轩然大波。国内众多靠广告生存的移动开发者们对金山的这一功能进行强烈的谴责,但另一方面,大多数用户都觉得这个功能挺不错的,毕竟国内市场上的应用里的广告真的实在太多了。          当然口水战不是本文关注的重点,只是对手机毒霸的去广告功能产生的极大的兴趣。这东西到底是怎么实现的呢?在好奇心的驱使下,通过一些技术

AlienTech for better life!~ 1085

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

dex注入实现详解

最近在研究Android绿色安全这一块,具体到上层的业务就是“去第三方APP的广告”。如果既想使用第三方APP,又不想看到一些无良的广告,那dex注入基本无法避免。本文针对网上一些大牛分享的文章,进行了一些简单的实现,总结和分享自是不能少的。Ps:感谢金山毒霸实现了该功能,感谢大牛们破解之后的无私分享。 参考文章 金山手机毒霸工作原理【引用1】 【原创】手机毒霸去广告功能分析一:总体分析

omnispace的博客 4880

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

手机毒霸

(2)com.ijinshan.duba:Def;广告规则和扫描病毒信息由该进程通过Provide;(2)com.ijinshan.duba.roo;该进程以ROOT身份运行,该进程提供了手机毒霸其;(4)第三方(injectedprocess)被;通过ptrace()注入到第三方程序的代码,ks;三、JAVA虚拟机hook实现原理;目前Android进程代

linuxheik的专栏 780

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

乐安全内嵌广告屏蔽原理

一、原理 分析完了手机毒霸去广告功能的原理,接下来我们来看看“乐安全”是如何去内嵌广告的。对手机毒霸去广告功能感兴趣的读者可以看一下我们之前发的三篇技术博客: 手机毒霸去广告功能分析一:总体分析 http://blog.sina.com.cn/s/blog_be6dacae01018hjg.html 手机毒霸去广告功能分析二:广告View的识别 http://blog

android_squad的专栏 2910

Java调用apktool反编译apk安装包中的dex文件

Java调用apktool反编译apk安装包中的dex文件 首先下载apktool.jar 然后我们直接将apktool.jar导入eclipse工程 然后直接粘代码 package JNIt; import java.io.File; import brut.androlib.AndrolibException; import brut.androlib.src.SmaliBuilder; import brut.androlib.src.SmaliDecoder; import brut.direc

qq_42877866的博客 1196

Java类加载器-动态加载外部dex

Android 类加载 Android 只能加载识别 dex 文件,因此需要将 .java 文件编译 .class 文件,然后将 .class 优化为 .dex 文件。 过程:.java -> .class -> .dex 下面来练习如何去加载一个 dex 文件,并调用 dex 中的方法。 获取需要动态加载的 dex 文件 编写 DynamicClass.java 类 public...

六号表哥 1477
上一篇: 乐安全内嵌广告屏蔽原理
下一篇: 手机毒霸去广告功能分析二:广告View的识别
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值