自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(526)
  • 资源 (13)
  • 问答 (4)
  • 收藏
  • 关注

原创 HandlerThread 源码分析

前言在Rxjava还没普及的handler是我们最常用的线程间通信帮助类.本文需要对Handler有一定的了解,可以参阅博主的其他文章Handle 源码分析与学习我们首先看一个Demo:class MainActivity : AppCompatActivity() { val handlerThread = HandlerThread("一个子线程") var h: Handler? = null override fun onCreate(savedInsta

2021-04-11 22:35:25 167

原创 Android 类加载器

前言我们知道Java存在双亲委托模型,具体可以参考Java虚拟机详解(十一)------双亲委派模型。本文将讲解Android下的类加载.本文将以5.0作为源码讲解。

2021-04-11 22:12:02 150

原创 AsyncTask源码解析

前言在旧时AsyncTask和Handler作为两个异步框架,但如今Google已在文档中废弃了AsyncTask推荐使用Kotlin协程.但是源码分析依然可以学到很多有用的东西。简单的使用class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setCont

2021-04-11 20:03:02 169

原创 Android Binder驱动分析九 RPC

前言接上文Android Binder驱动分析八 getService本文将研究MediaPlayer最后如何将数据传输到MediaPlayService//MainActivity.javapublic class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

2021-04-11 11:26:46 270

原创 win32 跨进程句柄共享

前言Win32 中所有敏感的资源全部都是内核管理,如果应用程序想调度敏感资源,则需要句柄进行间接操作。对于相同资源,每个进程的句柄值也不同的.句柄值仅能在自己程序有意义,比如进程A的句柄值22指向是资源A,进程B的句柄值是30指向资源C. 那么我们该如何共享进程的句柄?方式有如下两种:父子进程句柄拷贝句柄拷贝DuplicateHandle 文档BOOL DuplicateHandle( HANDLE hSourceProcessHandle,//想要从那个进程复制句柄 HA

2021-04-10 21:20:12 497

原创 Android Binder驱动分析八 getService

前面几篇文章中我们成功的将mediplayservice注册到binder驱动和servicemanager

2021-04-10 18:41:53 549

原创 Android Binder驱动分析七 线程相关

承接上文Android Binder驱动分析六 addservice源码分析大量借鉴 Android Binder机制(八) MediaPlayerService服务的消息循环//frameworks/av/media/mediaserver/main_mediaserver.cppint main(int argc __unused, char** argv){ //知识点sp<xxx> 类似java的WeakReference<xxxxx> //sp 内部的

2021-04-06 22:09:21 196

原创 Android Binder驱动分析六 addservice源码分析

承接上文:Android Binder驱动分析五 addservice源码分析servicemanager发送一个指令BINDER_WORK_TRANSACTION给mediaplayservice,而后唤醒其线程。mediaplayservice唤醒后会在binder_thread_read,由于这个函数出现过很多次了这里直接简单略过//drivers/staging/android/binder.cstatic int binder_thread_read(struct binder_pr

2021-04-05 21:08:17 233

原创 Android Binder驱动分析五 addservice源码分析

Android Binder驱动分析三 addservice源码分析分析了如下的代码:将事务添加到servicemanager,然后将其唤醒添加一个binder_work事务给mediaplayserice我们在分析下servicemanager被唤醒后的流程,servicemanager在内部会开启一个死循环代码去接收信息,而代码会被阻塞在binder驱动的binder_thread_read函数。//drivers/staging/android/binder.cstatic int

2021-04-05 20:37:13 292

原创 Android Binder驱动分析四 addservice源码分析

Android Binder驱动分析三 addservice源码分析接着上网我们分析了如下的代码:将事务添加到servicemanager,然后将其唤醒添加一个binder_work事务给mediaplayserice我们这里分析mediaplayservice提交事务后会做什么//drivers/staging/android/binder.cstatic long binder_ioctl(struct file *filp, unsigned int cmd, unsigned lo

2021-04-04 21:23:41 1822 1

原创 Android Binder驱动分析三 addservice源码分析

前言本文分析如何向ServiceManager注册一个服务。我们这里以mediaplayservice进行分析.首先需要明白的概念。句柄(handle)

2021-04-03 23:59:36 447

原创 win32 运行指定其他的进程

WinExecUINT WinExec( LPCSTR lpCmdLine, UINT uCmdShow);WinExec官方文档 lpCmdLine:会从一下目录查找对程序当前应用启动的文件夹当前目录(应用程序启动时可以修改当前目录的位置,和启动目录不是一个概念)Windows/system 目录(打开你的操作系统安装盘即可查看)Windwos 目录环境变量PATH目录uCmdShow:这个用于传给子程序,告诉子程序,父进程想让她如何显示窗口,如最大化SW_MAX

2021-03-29 21:26:20 372 1

原创 Binder驱动分析 Parcel写入Binder对象

Parcelhttp://wangkuiwu.github.io/2014/09/05/BinderCommunication-AddService01/frameworks/native/libs/binder/Parcel.cppframeworks/native/libs/binder/Parcel.h

2021-03-28 20:39:22 428

原创 binder 红黑树rb_node转实体对象

c内存的骚操作我们看下下面的代码,给你一个成员变量的地址如何转化为其包裹的父结构体的对象?struct Node { long next;};typedef struct _student { char sname[20]; Node mynode;} ;struct _student * getFromMember(Node *node){ //todo?获取从node对象转化为_student *对象} int main(int argc,

2021-03-23 23:37:04 502 1

原创 win32 注册表操作API

前言注册表是windows提供给开发者存储轻量级数据的地方。我们可以通过键入regedit打开注册表.我们首先像HKEY_CURRENT_USER\Software\\QQBrowser写入一个value值的一个案例int main(){ HKEY openkey = NULL; //打开或者创建一个注册表key LONG nRet = RegCreateKey(HKEY_CURRENT_USER, "Software\\QQBrowser", &openkey); if (nR

2021-03-23 23:35:55 928

原创 Android Binder驱动分析二 ServiceManager与binder驱动

Android Binder驱动分析一 ServiceManager启动流程前言本文可能涉及过多的linux内核知识,需要读者自行储备。上文我们尽在framework层分析了ServiceManager的启动流程,很多细节都没在binder驱动层面说明。本文使用3.18的内核版本,读者可自行下载 https://source.android.com/devices/architecture/kernel/...

2021-03-21 11:35:07 377 1

原创 dll 导出函数转发

前言有时候我们导出的dll仅仅想导出一些函数声明,然后有其他dll进行实现,我们成这里导出声明为:导出函数转发https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp?view=msvc-160# pragram comment

2021-03-20 23:38:43 1288 1

原创 dllmain

win32提供了一个特殊函数名叫DllMain,这个函数写在dll中会根据四种情况进行回调。某个线程加载了dll某个线程卸载了dll主进程加载了dll主进程卸载了dll微软dllmain官方文档我们在dll工程随意新建一个类//My.cpp#include<iostream>#include<process.h>#include <windows.h>using namespace std;BOOL WINAPI DllMain( _In_

2021-03-19 23:03:26 499

原创 Win32 静态库与动态库

库的概念在开发中我们往往有需求,需要把工程的输出作为另一个工程的输入,就像Java中的jar一样.obj 方式实现共享我们在c编译的流程可知,我们会将c文件编译成一个obj文件。于是乎我们可以把obj文件和头文件给另一个工程,那么也可以实现库的效果。A工程//MyAdd.cpp#include "MyAdd.h"int MyAdd::add(int p, int q){ return p + q;}//MyAdd.h#pragma onceclass MyAdd{publi

2021-03-18 21:34:55 251

原创 Android Binder驱动分析一 ServiceManager启动流程

getprop dalvik.vm.heapsize 获取虚拟机内存大小

2021-03-18 17:53:57 457

原创 AGP tramsform

Transform

2021-03-14 19:17:34 387

原创 linux mmap函数

mmapmmap是一个可用于IPC,文件拷贝的API,其特点在于所谓的0拷贝。本文需要读者自行了解虚拟内存机制,和进程隔离的简单知识。我们假设两个进程A和进程B进行消息队列通信。上面的流程:进程首先会从用户空间的虚拟内存指向的实际物理内存的内容域拷贝到内核空间(用户态切换到内核态)另一个进程从内核空间拷贝到用户空间的虚拟内存指向的实际物理内存(内核态到用户态)简单的一个通信进行了两次的内存拷贝操作,和两次的状态的转化,效率较低,因此我们可以利用mmap进行通信。mmap内存状态图:进

2021-03-13 22:11:38 365

原创 BSD grep指令详解

grep是linux或者BSD重要的查找内容命令.我们在以下目录结构做实验.├── a.txt└── mydir ├── InnerTextB.txt └── innerTextA.txt1 directory, 3 filesa.txthello worldHELLO Worldmydir/InnerTextB.txtWORD.txtmydir/InnerTextA.txthello HELLO参数说明-A num, --after-context

2021-03-13 14:35:49 372

原创 Flutter 渲染树

文章目录基础知识WidgetRenderObjectElementWidgetTreeElementTreeRenderTree简单抽象关系图绘制极简流程`StatefulWidget`绘制`StatelessWidget`绘制小结Widget的key参考基础知识Flutter中我们往往会听到如下几个类:WidgetElementRenderObject我们来分别讨论下他们的作用:Widget用于描绘你的视图长什么,相当于一个建造楼房的蓝图。内部存在函数用于生成Element和Rend

2021-02-17 16:07:33 424

原创 HTTP协议

HTTP前言Http历史版本:0.9 只支持传送请求体,不支持请求头等1.0 支持了请求头和POST HEAD请求方式1.1 复用TCP链接,避免多次挥手和握手

2021-02-10 23:59:52 744

原创 Java Pluginable Annotation processing

本文是《深入理解JVM理解字节码》读后笔记,案例和图均来自书中什么是插件化注解处理器插件化注解处理器(Pluginable Annotation processing)又称编译时注解.我们先了解Java编译流程:javac属于编译前端(生成非机器码的中间代码),编译后端(机器码)在JIT触发.我们只需要关心编译前端即可。javac经过parse和enter(语法分析,词法分析)会生成一个抽象语法树(AST),然后调用注解处理器,注解处理器可以在这个阶段使用对应语法修改语法树结构。抽象语法树.

2021-02-09 13:40:19 408 1

原创 网络协议 TCP

前言TCP是传输层协议,具有如下特性:1.可靠性2. 拥塞控制3. 流量控制而拥塞控制和流量控制需要基于滑动窗口机制。滑动窗口消息的接收方: 都会有自己的处理能力上限。比如计算机B一次性只能处理50个消息,这个大小我们叫做窗口大小。消息的发送方:消息的发送方也有一个自己发送大小窗口,当然这个大小受限于上层协议控制,比如流量控制和拥塞控制,一般来说都会小于接收方的接收窗口。我们以发送端的举例说明:我们假设我们要发送的数据为HELLOWORD ,在网络传输中我们传输的数据会分多个片段然后

2021-01-18 10:58:19 188

原创 我司Android App遇到的一个历史换肤问题

前言我司App时常有人反映首页ui颜色和不协调,这个问题持续了很多个月,鄙人也找了很多资料一直百思不得其姐,直到某一天产品同学稳定复现了类似的问题。惨烈状况如下:产品同学反馈打开某一网页再返回首页次问题必现。我们的网页界面比较简单如下:<?xml version="1.0" encoding="utf-8"?><layout xmlns:app="http://schemas.android.com/apk/res-auto"> <androidx.const

2021-01-16 23:16:58 280

原创 传输层 UDP协议

前言UDP是传输层较为简单的协议,基于此的上层协议DNS等。特点1 无可靠传输

2021-01-09 17:53:59 239

原创 网络协议 网络层

前言网络协议 数据链路层

2020-12-27 13:21:58 525

原创 网络协议概述

ISO 1985年定制了 OSI (open system interconnect reference model)参考模型.在标准组织指定前已经存在民间认可的TCP/IP协议

2020-12-20 14:51:43 176

原创 网络模型 物理层和数据链路层

物理层利用一些物理媒介,传输信息。信号往往是电信号或者光信号。信号传输线路媒介:双绞线/网线同轴电缆光纤双绞线这是我们最常见的的物理设备。我们只需要知道以下几点极高性比价适合小距离传输传输电信号同轴电缆性价比仅比双绞线差,但高于光纤适合小距离传输容易受到气象干扰传输电信号逐步被双绞线取代光纤特点:传输速度极快性价比极低适合长距离传输低传输电信号我们在家里办理宽度的时候,宽带师傅都会拉一条光纤到家里,然后在安装一个光猫/Modem将光信号转

2020-12-20 14:50:36 329 1

原创 MFC 常用UI组件使用

Button双击即可自动创建一个点击事件处理函数。BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx) ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)END_MESSAGE_MAP()void CMFCApplication2Dlg::OnBnClickedButton1(){ }Radio关联int变量void CMFCA

2020-12-16 22:59:20 1281

原创 MFC子类化

MFC给每一个原始的Win32控件封装了对应的类,如Edit Control就被封装为CEdit。如下图:上面有一个编辑框,我们想让其关联到自己写的类CMyEdit中//CMyEdit.h#pragma once// CMyEditclass CMyEdit : public CEdit{ DECLARE_DYNAMIC(CMyEdit)public: CMyEdit(); virtual ~CMyEdit();protected: DECLARE_MESSAGE_MAP()

2020-12-09 22:31:20 448

原创 WIN32 子类化

有时候我们需要对弹窗的某一个控件进行更细腻度的控制,比如编辑框只能输入0到9的数字。我们可以利用如下的思想进行实现:1. 获得原始编辑框的过程函数2. 将编辑框过程函数替换为自己的3. 监听文本输入事件过滤无效字符后在透传到原始的过程函数...

2020-12-07 22:12:17 266

原创 MFC 最小Demonstrate

前言MFC是微软提供的一个Win32开源库,皆在帮助我们快速开发。比如原生的一个界面需要经过多个步骤,而在MFC,仅仅是几个类的创建。

2020-11-26 23:51:49 236

原创 Win32 List Control 控件

#前言List Control是Win32中最难用的也是最复杂的空间之一.我们看下本博客的布局样式请注意List Control的view设置为ViewPort,其他视图属性可以自行测试。ViewPort是一个二维的表格视图类型我们首先插入如下数据:三个标题栏,和三行数据。标题栏插入: /*插入标题行*/ LVCOLUMN lv; lv.mask = LVCF_FMT| LVCF_WIDTH|LVCF_TEXT; lv.fmt = LVCFMT_CENTER; lv.c

2020-11-20 23:57:51 1258

原创 java 原子类累加器

前言LongAccumulatorDoubleAccumulator在多线程进程情况,我们可能希望计算某一共享变量,如页面访问次数,商品剩余数量秒杀。本文仅用LongAccumulator做说明。LongAccumulator

2020-11-15 21:54:39 830

原创 WIN32 基础控件的使用

代码模板int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow){ //弹出弹窗 DialogBoxA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), NULL, Dlgproc); return 0;}复选框代码寓意:我们点击显示之后会弹

2020-11-14 00:00:36 629

原创 WIN32 非模态对话框

//创建一个对话窗口实例 HWND dialogHwnd=CreateDialogA(hInstance, MAKEINTRESOURCEA(IDD_DIALOG1), hwnd, mydialog); //显示 ShowWindow(dialogHwnd, SW_SHOWNORMAL); //不会阻塞代码继续运行非模态对话框关闭和模态对话框关闭有所区别INT_PTR CALLBACK mydialog(HWND hwnd, UINT msgType, WPARAM wparam, L.

2020-11-12 22:46:22 508

MyDebugger.rar

MyDebugger.rar

2021-12-12

frida-12.8.20-py2.7-macosx-10.9-intel.egg

mac frida相关工具。如果你使用pip install frida-tools过慢时,请下载此资源,然后放入/Library/Python/2.7/site-packages/目录下

2020-04-05

腾讯2016安全比赛第一题

安全比赛第一题的题目apk.要求写出注册机.考点位于反编译后的so库.

2018-07-21

AIDL bindservice流程图

aidl binserive的流程图 内含png oom两个原文。http://blog.csdn.net/qfanmingyiq/article/details/78094417

2017-09-29

Android使用的libjpeg库文件

可以用于Android下使用libjpeg。内部有arm x86 x64的静态库和头文件

2017-08-29

电脑Gif制作器licecap126-install

电脑安装软件后移动窗口到某一区域点击record录制 然后按下stop键生成gif图

2016-10-20

Navicat Premium数据管理

Navicat Premium 可视化管理一些轻量级数据库如 mysql sqlite内含补丁

2016-09-07

仿QQ截图工具

一款仿照QQ截图的工具简单实用

2016-09-06

ColorCop屏幕取色器

获取屏幕某个点的RGB颜色值 无广告简洁 开发者必备

2016-09-05

fastjson 阿里巴巴json工具jar包

阿里巴巴的json解析生成 的jar包 如快速解析json生成javabean 或者javabean生成json

2016-09-02

fastjson 阿里巴巴的解析生成json工具

2016-09-01

GSON 包含源码和DOC

谷歌解析json工具

2016-09-01

json解析器

用于解析json数据 并且清晰的结构图

2016-08-30

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

TA关注的人

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