`
android_squad
  • 浏览: 17613 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

手机毒霸去广告功能分析三:java代码(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对象,来加载目标类,然后反射目标类中的目标函数。最终调用之。

 

 

更多内容请关注 http://blog.sina.com.cn/u/3194858670 以及 sina微博@ 安卓安全小分队

分享到:
评论

相关推荐

    毒霸天气 城市代码表

    毒霸网址大全里的天气专栏的相关城市代码列表。map.put("北京","101010100"); map.put("海淀","101010200"); map.put("朝阳","101010300"); map.put("顺义","101010400"); map.put("怀柔","101010500"); map....

    右下角老是弹出金山毒霸广告怎么办.docx

    ### 如何解决右下角频繁弹出金山毒霸广告的问题 #### 一、问题概述 在使用金山毒霸的过程中,不少用户遇到了一个令人困扰的问题——软件频繁地在屏幕右下角弹出各种广告窗口。这些广告不仅包括产品推荐(如垃圾...

    手机wrap网站仿手机毒霸网址大全手机触屏版手机wap导航网站模板

    综上所述,本资源涉及的是一个专门为手机设计的WAP导航网站模板,它模拟了“手机毒霸网址大全”的功能,提供了一种便捷的方式帮助用户快速访问常用网站。同时,该资源是通过百度网盘分享的形式提供的,用户可以下载...

    金山毒霸的使用技巧

    金山毒霸作为一款功能全面的杀毒软件,在用户中广受欢迎。其不仅提供常规的病毒查杀功能,还包含一系列高效实用的使用技巧,本文将深入探讨这些技巧,帮助用户最大化金山毒霸的使用价值。 首先,金山毒霸的多种查杀...

    ​金山毒霸WiFi共享功能怎么用.docx

    **金山毒霸WiFi共享功能详解** 金山毒霸是一款知名的网络安全软件,它除了提供基础的病毒查杀、系统优化等功能外,还内置了实用的WiFi共享工具。这项功能使得用户能够将电脑的网络连接转化为WiFi热点,让其他设备...

    仿金山卫士界面java

    总的来说,这个项目为Java初学者和Swing界面设计者提供了一个学习和实践的机会,他们可以通过分析和修改代码来提升自己的GUI编程技巧,同时也能了解到如何创建一个与知名软件类似的用户界面。对于想要了解和研究Java...

    仿手机毒霸网址大全手机触屏版手机wap导航网站模板_网站开发模板含源代码(css+html+js+图样).zip

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

    vc金山毒霸6界面源码(超酷界面)

    "vc金山毒霸6界面源码(超酷界面)" 这个标题揭示了我们讨论的主题是关于使用Visual C++(通常简称为vc)开发的金山毒霸6的用户界面源代码。"超酷界面"强调了这个界面设计的独特性和吸引力,可能包含了一些创新的...

    安卓手机管理软件对比.pptx

    这篇文档主要对比了五款主流的安卓手机管理软件:腾讯手机管家、360手机卫士、安卓优化大师、金山手机卫士以及手机毒霸。这些软件的主要功能包括流量监控、手机加速、隐私监控、广告拦截、骚扰拦截和软件管理等,...

    类似于金山毒霸界面的源程序.rar

    标题 "类似于金山毒霸界面的源程序.rar" 暗示了这个压缩包包含的是一套与金山毒霸相似的用户界面的源代码。金山毒霸是一款知名的杀毒软件,其用户界面设计简洁且功能丰富,是许多开发者学习和参考的对象。我们可以从...

    图片及声音按钮——金山毒霸6界面

    总结,"图片及声音按钮——金山毒霸6界面"是一个关于界面设计和类库应用的实例,其中涉及到的图片按钮和声音按钮的实现,是软件开发中常见的功能组件。通过理解和复用这些组件,开发者可以提高自己的工作效率,并...

    去除平板电脑上广告的小技巧.docx

    - **手机金山毒霸**:适合不太熟悉技术的用户,安装后可以直接选择屏蔽广告的功能。 - **LBE安全大师**:适合有一定技术基础的用户,可以细致地为每个应用设置权限,如禁止联网、获取位置信息等。需要注意的是,...

    基于HTML实现的仿手机毒霸网址大全手机触屏版手机wap导航网站模板(css+html+js+图样)

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

    用vc++做的仿金山毒霸界面

    6. **代码组织**:了解如何将功能模块化,编写清晰、可维护的代码结构。 7. **调试技巧**:使用VC++的调试工具,如调试器(DebugView),进行代码调试和问题定位。 8. **版本控制**:可能涉及到版本控制工具的使用...

    基于HTML实现的仿手机毒霸网址大全手机触屏版手机wap导航网站模板(css+html+js+图样).zip

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

    基于HTML实现的仿手机毒霸网址大全手机触屏版手机wap导航网站模板(css+html+js+图样+毕业设计).zip

    对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...

Global site tag (gtag.js) - Google Analytics