五千年(敝帚自珍)

主题:【原创】Chrome程序初探(序) -- 素里太守

共:💬73 🌺137 新:
全看树展主题 · 分页首页 上页
/ 5
下页 末页
家园 【原创】Chrome程序初探(序)

Chrome用了几天,GOOGLE相关的设计文档也读了个7788,程序的源码在自己的机器上用VS 2008 build完毕。然后,然后......俺就准备在河里写个小系列。

关于Chrome的程序结构的小系列。

河里的IT大牛不少,俺的文笔也差,不知道这种很枯燥的代码结构分析有没有人喜欢?毕竟这条河也不是“专业”的IT论坛。

管它作甚,大不了“身败名裂” --- 从此不再河里讨论这种纯IT技术的东西。再说了,河里不是鼓励“原创”吗!

下面是提纲:

1.Chrome进程管理.

2.Chrome程序框架.

3.browser.

4.Renderer与Sandbox

5.Webkit.

6.V8

7.Plugin.

8.Chromium中的测试工具.

9.其他.

还是那句话:反映好的话俺就写,反映不好......

关键词(Tags): #plugin#分析#源码#Chrome#浏览器元宝推荐:铁手,

本帖一共被 2 帖 引用 (帖内工具实现)
家园 很好,很好,我这几天也在读firefox 3.0.1

的源码,很希望看到您的大作

家园 看了后又什么心得不妨交流交流。

这样两个主要的开源浏览器就有个比较。

家园 花完就不看了,看也看不明白
家园 能先从build开始吗

这样边学边干,效果更好:)

家园 写吧,虽然咱不一定能看懂,还是想看看。花
家园 鲜花送上
家园 上花上花,呵呵,我以前也分析过gecko的源码

可惜没有整理记录下来,白分析了。呵呵

其实你这个工作我很有兴趣作,没想到有你先行一步了,多谢多谢。

家园 firefox的代码质量不高,过度复杂。
家园 欢迎,欢迎,热烈欢迎!!!!

俺也是该死的IT人士

家园 一点小花絮,“:%” 虫

Chrome推出后,网友们很快就发现了崩溃它的“秘诀” --- :%。

于是有人说:

也许,这本身就是一个彩蛋,Google Chrome开发人员的一个玩笑,要让Chrome崩溃如此简单。

不过真实的情况是,这是一个虫,正二八经的虫。

出错的代码位于c:\chrome\src\net\base\escape.cc,错误犯的还比较低级。

std::string UnescapeURLImpl(const std::string& escaped_text,

UnescapeRule::Type rules) {

// The output of the unescaping is always smaller than the input, so we can

// reserve the input size to make sure we have enough buffer and don't have

// to allocate in the loop below.

std::string result;

result.reserve(escaped_text.length());

for (size_t i = 0, max = escaped_text.size(), max_digit_index = max - 2;

i < max; ++i) {

if (escaped_text[i] == '%' && i < max_digit_index) {

const std::string::value_type most_sig_digit(escaped_text[i + 1]);

const std::string::value_type least_sig_digit(escaped_text[i + 2]);

if (IsHex(most_sig_digit) && IsHex(least_sig_digit)) {

unsigned char value = HexToInt(most_sig_digit) * 16 +

HexToInt(least_sig_digit);

当escaped_text的长度为1,而且仅包含%字符时“可能”出现非法访问的问题。

俺把代码改了一下

unsigned char textplusplus = ((i + 1) < max)?escaped_text[i + 2]:escaped_text[i + 1];

const std::string::value_type most_sig_digit(escaped_text[i + 1]);

const std::string::value_type least_sig_digit(textplusplus);

编译链接,虫子没有了。

安全专家、White Hat Security CTO杰雷米亚·格罗斯曼(Jeremiah Grossman)表示,或许Chrome有所不同,但这将取决于哪一方首先发现软件中的漏洞。他预测称,Chrome的第一个漏洞将会在24小时内被发现。格罗斯曼称:“即使拥有所有正确的设计概念,但如果忘记一行代码,一切都毫无意义。”


本帖一共被 1 帖 引用 (帖内工具实现)
家园 从build系统开始的都是实干型的同学

赞一下先~~~

Chrome 的 build system 是基于 SCon 做的。有兴趣的话可以先看一下!

家园 反应热烈,至少我很喜欢这样的文章
家园 看不懂也要送花,坚决鼓励原创
家园 存技术的文章我喜欢,鲜花鼓励。
全看树展主题 · 分页首页 上页
/ 5
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河