自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 Webview与Javascript

0x01 WebView 概述WebView 是 Android 的一个控件,用于在应用程序中展示 Web 网页Google 的官方解释为A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit ren

2021-03-18 14:38:53 889 2

原创 Android 刷机/Root/安装Xposed

Android 11 正式版发布了,刷了个新系统体验下,顺便把刷机、root这些过程整理下整体流程是参考Android Explained的系列文章:https://www.androidexplained.com/google/pixel-2/0x01、启动模式(Boot Modes)Android系统正常启动时会进入已经安装的操作系统,此外系统还提供了一系列启动模式可以执行其他操作,如 Fastboot/Recovery Mode,这些模式允许用户不同程度地访问设备的各个空间1.1 Fastb

2020-09-30 14:15:15 2566

原创 MQTT协议分析

目录0x01 概述0x02 工作模式0x03 数据格式3.1 固定报文头3.2 可变报文头3.3 负载0x04 消息类型4.1 CONNECT4.2 CONNACK4.3 PUBLISH4.4 PUBACK4.5 PUBREC4.6 PUBREL4.7 PUBCOMP4.8 SUBSCRIBE4.9 SUBACK4.10 UNSUBSCRIBE4.11 UNSUBACK4.12 PINGREQ4.13 PINRESQ4.14 DISCONNECT0x01 概述MQTT(Message Queuing T

2020-09-25 10:52:11 1017

原创 认证、授权、鉴权、权限控制

相关概念几个易混淆的个概念:认证(Identification): 根据声明者持有的特定信息,来确认声明者的身份例如身份证、用户名/密码、手机(包括短信、二维码、手势密码)、电子邮箱、生物特征(虹膜、面部、指纹、语音等)高安全要求的场景下,会使用多种认证方式组合进行身份校验,即多因素认证授权(Authorization): 资源所有者委派执行者,赋予其指定范围的权限,执行对资源的操作授权实体例如银行卡、门禁卡、钥匙、证书等例如web服务的session机制、浏览器的cookie机制、

2020-09-24 16:13:34 9872

原创 使用supervisor实现进程管理

去年做一个项目,涉及大量脚本操作,然后了解到了supervisor这个工具,可以非常方便的实现脚本运行的管理,从而大大解放了人力;前几天又被问到相关配置,有点忘记了,写个文档简单整理下。0x01 介绍supervisor 是一个基于 python 的进程管理工具,提供了统一的方式方便地执行进程启动、关闭、重启操作。这个工具的原理就是通过 fork/exec 的方式将待管理的进程作为自己的子进程来启动,这样子进程挂掉时,父进程就可以获取子进程的相关信息,然后做相应的处理。简单理解,就是把普通的命令行进

2020-09-24 11:37:59 240

原创 记一次修手机的过程

记一次修手机的过程,附Google Pixel2拆机过程,附按键修改设置-_-|||0x01 手机坏了前段时间,不知道怎么回事,手头测试机的开机键突然坏了,按压无反馈。幸好adb还能用,一直连着电脑用命令唤起屏幕倒也没什么不方便,这里放几条常用的命令:唤醒屏幕adb shell input keyevent 26home键adb shell input keyevent 3back键adb shell input keyevent 4完整的按键事件可以参考:https:/

2020-08-25 19:57:44 1790

原创 蓝牙BLE协议分析【附代码实例】

目录0x01 蓝牙概述0x02 蓝牙技术分类Basic Rate(BR)/AMPLow Energy(LE)0x03 蓝牙架构0x04 蓝牙协议应用层(App Layer)L2CAP(Logical Link Control and Adaptation Protocol Layer)逻辑层(Logical Layer)物理层(Physical Layer)0x05 BLE协议栈Physical Layer(PHY)Link Layer(LL)Host Controller Interface(HCI)L2

2020-08-14 18:55:36 7497 2

原创 Android的证书验证过程

说明:源码分析基于Android_8.11 系统证书源码 /system/ca-certificates/files 目录下存放了系统证书系统证书命名规则为 <hash>.<N>,其中 hash 通过命令生成,N 为从 0 开始的一个整数标记openssl x509 -subject_hash_old -in filenameAndroid 系统中,证书存放路径...

2020-04-27 23:34:31 4485 3

原创 Frida用法详解【附用例】

文章目录0x01 工具安装0x02 设备环境配置(Android)0x03 命令行运行0x04 Python脚本运行0x05 基本使用0x06 开发用例Frida,是一个类似 Xposed/Substrate 的跨平台、动态、插装工具,借助 python 和 javascript,可以非常快速便捷地操作目标进程、修改函数参数返回值等,支持 Android/iOS/Macos/Linux/Wind...

2020-01-16 12:14:56 21036 3

原创 Android_8.1 Log 系统源码分析

0x01 Android Log框架推荐1、 logger提供了一些格式化输出、美观// 添加依赖implementation 'com.orhanobut:logger:2.2.0'// 初始化Logger.addLogAdapter(new AndroidLogAdapter());// 使用Logger.d("hello,Android");2、timber基于原生L...

2019-10-22 17:47:52 1097

原创 Android 网络框架初探

Android 上的网络框架介绍Android一路走来的网络框架变更【网络协议:HTTP】Android 2.2-:HttpClientAndroid 2.3+:HttpURLConnectionAndroid 3.0:HttpURLConnection 增加了对 HTTPS 的支持Android 4.0:HttpURLConnection 增加了对缓存的支持Android 4.4+...

2019-08-12 12:20:19 346

原创 Android 8.1 应用安装过程总结

整体介绍一个 Android 应用安装到手机上大致分为四种情形:系统应用,在设备每次启动时完成安装通过 adb install 命令安装应用市场安装,封装安装过程(略)第三方应用安装或双击安装包,会启动系统应用引导安装无论采用哪种安装方式,最终的安装过程都会走到 PackageManagerService,由这个类来完成一系列的工作。PackageManagerService 实...

2019-08-02 15:24:01 4199

原创 Android 源码编译及真机刷机实录

最近接到一个项目,需要接触 Android 源码,所以走了一遍源码编译和刷机的过程,从开始到成功花了差不多一周的时间,踩了很多坑,在此记录一下。整体分为四个部分:环境配置源码下载源码编译镜像刷机1、环境配置参考:https://source.android.com/source/initializing.htmlAndroid 源码需要在 Linux 或 Mac OS 上编译,...

2019-03-25 17:49:34 3001

原创 Kerberos认证流程

原理:A、B共享一个秘密secret,A通过提供这个秘密secret,向B证明自己是A 协议包含三个部分,如下: Sequence画图网址:https://www.websequencediagrams.com新增了一个子协议——User2User Sub-Protocol:有效保障Server的安全,避免传输Server Master Key 更新后的流程大概如下: 1. C...

2018-08-01 19:33:50 624

原创 drozer 安装

今天搭了一个渗透测试的工具——drozer。 介绍下Drozer: Drozer,原名Mercury,是一款针对Android系统的安全测试框架,包括console(运行于本地计算机)和server(运行在目标设备),通过console与Android设备交互,在设备的代理中执行Java代码。 特点:更快的Android安全评估:drozer可以大大缩减Android安全评估的耗时,通...

2018-05-23 15:28:04 980

原创 dex2jar 和 jd-gui

dex2jar反编译的时候出了点问题: 输出错误 Detail Error Information in File ./APK-error.zip 看了下大多数都是一样的问题:java.lang.RuntimeException: can not merge I and Zsourceforge上解释大概就是一个参数异常,其实就是故意加一段代码,把booleanl和int类型...

2018-05-23 15:26:24 5735 10

原创 Java版本安装配置

Java的下载安装地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html查看本地安装的Java/usr/libexec/java_home -V查看当前安装的Javajava -version(默认情况下指向的是已经安装的最新版本)自动切换Java版本修改系统环境变量~/...

2018-05-23 15:21:37 464

原创 HTTP下午茶

参考:https://www.kancloud.cn/kancloud/tealeaf-http/43837目标:理解http协议和web应用,基于python搭建服务器一、引入:浏览器充当一个客户端与服务器交互的接口包括CSS、HTML、Javascript、视频图片等,都是通过传输协议如http从服务器传输到客户端,从而在浏览器中显示HTTP,即超文本传输协议,用以连接应用...

2018-05-23 15:11:06 343

原创 VirtualApp源码分析——(一)VA启动

VirtualApp(以下简称VA)是一个开源的Android app虚拟化引擎,它提供了一个虚拟空间,允许其他应用运行在这个虚拟空间中,实现应用多开(可重复安装)。在VA中,host应用(VA自身)和client应用(通过VA安装的应用)具有相同的uid。 在运行时,一般会包含三个进程:io.virtualapp,主进程,负责VA的用户界面及应用管理; io.virtualapp:...

2018-05-04 18:06:58 4707 1

原创 数据结构——线性结构

线性结构区别于非线性结构,通常这种数据结构中的数据元素呈现一种线性关系。 主要包括数组、链表、栈和队列这四种。数组数组是一组有序定长的元素集合。 如int array[] = {0,1,2,3,4,5,6}; 由于数组的元素在内存中的地址是连续的,因此它的特点是随机访问速度快。多维数组多维数组可以多下标表示类似平面甚至空间这种概念,其本质也是一维数组来实现。 如int array[2][3]

2017-09-03 22:31:41 1814

原创 设计模式——Singleton

单例模式(Singleton Pattern)也是一种创建型模式。这种模式的重点在于保证类只有一个实例。类通过维护一个static成员变量来记录这个唯一的对象实例,并且提供一个static成员函数作为获得这个唯一实例的接口。 因为类不可被实例化,因此我们将它的构造函数声明为受保护或私有。还是看一个例子。 写一个类Singleton,这个类有一个静态成员变量m_singleton,是这个类的一个静

2017-08-16 11:03:20 294

原创 设计模式——AbstractFactory

上一篇我们提到,可以用工厂模式(Factory Pattern)实现一个类族的对象创建问题,但是对于不同的类,对象创建就需要抽象工厂模式(AbstractFactory Pattern)了。抽象工厂模式的定义为:提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们具体的类。抽象工厂模式的实现为:将这一组对象的创建封装到一个用于创建对象的类,仅需要维护一个这样的创建类。还是用一个具体的例子来解

2017-08-15 23:28:38 210

原创 设计模式——Factory

工厂模式(Factory Pattern)是最常用的设计模式之一。 它属于创建型模式,提供了一种很好的创建对象的方法。首先看一个例子。在类继承过程中,我们经常将一些类的公共接口抽象出来形成一个基类,方法用virtual关键字修饰。利用多态性,我们可以声明一个基类指针,通过指向实际的子类来实现不同的功能。class Shape{ public: Shape();

2017-08-15 20:21:28 227

原创 设计模式——序

感觉学编程开发,尤其是一个较大的系统实现的时候,还是得有一些指导思想,设计模式就是很好的参考。一来它可以帮助我们更好地进行系统设计与开发,提高代码质量,二来其中一些模式对于解决具体问题都有很大的启发或借鉴意义。这系列文章就是我在学习设计模式过程中的一些归纳笔记或心得体会。参考 设计模式精解-GoF 23 种设计模式解析附 C++实现源码 菜鸟教程——设计模式设计模式,英文为Design

2017-08-15 18:41:35 292

原创 网络通信学习——TCP/IP协议

虽然没有学过网络通信,但是也经常听人来来回回地说,还是得了解一下。 学习中,如有不足,还望指教。首先从最通俗的开始讲起吧。 我们每天使用计算机,计算机要联网才能进行消息传递,那么计算机之间如何通过网络连接起来,他们之间如何进行消息传递呢,这就需要制定各种协议。TCP/IP就是这样一种协议。 TCP是Transmission Control Protocol,传输控制协议。IP是Internet

2017-08-08 17:58:08 1063

原创 C++学习笔记——static关键字

面阿里的时候被问了这个关键字的用法,问题很简单,但是当时答得一般,故总结一番。首先说static,表示静态,这是一个C语言里面就有的关键字,C++中仍旧沿用并做了些许扩展。在解释static关键字之前,先了解一下程序的内存布局。内存布局一个程序本质上包含bss段、data段和text段。 bss段通常存放程序中未初始化的变量,如全局变量和静态变量,在编译器编译时分配,系统释放; data段则用来

2017-08-08 17:40:13 281

原创 Android源码学习——linker(4)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。前面讲完了so的加载,这一章来讲so的链接过程。so的链接是实际上就是完成符号的重定位。分别看下PrelinkImage和LinkImage的实现。首先是PrelinkImage,这个函数很长,我们一段段来看:bool soinfo::PrelinkImage() { /* Extract dynamic sec

2017-08-08 00:56:27 1962 1

原创 Android源码学习——linker(2)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。上一部分讲到do_dlopen里面,调用了find_library(name, flags, extinfo)去加载so库,最终返回一个soinfo的指针,我们看下这个过程里面做了什么:static soinfo* find_library(const char* name, int dlflags, const a

2017-08-07 23:32:13 597

原创 Android源码学习——linker(1)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。在Android开发过程中,我们要想使用JNI机制调用一个native方法时,首先会需要调用一个system的方法,把定义了native方法的库加载进来。今天,就从System.loadLibrary(“XXX”)来详细看一下一个动态库的加载过程。 public static void loadLibrary(

2017-08-07 22:13:19 1078

原创 Android逆向分析——ELF文件格式

ELF(Executable and Linking Format)是一种可执行链接格式,详细学习可以参考北大实验室这个文档——ELF文件格式分析,看完真是受益匪浅。网上关于ELF文件格式的讲解已经特别多了,这里就不详细讲了,做个学习总结吧。这个ELF格式文件,有三种类型:1.可重定位的对象文件(Relocatable file) 也就是编译器编译过程中生成的.o文件,它保存了代码和数据,可以与

2017-08-07 16:00:42 1105

原创 Android源码学习——linker(3)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。这一节,我们详细讲so的加载过程,也即ElfReader这个类的Load函数:bool ElfReader::Load(const android_dlextinfo* extinfo) { return ReadElfHeader() && VerifyElfHeader() &&

2017-08-07 15:51:11 669

原创 Android源码学习——ClasLoader(3)

本文学习的源码参考AndroidXRef1,版本为Lollipop 5.1.0_r1。但是目前已经比较明朗了,可以猜测optimizedDirectory是用来缓存我们需要加载的dex文件的,并创建一个DexFile对象,如果它为null,那么会直接使用dex文件原有的路径来创建DexFile 对象。optimizedDirectory必须是一个内部存储路径,还记得我们之前说过的,无

2017-08-06 22:30:49 261

原创 编程笔试——推箱子

头条的笔试题,有一题编程是推箱子问题,之前网易也有类似的题目,思路基本上是一样的。所谓“推箱子”,就是在一个M*N的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当箱子被推到目的地以后,游戏目标就达成了。题目给出的

2017-08-06 20:38:58 719

原创 Android逆向分析——ZjDroid

ZjDroid是一个基于Xposed框架的脱壳工具。 Xposed本质上是一个动态劫持框架,通过替换系统启动时的zygote 进程为自带的zygote进程,加载XposedBridge.jar,开发者就可以通过这个jar包提供的API实现对所有的Function的劫持。具体的后面分析Xposed时再详细看吧。总之呢,Xposed框架是一个非常牛逼的框架,可以便捷地修改系统而不需要刷包,基于这

2017-08-05 19:28:00 732

原创 Android源码学习——ClassLoader(2)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。上一篇文章分析到两个类加载器PathClassLoader和DexClassLoader最后都通过一个native方法openDexFile来实现DexFile对象的构造。但是目前已经比较明朗了,可以猜测optimizedDirectory是用来缓存我们需要加载的dex文件的,并创建一个DexFile对

2017-08-03 13:27:17 540

原创 Android源码学习——ClassLoader(1)

本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1。类加载与动态加载Java代码是通过Class来实现的,程序运行时虚拟机首先将对应的类加载到内存中,然后才能进行对象实例化以及后续工作,而这个加载过程就是通过ClassLoader来实现的,也即是类加载。 同时,在Java虚拟机中,我们可以自定义继承自ClassLoader的类加载器,通过defineC

2017-08-03 12:07:20 625 1

dex-tools-2.1-SNAPSHOT.zip

基于dex2jar源码2.x分支最新版代码(5 Sep 2019)编译的dex系列反编译工具,已修复booleanl和int类型混淆的错误(can not merge I and Z),md5为ec185c22e87038f5082784e541d19fe0

2020-09-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除