自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

一个有趣的C语法

今天阅读代码时第一次碰到形如:#include <stdio.h>void main(){ printf("%d\n", add(2,3)); getchar();}int add(a, b)int a;int b;{ return a+b;}这里定义函数add时,参数列表中没有指明形参a、b的类型,反而在 int add(a, ...

2011-06-02 00:48:06 149

逆向C++学习手记(1)

最近常遇到的尴尬是看着汇编代码却无法在脑中反应出正确的C、C++代码 。近日偶得一篇好文《reverse C++》,细读下来收获不少。遂打算在《reverse C++》的基础上扩展,从汇编角度来认识一些C、C++中的语法现象~先从一些简单的开始...一、数组数组是非常基本的数据结构,C++中的数组表现为一段连续可用的内存。注意这段内存地址是连续的,这与很多动态语言中的数组不一样,举...

2011-05-31 02:40:47 146

从Entry Point到main函数调用(6):exit

本章是该系列最后一篇,打算看一下 exit 函数中究竟做了些什么。 main函数的返回值在第(5)篇里完成了_cinit() 的分析之后,mainCRTStartup中接下来代码是:__initenv = _environ;mainret = main(__argc, __argv, _environ);exit(mainret);很显然, 其实main函数是可...

2011-05-28 20:31:32 197

从Entry Point到main函数调用(5):_cinit

_cinit在完成了_setargv() 以及_setenvp() 之后,进入到_cinit 函数。该函数的注释很短,就一句“do C data initialize”,让人完全摸不着头脑。不过不用着急,可以阅读_cinit 函数的实现来加以分析。 _cinit 函数很短,大致上分为三个步骤:1. _fpmath() 或者 (*_FPinit)();2. _initte...

2011-05-27 15:07:23 271

从Entry Point到main函数调用(4)

先撇开_ioinit()不谈,IO有点儿麻烦,待有空再去挖掘这些东西。GetCommandLineA该函数的汇编代码短得令人发指。7C812FBD mov eax, dword ptr [7C8855F4]7C812FC2 retn 可见7C8855F4是个特殊的内存地址,其中存放了一个指向命令行缓冲区的指针。通过该指针,可以访问整个exe的完整路径...

2011-05-21 14:13:51 133

从Entry Point到main函数调用(3):_heap_init

_heap_init在(1)中提到过该函数用于分配一个堆。这个堆是动态创建的私有堆,与系统为进程分配的默认堆不同。进程启动时,系统会在进程虚拟地址空间中创建一个堆,即为进程的默认堆。默认堆的创建和回收均由系统来完成。除了默认堆,进程中还可以存在若干个私有堆。私有堆可以由进程动态创建,并且在此基础上进行内存分配、释放等操作。 _heap_init函数本质上是调用了HeapCrea...

2011-05-19 14:48:14 247

从Entry Point到main函数调用(2):GetVersion

之前(1)篇中大致介绍了mainCRTStartup,但是其中一些调用到的函数并未深究,现打算逐一剖析它们。 GetVersionGetVersion函数是kernel32.dll中提供的API,用于获取当前Win平台的版本。准确的说,GetVersion可以获得3个信息:1. OSPlatformId2. OSBuildNumber3. OSMinorVersio...

2011-05-19 03:16:21 137

从Entry Point到main函数调用(1)

(1)  之前在调试exe时感觉很奇怪,为什么Entry Point并非直接进入到main函数。举例来说,如果将一段空的C代码build为exe:void main(){ }编译环境为:VC6 release。再将该exe文件进行反汇编,那么从EP开始的代码部分大概形如:ASM代码 push ebp……一段汇编代码 ……call Main函数 ...

2011-05-18 17:46:18 326

第一次干掉 CrackMe && TraceMe

这两个exe都是“加密与解密”书中“调试篇”的例子,CrackMe很简单,TraceMe稍微复杂一点。 1. CrackMe 分析CrackMe无需用OD打断点跟进,该程序逻辑非常简单,仅仅从汇编代码的调用上即可判断出其内部实现。先用IDA进行CrackMe的反汇编,在最下方可以看到关于序列号的判断:注意刚开始是无法看到右侧“序列号不对,重新再试一次”的字样的,需...

2011-04-30 18:33:32 149

OD一段简单的C++代码

开始学习逆向,从熟悉的js、php跳跃到汇编,有点小凌乱... 先来OD一段简单的C++代码:#include <string.h>#include <windows.h>#include <stdio.h>int funcA(int a, int b);void main(){ int a; int b;...

2011-04-28 01:09:59 473

浅析document.referrer

在流量统计服务中都有Traffic source这个功能。Traffic source是针对访次级别的概念,换句话说,当访次建立的时候,landing page的流量来源即是该访次的Traffic source。虽然Traffic source有很多种,不过不幸的是依据现在JS,获得Traffic source的途径只有两种——document.referrer、window.opener.更不幸...

2011-04-04 19:43:37 377

一道阿里前端笔试题

题目:用CSS实现布局让我们一起来做一个页面首先,我们需要一个布局。请使用CSS控制3个div,实现如下图的布局。用javascript优化布局由于我们的用户群喜欢放大看页面,于是我们给上一题的布局做一次优化。当鼠标略过某个区块的时候,该区块会放大25%,并且其他的区块仍然固定不动。思路:注意题目由于是只让用3个div,这让我很不习...

2011-03-24 15:49:39 124

【翻译】JS里的各种trim实现

前不久blog频道有人发表了一篇讲js里各种trim实现的 http://justjavac.iteye.com/blog/933093不过没有提及Dojo中的trim。Dojo中有两种trim实现: 1.较为常用的:dojo.trim = String.prototype.trim ? function(str){ return str.trim(); } :...

2011-03-12 16:34:22 166

JS中的对象创建、属性访问

一条面试题公司最近在招web fronter,免不了需要进行面试,于是大家在群里讨论一些题目。其中一题如下:var a = new Object;var b = new Object;var c = new Object;c[a]=a;c[b]=b;alert(c[a]===a); //输出什么 这个题目还是很有意思的,第一反应往往会心中涌起一丝疑惑...

2011-03-09 21:45:43 112

DOJO中的面向对象__第五章 Dojo/_base/declare.js源码剖析(2)

接着第四章....(二)   getInherited和inherited方法  这两个方法是对外提供的扩展接口,可以用declare出来的类型的实例调用。它们的用途是返回父类中曾经出现的方法,或者对其进行调用。具体的用法在第二章中已经描述,这里不再举例说明。  1. getInherited方法主要用来返回父类中的方法;  2. inherited方法主要用来调用父类中的方法...

2011-02-28 19:55:01 158

DOJO中的面向对象__第四章 Dojo/_base/declare.js源码剖析(1)

  declare.js中包含了整个dojo面向对象中最重要的代码,即对类型表达和扩展的一些封装。功能虽然强大,但是幸好文件并不复杂,拥有清晰的脉络。整个declare.js一共定义了15个函数,14个具名函数,1个匿名函数。这14个具名函数中又有一些是declare.js内部使用的函数,外部无法调用,还有一些是由dojo提供的接口,可以供dojo.declare声明的类型来调用。具体函数如下所示...

2011-02-25 22:24:28 154

DOJO中的面向对象__第三章补充:关于preamble、postscript以及chain

  这是dojo.declare中的三个极度蛋疼的功能,在对多继承的实质有所了解之后,才会加深对这三个功能的认识,所以放到最后说。这里就不谈它们的实现原理了,第四章中也许会描述到= =!   如果觉得运行constructor前后缺少了些什么,那么preamble、postscript可以很好的帮助我们进行弥补。根据我时间不长的开发经验,还想不出什么情况下需要这种操作来弥补。如果在类型的定...

2011-02-17 21:00:12 135

DOJO中的面向对象__第三章 Dojo中的多继承

(一) 定义多继承  Dojo在基于类的面向对象系统方面增强了JS的表现力,在第二章中已经提到Dojo还允许用户使用多继承,本章将主要探讨关于多继承的内容。利用dojo.declare声明多继承的类是很方便的,用户只需要传递一个数组(superclass)进去,superclass数组包含了所有的父类。dojo.declare("A", null, { constructor: f...

2011-02-17 17:40:08 144

DOJO中的面向对象__第二章 Dojo中的类

(一) 利用DOJO.DECLARE声明类  在第一章中讲到,JS提供的是一种基于原型(Prototype)的对象系统。这与JS诞生的初衷有关,在把JS仅仅用作页面脚本时,利用Prototype是一种优势。因为基于原型的对象不仅节约内存,初始化速度快,更重要的是还拥有了原型继承带来的动态特性。但是如果需要在RIA环境下构建丰富的web应用,JS的原型系统又显得不太给力。在继承性方面,原型系统...

2011-02-16 11:39:08 98

DOJO中的面向对象__第一章 JS中的对象模型

DOJO中的面向对象   在JS中并没有Java等面向对象语言中常见的类(class)的概念。也就是说,JS中的对象并非基于类的。它仅仅为开发者提供了一些原类型和基本的内置对象。从写法上来看,它更加的类似于面向过程式的语言,函数仿佛成了JS中的顶级实体。事实上,JS是一门函数式编程的语言。所以当我们需要以面向对象的方式来构建大型web应用时,原生态的JS并不能很好的满足这一点。而DOJO的...

2011-02-15 19:14:59 262

两道百度前端笔试题

 两题都是在网上看到的baidu2007年前端笔试题,彼时我刚好写VB代码写的如火如荼热火朝天两眼发白四肢抽搐题目1按照格式:xxxx年xx月xx日xx时xx分xx秒动态显示时间要求不足10的补0 这个题的解法多得泛滥。我花了点时间写了个练下手。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http:/...

2010-10-12 19:45:51 138

树的深度优先与广度优先遍历

原题出自百度的笔试: 简述树的深度优先及广度优先遍历算法,并说明非递归实现。 当时我看到这个题目的时候,已经完全记不得非递归算法该怎么实现了,后来查阅了一下,要用到两个辅助的数据结构:深度优先遍历--->栈;广度优先遍历--->队列;这里以二叉树为例来实现。import java.util.ArrayDeque;public class ...

2010-10-12 18:59:50 329

遭遇onbeforeunload

想用JS控制网页卸载确实是一件麻烦的事情。如果用了unload,那么很显然我们无法阻止网页的replace或者reload,因为unload是在下一个网页到达client的时候被触发的,因此我只能选择用onbeforeunload。 onbeforeunload被调用的时候,当前的页面尚未被unload,所以我们还能够来得及做一些事情。但是我最近也遇到了一些麻烦:onbeforeu...

2010-05-31 14:34:02 101

原创 【翻译】window.name Transport(2)

Benefitswindow.name比其他的跨域传输技术更有优势:它比JSONP安全。可以说它和其他基于安全传输的frame(比如fragment identifier messaging,Subspace)一样安全。(I)Frames 也有他们自己的安全问题,因为frame可以改变其他frame的location,但这是个非常不同的安全溢出,一般来讲,这并不严重。...

2010-05-09 14:35:17 184

【翻译】window.name Transport(1)

        下午写代码的时候遇到一个跨域传输的问题,隔壁dojo组的帅哥建议我用dojox.io.windowName,于是我打算找点资料看看,结果搜了下发现几乎没有相关资料,连dojoCampus上都没有详细解释。没办法,dojo的文档确实不多。我只好找篇英文的凑活看看了。原文链接:http://www.sitepen.com/blog/2008/07/22/windowname-t...

2010-05-06 22:38:03 116

hashCode乱谈

 今天翻“Effective Java”的时候看到了改写hashCode()方法的三条约定,突然想到了某些问题,故记录之。1.在每个改写了equasl方法的类中,你也必须要改写hashCode方法。2.如果equals相等,两个对象的hashCode必须相等。3.不相等的对象倾向于产生不相等的散列码,但是不相等的对象可以有相等的散列码。我在写代码的时候曾遇到...

2010-03-23 19:03:54 77

空空如也

空空如也

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

TA关注的人

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