Android Dalvik模式下劫持 Java 函数

原创 2015年08月03日 22:36:42

0x00. 前言

        这是去年底干的事情了,研究这个的目的是为了劫持App中的所有流量并引导到squid节点。大部分的Http请求可以在编译dex时通过修改字节码,做些小手脚搞定;但是对于Webview中的视频流,以前一直没有解决,XX项目组由于是加速业务后端收费,对流量泄露并不敏感只会少收钱;而我们做定向流量业务前端收费,泄漏了会被用户投诉。

        为了劫持这个这个流量,走了两次弯路。先研究了用js注入偷偷修改video对象的方法,虽然可以劫持一部分视频请求,但是成不成功完全决定于CP的js怎么写,太不撸棒棒了。之后研究了在代理服务器去修改所有页面和js脚本,篡改url中的host字段为代理服务器地址,方案甚至都做到上线去,这导致了部分请求出现跨域,相对地址的请求丢失源站host,也毙了。

0x01.技术背景

        以前搞视频研究过RTSP转H5 Video, 虽然H5 Video支持不少编码器和容器,但是各大视频网站基本上也就提供mp4+ts两种容器和mp4v+h264两种vcodec。其实呢webview中的音视频最后也是通过MediaPlayer来下载播放。所以我们要是能拿到MediaPlayer 用反射调用私有非公开函数,干个代理进去就可以了。然并卵,MediaPlayer对象根本拿不到。但是,这里有个但是..... MediaPlayer总是要传参数进去的, 所以小机智的我们就不自然的联想到hook这个方法了...


0x02

MediaPlayer 有一组不同重载的setDataSource方法,用途就是传url,如果能hook这个方法,篡改掉url,在调用原来的方法,应该就能解决我们的问题? 然而,真的是可以哦,可以劫持

相关文章推荐

如何获取Java层的函数在Dalvik中对应的Method?

为什么要获取Java层的函数在Dalvik中对应的Method数据结构呢?因为要Hook Java层的某个函数,首先得获取该函数在Dalvik中对应的Method数据结构,然后修改其函数指针指向另外一...

Dalvik模式切换到ART模式时出现问题及整个函数调用过程

对切换到ART模式后的启动日志进行分析,发现如下错误: ERROR 1 : Fatal signal 10 (SIGBUS) at 0x00000000 (code=128), thread 115 ...

Android培训班(76)Dalvik虚拟机的CallStaticVoidMethod函数

在前面两个函数的介绍里,已经找到要执行方法的类,要执行的方法ID,那么接着下来要做的事情,就是执行方法,其实就是解释Java程序的字节码。那么Davlik虚拟机是怎么样执行方法的代码呢?又是怎么样解释...

Android培训班(77)Dalvik虚拟机的dvmInterpretStd函数

通上面的学习,先初始化解释器的状态,然后调用解释器来执行方法。解释器又分为两种,一种是使用汇编写成性能优化的解释器,一种是使用标准C语言写成的解释器,可以很通用,理解起来也容易一些。接着下来,就先来理...

android虚拟机(Dalvik)和标准Java虚拟机(JVM)的区别

两者共同点: 都是解释执行 byte code都是每个 OS 进程运行一个 VM,并执行一个单独的程序在较新版本中(Froyo / Sun JDK 1.5)都实现了相当程度的 JIT compile...

Android平台体系结构中的虚拟机Dalvik与JAVA中的虚拟机有什么不同

Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速CPU上表现出的高性能,确实令...

android中ADT版本问题: java.lang.NoClassDefFoundError和conversion to dalvik format failed with error 1错误

最近在ubuntu上面配置android开发环境时候出现n多错误,把心得说一下,如果遇到类似错误,修改下就好了,到目前为止,ADT的版本已经升级到18了。当SDK版本升级到4.0.3的时候,会要求AD...

Android开发之浅谈java虚拟机和Dalvik虚拟机的区别

本文主要介绍java虚拟机和Dalvik虚拟机的区别 ,参考文章http://www.cnblogs.com/carlo/p/4947763.html 哈哈请看文章!...

Android开发之JAVA虚拟机、Dalvik虚拟机和ART虚拟机简介

原文http://blog.csdn.net/jason0539/article/details/50440669#comments,主要 JAVA虚拟机、Dalvik虚拟机和ART虚拟机的区别,请看...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Dalvik模式下劫持 Java 函数
举报原因:
原因补充:

(最多只允许输入30个字)