自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

飞鸟的专栏

人生的路上,我们都在奔跑,我们总在赶超一些人,也总在被一些人超越。人生的要义,一是欣赏沿途的风景,二是抵达遥远的终点;人生的秘诀,寻找一种最适合自己的速度,莫因疾进而不堪重荷,莫因迟缓而空耗生命;

  • 博客(21)
  • 收藏
  • 关注

原创 弹出异常提示框的崩溃分析

前导分析当程序执行崩溃的时候,如果程序并没有设置任何崩溃捕获钩子时,操作系统会弹出提示框,提醒用户是否调试或是关闭程序,如果这个时候我们使用任务管理器或者外部第三方程序创建了一个崩溃程序的dump,那么我们该如何分析呢。调试分析准备尽可能的准备好dump,二进制文件,以及pdb或者是map文件。加载dump到windbg中,设置调试符号的路径。 我们首先看看主线程的堆栈示意,因为我们的模块基本位于

2016-09-01 13:48:47 6179

原创 windows Object Manager

Handles Object Manager Initialization and Shutdown阶段 0 初始化: 1.初始化obci和obnm,创建信息和对象名称链表 2.创建安全描述符缓存 3.初始化默认对象事件和设备映射锁 4.在EPROCESS AND ETHREAD set GrantedAccess 为高等访问权限 5.创建句柄表,并设置到EPROCESS 的ObjectT

2016-08-31 15:00:53 1036

原创 windows handle manager

前导reactos 句柄的设计位于ex执行体中,一般情况下句柄的使用都或多或少的伴随着对象的使用。目前认为句柄是用户层对系统层引用。 内核句柄表的创建 /* Create kernel handle table */ PsGetCurrentProcess()->ObjectTable = ExCreateHandleTable(NULL); ObpKernelHandleT

2016-08-31 14:30:56 931

原创 windows Heap manager

前缀我们首先看一下关于heap函数的前缀使用: 1. its native interfaces ( prefixed with rtl ) are available only for use in internal windows components or kernel-mode device drivers. 2. The documented windows api interfac

2016-08-31 14:18:41 2079

原创 windows message manager

SendMessage窗口过程函数的调用有两个入口,一个是自己的线程给自己窗口发通知,这样直接调用内部函数进行调用,使用IntCallMessageProc来调用函数,另一种方式是转换用户消息为内核消息,调用NtUserMessageCall来传递消息。LRESULT WINAPI SendMessageW(HWND Wnd, UINT Msg, WPARAM wParam

2016-08-31 10:57:33 1482

原创 windows config manager

Introductionthe configuration manager, the executive subsystem that implements the registry,organizes the registry`s on-disk files. windows organizes the registry data that a hive stores in containers

2016-08-31 10:50:19 1249

原创 chromium中HTTP网络资源的加载过程

chromium中HTTP网络资源的加载主要分两部分,一部分是缓存的网络资源,一部分是线上的网络资源。我们访问http网页的时候,首先访问httpcache,看缓存中的数据是否有效,如果有效,那么我们加载这个数据,如果无效,那么我们访问网络去重新加载资源,当然chromium中HTTP网络资源的加载并没有说起来这么简单,实际上架构设计还是比较复杂的。首先我们先看看HttpCache::Transac

2016-08-23 19:52:43 5772 1

原创 chromium中DNS主机地址解析过程——基于系统函数查询的方式

使用情景前面我们说过FTP协议的网络资源加载,其中在加载FTP资源的开始就要进行地址解析,对于ftp来说,它处理的状态是STATE_CTRL_RESOLVE_HOST。现在我们来分析一下chromium中是如何解析主机地址的,其代码主要位于net\dns中。 对于dns模块来说,对外的主要接口是HostResolverImpl::Resolve,我们从这个接口切入,来了解dns解析过程。上下文调用

2016-08-19 16:58:11 3366 2

原创 chromium中FTP网络资源的加载

FTP网络资源的加载render进程的处理我们在浏览器地址中输入ftp://ftp.sjtu.edu.cn/,来请求ftp数据。 此时windbg会中断,因为浏览器启动了一个render进程来渲染绘制。我们在render进程中如下下断 bu chrome_child!content::ResourceDispatcher::StartAsync这个函数由render进程调用,用来和browser进

2016-08-17 13:04:47 2232

原创 regex 源码分析

前期准备以下代码来源于vs2010sp1 路径:\VC\include\regex 文档参阅的是 ISO/IEC 14882 Information Technology - Programming Languages-C++ C++2011-9-1国际标准文档。正则表达式结果类 // TEMPLATE CLASS match_resultstemplate<class _BidIt,

2016-08-13 10:39:41 1609

原创 sql

链接数据库打开数据库chromium数据库使用的是sqlite进行存储数据的,必然在使用的时候需要一个包装,这个项目是sql,其位于chromium的一级目录中,内部项目并不十分复杂,慢慢的进行分析。首先我们要分析的是链接数据库。在一开始,我们要了解,数据库的访问是在数据库线程中的,而不是在UI线程的,这取决于chromium的多线程机制。Connection类是数据库sql的链接类,用来创建数据库

2016-08-12 09:52:14 697

原创 chromium中的同步机制

chromium中的同步机制我们可以在base\synchronization中看到chromium实现的同步机制,具体的有condition_variable, Lock,Spin_wait, Waitable_event,这几个比较常见的方式。LockLock的使用Lock的实现位于 base\synchronization\Lock*.* 中,在synchronization文件夹中,主要是实

2016-08-12 09:46:15 2051

原创 IPC

创建子进程的主线程创建的时候会创建一个通信管道,用于和主进程进行通信。

2016-08-12 09:40:01 1050

原创 URLRequestFileJob

文件资源的加载过程URLRequestFileJob我们在浏览器的地址栏中输入一个文件的绝对路径,激发浏览器获取加载这个文件的内容。在net层,实际的请求是通过URLRequestFileJob来控制和加载文件的工作启动

2016-08-12 09:37:04 871

原创 std::bind源码剖析

bind实际上用途极为广泛,特别是在多线程的程序中,经常用它将函数进行包装,然后打包发送给工作线程,让工作线程去执行我们的任务。

2016-07-25 17:25:58 5054

原创 vector源码剖析

vector前导准备源码位置 * C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include源码版本Copyright (c) 1992-2009 by P.J. Plauger. ALL RIGHTS RESERVED.Consult your license regarding permissions and rest

2016-07-21 15:01:39 3121

原创 LazyInstance

chromium 延迟加载实例

2016-05-26 19:25:10 1082

原创 allocator

替换CRT堆处理函数base/allocator 中有个python文件用于处理VS中libcmt.lib静态库中堆的处理函数,将其obj文件去除,这对于我来说是一个比较新颖的思路,一直以为只有hook才是一个方案,没想到这种静态链接的方法也是不错的。

2016-05-26 19:23:08 707

原创 BrowserProcessSubThread

BrowserProcessSubThreadchromium WinMain中说到,浏览器主进程Browser的工作线程一部分,其类是BrowserProcessSubThread数据结构,那么我们来分析一下这个类。这个类继承自BrowserThreadImpl,而后者继承BrowserThread和base::Thread。base::Thread继承PlatformThread::Delega

2016-05-26 19:19:07 1930

原创 chromium WinMain

这里研究和分析一下chromium启动的初步,浅析一下

2016-05-26 19:14:15 2179

原创 如何学好windows下C/C++编程

有时,当我说,我是学计算机的,有些人就会说:那个不好学,你脑袋肯定很聪明吧。我不好意思的一笑而过,其实我很笨,记得当初学C的时候我一个20行左右的排序小程序也会憋很长的时间。然而当真正的突破这个门槛,自然而然就是宽敞无疑的高速公路了。。。而学习编程和脑袋是否聪明也没什么必然的联系,智商高自然能好,然而哪一技术又不是这样呢。。编程最主要的是逻辑思维,计算机很笨的,它一点也不智能,它没有逻辑思维,

2012-03-21 12:29:56 669

空空如也

空空如也

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

TA关注的人

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