Profile冰峰魔焰的世界PhotosBlogLists Tools Help

阿文

Occupation
Interests
雪域山脊 绵延万里 落峪飞鹰 展翅再起
November 26

亲历地震-今日九江地震余震波及武汉

早上8点多钟的时候,正在床上看CCTV2的马斌读报节目,老妈在屋里前后走动忙着扫地拖地,忽然感到房屋好像晃动了一下,床也前后摇晃起来,持续时间大约是1-3秒.因为是1楼,而且离我家不足100米就是一条铁轨,当时还觉得是不是有火车过引起的震动啊.可是马上就发现不对,这震动好像地面一边沉降下去另外一边还保持原样一样.我比较纳闷,当时没感觉到是地震,我试着晃动了下身子,看看能否遥动床,发现稳当的很,遥不动.于是怀疑是自己的幻觉,可能是头昏了吧.后来就没放在心上.10点半,弟弟打电话回来,说发地震了,学校都停课放学了,我才意识到是有地震.中午来到网上,查看了下,江西九江发生地震了,5.7级,看来还蛮近的.中午看新闻,有个老太太在电视里面说,她站在板凳上擦柜子,结果被震到地上了,板凳也倒了.我想她可能是在楼上,感觉比较强烈.一楼好像没什么感觉.后来我问老妈,她说她也没感觉到.中午12:57分(我电脑上显示的时间),明显感到再次震动,显示器在摇晃,地板在做平移运动,不过持续的时间也不长,就1秒钟.后来在网上也看到新闻,12:55分武汉再次有感余震.新闻里面说的是震动了20秒,可能是楼层的缘故吧,我的感觉没那么长.
 
为中国祈祷,为所有人民祈祷.希望不要再震了(新闻里面说已经有14人死亡).天佑中国!
November 20

杀破狼

  所谓杀破狼,是指一种星象,最早见于易经,属于紫薇斗数,在命理学中,七杀,贪狼,破军在命宫的三放四正会照时,就是所谓的"杀,破,狼"格局.
  贪狼星:在斗数中代表桃花,欲望,其实,基本运势中有贪狼,是让人具有强烈的求胜意念.要在组织中求胜,一方面要与人竞争,一方面又要建立自己的人脉,巩固势力,过程中不仅充满了复杂的变化,更必须具有适度的勇气与交际手腕.也许是交际过了头,反而让贪狼背负了桃花的特色.
  七杀星:七杀是杀破狼星系中,变动比较稳定的一颗星曜,此曜有如军中大将,运筹于帷幄之中,决胜于千里之外.
  破军星:古人说破军星为一恶曜不利六亲之宿,于人之身命,背厚肩斜,性刚执拗,凶暴好杀.
  杀破狼又代表一种命相,古代那些征战沙场的大将军,多半是属于这种命格。杀破狼座命的人一生飘迫,大起大落,却有着一举成名的英雄体质。 
November 10

创建一个虚幻的层窗口(Win2000/XP)

procedure TForm1.FormCreate(Sender: TObject);
var
  ExSty:DWORD;
begin
  ExSty:=GetWindowLong(Handle,GWL_EXSTYLE);
  ExSty:=ExSty or WS_EX_TRANSPARENT or WS_EX_LAYERED;
  SetWindowLong(Handle,GWL_EXSTYLE,ExSty);
  SetLayeredWindowAttributes(Handle,cardinal(clBtnFace),125,LWA_ALPHA);
  MoveWindow(Handle,Screen.Width-Self.Width,0,Self.Width,Self.Height,false);
end;

试试,在Win2000\XP下有效果.

November 05

制作无输出函数名的 DLL 文件

用 Delphi 用长了,总是发现,有些和 MS 不同的地方。例如,MS 的公开库中,常常隐藏了许多重要函数,这些函数在系统中常常有起着非常巨大的作用。一旦知道如何调用,可以给自己的应用程序提供很强的功能和很大的灵活性。但,这些函数通常又没有函数名(即使用 ExeScope 查看 DLL 文件的导出表也看不出函数意义),仅仅只有一个序号来表示。有时候我又自己想,为什么我在写程序的时候不能学学 MS 隐藏一些自己不希望公开的函数呢?
 
其实用 Delphi 写 DLL 的时候,使用简单的技巧就可以实现隐藏函数名的效果。让我们来看看下面这个 DLL 源码:
 
library proDll;
 
uses
  Windows;
 
{$R *.res}
 
procedure ShowMessageA(hWnd: HWND); stdcall;
begin
  MessageBox(hWnd, '您调用的是 ShowMessageA 函数', 'DLL 函数信息',
    MB_ICONINFORMATION);
end;
 
procedure ShowMessageB(hWnd: HWND); stdcall;
begin
  MessageBox(hWnd, '您调用的是 ShowMessageB 函数', 'DLL 函数信息',
    MB_ICONINFORMATION);
end;
 
exports
  ShowMessageA index 1 name '',
  ShowMessageB index 2 name '';
 
begin
end.
 
注意看 exports 部分,用 index 关键字指定输出函数的序号,后面紧跟一个 name 关键字指明输出函数名称。关键就在这里,name 后面是一个空字符串,这样就给函数生成了一个空字符串名。实际效果既是隐藏了输出函数的名称。是不是很容易呢?
 
那么我们怎样调用这样的输出函数呢?由于没有了函数名,我们调用起来会显得和以前不一样。其实也不用担心,调用同样非常简单。我下面就静态调用和动态调用制作了两个工程,源码如下:
 
静态调用例子:
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure ShowMessageA(hWnd: HWND); stdcall; external 'proDll.dll' index 1;
procedure ShowMessageB(hWnd: HWND); stdcall; external 'proDll.dll' index 2;
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessageA(Handle);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessageB(Handle);
end;
end.
 
动态调用的例子:
 
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}
type
  TDllShowMessageFunc = procedure (hWnd: HWND); stdcall;
var
  hDllHandle: THandle;
  ShowMessageA, ShowMessageB: TDllShowMessageFunc;
procedure LoadFuncDll;
begin
  if hDllHandle = 0 then
  begin
    hDllHandle := LoadLibrary('proDll.dll');
    if hDllHandle = 0 then
      raise Exception.Create('proDll.dll 加载失败');
    try
      {
      lpProcName: the second argument of function GetProcAddress
        Points to a null-terminated string containing the function name,
        or specifies the function's ordinal value. If this parameter is
        an ordinal value, it must be in the low-order word; the high-order
        word must be zero.
      }
      @ShowMessageA := GetProcAddress(hDllHandle, Pointer(HiWord(0) or LoWord(1)));
      if @ShowMessageA = nil then
        raise Exception.Create('proDll.dll 中没有输出 ShowMessageA 函数');
      @ShowMessageB := GetProcAddress(hDllHandle, Pointer(HiWord(0) or LoWord(2)));
      if @ShowMessageB = nil then
        raise
Exception.Create('proDll.dll 中没有输出 ShowMessageB 函数');
    except
      FreeLibrary(hDllHandle);
      hDllHandle := 0;
      raise;
    end;
  end;
end;
procedure FreeFuncDll;
begin
  if
hDllHandle <> 0 then
  begin
    FreeLibrary(hDllHandle);
    hDllHandle := 0;
    @ShowMessageA := nil;
    @ShowMessageB := nil;
  end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
  if
@ShowMessageA = nil then LoadFuncDll;
  ShowMessageA(Handle);
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
  if
@ShowMessageB = nil then LoadFuncDll;
  ShowMessageB(Handle);
end;
initialization
  // do nothing
finalization
  FreeFuncDll;
end.
 
呵呵,好了,让我们也来隐藏 DLL 里面的函数吧!!!
May 12

谈论CheckPoint ZoneLabs Firewall 使用印象

引号

CheckPoint ZoneLabs Firewall 使用印象

虽然我的个人PC一直都使用Windows 2003 Server.
但是从来都不装防火墙与防病毒软件.
或许是因为对自己技术的自信.
事实证明我的机器在我疯狂的安全策略的打造下一直非常的安全.

昨天我装上了 CheckPoint 公司收购的 ZoneLabs 公司的 Firewall.
并不是因为对自己以后的不信任.呵呵.而是对 CheckPoint 的"盲目"崇拜而已.
使用了24小时以后.不得不承认.ZoneLabs的防火墙不愧为世界个人防火墙第一品牌.
看来 CheckPoint 也是英雄惜英雄啊.哈哈.

ZoneLabs给我最大的感觉是.稳定.高效.占用资源极少.
几乎没有一种防火墙在进程监控.进出口流量过滤.安全策略制订.
个人隐私控制都实时活动的状态下.仍然保持这么小的资源占用率.
并且反映迅速.提示专业且清晰.界面就不多说了.非常漂亮.
并且可以自己定义皮肤.这或许是国内软件差的很远的了.

ZoneLabs跟CheckPoint都沿袭国际安全思想.
将网络安全的区域定义为可信任与不可信任的区域.
并且在防火墙整体的安全策略中按此思想逻辑划分.
区域清晰明了.每个策略定位明确.可扩充性大.

ZoneLabs在对于个人隐私的控制上一点也不逊于庞大复杂的Symantec的SCS系统.
不仅仅支持Cookies.URL.Session.AD Banner.Ax控件.第三方软件等常用的过滤.
对VBS.Javascript.IE.NS.Html.Page的头信息等高风险威胁也可防御和定制.

更多的内容可以访问: http://www.zonelabs.com/store/content/home.jsp

说了这么多.仅仅是个人的使用想法.自己回头看看.感觉说的很杂了.
呵呵.各位有兴趣自己装一个用用.相信会把一些垃圾产品放弃罢.

April 19

通过窗口句柄获得 IWebBrowser2 接口源码

function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
  hInst: HWND;
  lRes: Cardinal;
  MSG: Integer;
  pDoc: IHTMLDocument2;
  ObjectFromLresult: TObjectFromLresult;
begin
  hInst := LoadLibrary('Oleacc.dll');
  @ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
  if @ObjectFromLresult <> nil then begin
    try
      MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
      SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
      Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
      if Result = S_OK then
        (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);
    finally
      FreeLibrary(hInst);
    end;
  end;
end;
February 06

辞旧迎新, 趣谈年俗

    农历节日是一年劳作的人们为自己安排的休息日, 无一例外地都挂靠在历法上, 又都和敬畏鬼神有瓜葛. 春节就是中国农历的元旦, 它从腊月二十三到正月十五元宵节(有的延伸至正月十八), 这二十来天浓缩了中国农业社会民俗文化的精华. 但"春节"二字, 却是近代才有的. 辛亥革命后, 推行公历, 为区分公历元旦, 才称正月初一为"春节".

小年送灶神

    小年, 通常是腊月二十三或二十四(各地风俗不同, 所以有此差异), 这一天是祭灶神日. 在头一天就要洒扫庭堂, 屋顶天花板, 还有现在的吊顶, 一年也难得触及的, 一定要清扫. 被褥一定要洗濯, 挂出来晒日头.

     灶神是道教中的小神, 和土地神差不多等级. 这一天, 灶神要上天向玉皇大帝禀报, 用现在的话就是"述职", 人们就送灶神上天, 请他吃糍粑, 粘住了嘴巴, 他就说不清了. 用如今的正规说法, 这叫让他不作为. 看样子, 随着房地产价格和燃油价格看涨, 土地爷和灶王爷的身份应该年年高升.

除夕守岁

    除夕常称"大年三十", 但除夕并不一定都是在腊月三十, 因为有时腊月是小月, 只有二十九天.

    这一天全家围坐火炉旁闲聊, 迎新年到. 从南北朝时就开始的守岁, 延至今日习俗依然. 不过今天的人们要团聚谈何容易, 电视晚会的粘合力也越来越弱, 但有一样仍在维持, 而且是发扬光大, 那就是长辈给小孩的压岁钱. 压岁本是压祟, 就是镇邪之意, 现在自身都变得邪乎了.

    团年要吃团年饭, 还要吃年糕 ,年糕就是"年年高", 要吃饺子, 饺子就是"更岁交子", 辞旧迎新, 关键是它面貌可喜, 极似元宝. 这一天还要祭祖, 城里没了, 乡下还有, 至今黄陂村子里, 从除夕到十五都要摆上肥膘肉, 祖宗还是老口味, 爱吃大肥肉.

初一到初四拜年

    大年初一, 一大早, 由内到外, 开始拜年. 先关起门拜, 小辈给长辈拜, 现在磕头作揖都不兴了, 简化到拱拱手, 说个"新年好"就成. 接着拜禧神, 开门出去拜, 也叫"出方". 初一拜本家叔伯父, 初二拜舅父外祖父, 初三拜岳父, 初四拜姑父. 然后就是一般亲戚, 街坊邻居, 上峰同僚陆续拜过. 小孩拜年又可得到一笔外快----利市钱, 加上不用上学, 所以他们过节最快乐.

初五接财神

    这是从初一以来最重要的活动. 财神爷和福禄寿禧诸神一样, 都是玉皇大帝的重要幕僚, 可不能像糊弄灶神一样马虎. 在这个财神的生日里, 民间都把赵公元帅, 关老爷和手持"招财进宝"的增财神一并供奉. 武汉人都一窝蜂地赶到长春观敬财神表. 这天凌晨, 庙里观里都是香火最旺的时候.

贴春联

    节日家庭的装饰之一是大门的春联, 五代以后属主孟昶曾在桃木板上写下第一副春联: "新年纳余庆, 嘉节号长春." 后来, 桃木板演变成纸. 朱元璋为阉猪户写下的一幅春联, 堪称绝妙: "双手劈开生死路, 一刀割断是非根."

倒贴福字

    福字的正名叫"春牌". <<梦梁录>>载: "士庶家不论大小, 俱洒扫门闾, 去尘秽, 净庭户, 换门神, 挂钟道, 钉桃符, 贴春牌, 祭祀祖宗." 这已将如何做足春节表面文章说得非常详备了. 倒贴春牌, 有人附会与朱元璋有关, 这倒不重要, 重要的是, 路人随口一读, "福倒了", 就是"福到了", 好彩头.

闹元宵

    这是春节期间又一个重大的活动. 乡间正月从十五闹到十八. 过去叫元宵节为上元节. 汉文帝在正月十五平息了"诸吕之乱"后登基, 所以这一日汉文帝一定要出宫玩耍, 与民同乐. 到汉明帝时, 又令元宵节燃灯, 宋朝时, 又出现了猜灯谜.

    元宵的驱鬼迎祥民俗活动也是最集中最热闹的, 如果到乡下去看看, 住一宿, 定可领略到地道的舞狮舞龙, 划彩莲船, 踩高跷以及蔚为壮观的焰火宴会. 游行队伍从这一户走到那一户, 这一村走到那一村, 所过之处, 户户放鞭, 噼啪之声经久不息. 可惜城里已经禁鞭, 元宵节的"闹"字是难得体现出来了.

 
There are no photo albums.