2017-12-25 小文字
背景
12月9号,Andorid对外曝光了一个名为Janus的重量级系统漏洞CVE-2017-13156), 由安全研究公司Guard Square发现。
Janus原意是神话中的二元身,用于描述这个漏洞还真是贴切。
整个漏洞其实建立在文件校验规则之上:
一个文件即是APK,又是DEX,在安装APK和执行阶段的校验规则差异,导致可以在APK头部附加一个恶意DEX来欺骗系统
下面我们从市场上随意下载一个apk来做测试。
测试APK
本文涉及的测试APK,只用于单击研究之用...
更多
2017-12-22 小文字
前言
在OkHttpClient实例化一个请求时,我们使用了newCall方法来构造一个Call对象,并执行。
本文一起分析Call的相关实现逻辑。
/**
* Prepares the {@code request} to be executed at some point in the future.
*/
@Override public Call newCall(Request request) {
return RealCall.newRealCall(this, requ...
更多
2017-12-21 小文字
背景
回顾一下,在最简单的GET请求场景中,我们的程序都做了那些事情?
在不考虑个性化配置的情况下,我们只需三步:
我们首先实例化了一个OkHttpClient,如果有多个请求需要发送,这个类将会做一个单例来复用;
同时我们会构造一个Request实例,用于传入我们的请求参数;
最后通过OkHttpCLient实例,new出一个Call, 并执行(或者丢入异步队列)。
OkHttpClient client = new OkHttpClient();
String ru...
更多
2017-12-21 小文字
背景
日常生活中十进制用的最多,但是编码中二进制和十六进制也是随处可见,在打开各种二进制文件数据时,经常出现十六进制,
同时表示MD5,SHA时也常用到。
Hex 与 bit
从表示范围来讲:
一个16进制数:最多可以表示16=2^4
两个16进制数:最多表示16*16=2^8
一个字节是8位,因此既可以用8位二进制数表示,也可以用2位16进制数表示;
总结一句话,2个十六进制 => 一个字节
MD5 与 Hex
在输出MD5的时候我们一般看到的是一个16进制...
更多
2017-12-20 小文字
前言
软件开发领域在不断产生新技术,新框架。作为Android开发者,我们经历了他的巨大演进,从2.1到如今的8.0,系统本身在变化,开源世界也在变化。
过去每个团队在使用自身封装的图片框架,网络框架,如今Picasso,Fresco已经逐步取而代之,甚至Android系统本身也内置了OkHttp的支持。
站在使用者的角度,到最后也只能是使用者,如果要更好理解这些框架背后的技术原理,有必要对其进行深度的源码剖析。
后续分析,将基于如下版本:
OkHttp: http://squa...
更多