看流星社区

 找回密码
 注册账号
查看: 3115|回复: 1

Delphi Hook API 非常疯狂

[复制链接]

该用户从未签到

发表于 2011-8-5 12:50:32 | 显示全部楼层 |阅读模式
论坛里有关于HOOK API的贴子, 但其实现在方式显示得麻烦, 其实现在拦截API一般不用那种方式, 大都采用inline Hook API方式。其实也就是直接修改了要拦截的API源码的头部,让它无条件跳转到我们自己的处理过程。

  不多说别的了,开始我们自己的Hook API吧。

  我们今天要拦截的API如下:

  MessageBoxA、MessageBoxW、MessageBeep 和 OpenProcess 。

  首先,大家都知道要在整个系统范围中拦截,需要使用Dll来完成。现在我们打开Delphi 2009,新建一个Dll工程:hookDll。需要说明的是,Delphi是完全面向对象的编程语言,所以我们不要浪费,这个Dll打算用类的方式完成。于是,在新建的DLL工程中在添加一个Unit Pas,命名为unitHook, 用来写拦截类的处理。unitHook.pas中的代码如下:
  1. unit unitHook;

  2. interface

  3. uses
  4.   Windows, Messages, Classes, SysUtils;

  5. type

  6.   //NtHook类相关类型
  7.   TNtJmpCode=packed record  //8字节
  8.     MovEax:Byte;
  9.     Addr:DWORD;
  10.     JmpCode:Word;
  11.     dwReserved:Byte;
  12.   end;

  13.   TNtHookClass=class(TObject)
  14.   private
  15.     hProcess:THandle;
  16.     NewAddr:TNtJmpCode;
  17.     OldAddr:array[0..7] of Byte;
  18.     ReadOK:Boolean;
  19.   public
  20.     BaseAddr:Pointer;
  21.     constructor Create(DllName,FuncName:string;NewFunc:Pointer);
  22.     destructor Destroy; override;
  23.     procedure Hook;
  24.     procedure UnHook;
  25.   end;

  26. implementation

  27. //==================================================
  28. //NtHOOK 类开始
  29. //==================================================
  30. constructor TNtHookClass.Create(DllName: string; FuncName: string;NewFunc:Pointer);
  31. var
  32.   DllModule:HMODULE;
  33.   dwReserved:DWORD;
  34. begin
  35.   //获取模块句柄
  36.   DllModule:=GetModuleHandle(PChar(DllName));
  37.   //如果得不到说明未被加载
  38.   if DllModule=0 then DllModule:=LoadLibrary(PChar(DllName));
  39.   //得到模块入口地址(基址)
  40.   BaseAddr:=Pointer(GetProcAddress(DllModule,PChar(FuncName)));
  41.   //获取当前进程句柄
  42.   hProcess:=GetCurrentProcess;
  43.   //指向新地址的指针
  44.   NewAddr.MovEax:=$B8;
  45.   NewAddr.Addr:=DWORD(NewFunc);
  46.   NewAddr.JmpCode:=$E0FF;
  47.   //保存原始地址
  48.   ReadOK:=ReadProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
  49.   //开始拦截
  50.   Hook;
  51. end;

  52. //释放对象
  53. destructor TNtHookClass.Destroy;
  54. begin
  55.   UnHook;
  56.   CloseHandle(hProcess);

  57.   inherited;
  58. end;

  59. //开始拦截
  60. procedure TNtHookClass.Hook;
  61. var
  62.   dwReserved:DWORD;
  63. begin
  64.   if (ReadOK=False) then Exit;
  65.   //写入新的地址
  66.   WriteProcessMemory(hProcess,BaseAddr,@NewAddr,8,dwReserved);
  67. end;

  68. //恢复拦截
  69. procedure TNtHookClass.UnHook;
  70. var
  71.   dwReserved:DWORD;
  72. begin
  73.   if (ReadOK=False) then Exit;
  74.   //恢复地址
  75.   WriteProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
  76. end;

  77. end.
复制代码
至此,unitHook.pas的代码OK了,其中加了详细的注释,在此就不再多做解释。现在切换到Dll的代码页,写入以下代码:
  1. library hookdll;

  2. uses
  3.   SysUtils, Windows,
  4.   Classes,
  5.   unitHook in 'unitHook.pas';

  6. {$R *.res}

  7. const
  8.   HOOK_MEM_FILENAME  =  'tmp.hkt';

  9. var
  10.   hhk: HHOOK;
  11.   Hook: array[0..3] of TNtHookClass;

  12.   //内存映射
  13.   MemFile: THandle;
  14.   startPid: PDWORD;  //保存PID

  15. {--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--}

  16. //拦截 MessageBoxA
  17. function NewMessageBoxA(_hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
  18. type
  19.   TNewMessageBoxA = function (_hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
  20. begin
  21.   lpText := PAnsiChar('已经被拦截 MessageBoxA');
  22.   Hook[0].UnHook;
  23.   Result := TNewMessageBoxA(Hook[0].BaseAddr)(_hWnd, lpText, lpCaption, uType);
  24.   Hook[0].Hook;
  25. end;

  26. //拦截 MessageBoxW
  27. function NewMessageBoxW(_hWnd: HWND; lpText, lpCaption: PWideChar; uType: UINT): Integer; stdcall;
  28. type
  29.   TNewMessageBoxW = function (_hWnd: HWND; lpText, lpCaption: PWideChar; uType: UINT): Integer; stdcall;
  30. begin
  31.   lpText := '已经被拦截 MessageBoxW';
  32.   Hook[2].UnHook;
  33.   Result := TNewMessageBoxW(Hook[2].BaseAddr)(_hWnd, lpText, lpCaption, uType);
  34.   Hook[2].Hook;
  35. end;

  36. //拦截 MessageBeep
  37. function NewMessageBeep(uType: UINT): BOOL; stdcall;
  38. type
  39.   TNewMessageBeep = function (uType: UINT): BOOL; stdcall;
  40. begin
  41.   Result := True;
  42. end;

  43. //拦截 OpenProcess , 防止关闭
  44. function NewOpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; stdcall;
  45. type
  46.   TNewOpenProcess = function (dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; stdcall;
  47. begin
  48.   if startPid^ = dwProcessId then begin
  49.     result := 0;
  50.     Exit;
  51.   end;
  52.   Hook[3].UnHook;
  53.   Result := TNewOpenProcess(Hook[3].BaseAddr)(dwDesiredAccess, bInheritHandle, dwProcessId);
  54.   Hook[3].Hook;
  55. end;

  56. {--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--}

  57. //安装API Hook
  58. procedure InitHook;
  59. begin
  60.   Hook[0] := TNtHookClass.Create('user32.dll', 'MessageBoxA', @NewMessageBoxA);
  61.   Hook[1] := TNtHookClass.Create('user32.dll', 'MessageBeep', @NewMessageBeep);
  62.   Hook[2] := TNtHookClass.Create('user32.dll', 'MessageBoxW', @NewMessageBoxW);
  63.   Hook[3] := TNtHookClass.Create('kernel32.dll', 'OpenProcess', @NewOpenProcess);
  64. end;

  65. //删除API Hook
  66. procedure UninitHook;
  67. var
  68.   I: Integer;
  69. begin
  70.   for I := 0 to High(Hook) do
  71.   begin
  72.     FreeAndNil(Hook[I]);
  73.   end;
  74. end;

  75. {--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--}

  76. //内存映射共想
  77. procedure MemShared();
  78. begin
  79.   MemFile:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, HOOK_MEM_FILENAME);  //打开内存映射文件
  80.   if MemFile = 0 then begin  //打开失败则衉c2建内存映射文件
  81.     MemFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0,
  82.                               4, HOOK_MEM_FILENAME);
  83.   end;
  84.   if MemFile <> 0 then
  85.     //映射文件到变量
  86.     startPid := MapViewOfFile(MemFile,FILE_MAP_ALL_ACCESS,0,0,0);
  87. end;

  88. //传递消息
  89. function HookProc(nCode, wParam, lParam: Integer): Integer; stdcall;
  90. begin
  91.   Result := CallNextHookEx(hhk, nCode, wParam, lParam);
  92. end;

  93. //开始HOOK
  94. procedure StartHook(pid: DWORD); stdcall;
  95. begin
  96.   startPid^ := pid;
  97.   hhk := SetWindowsHookEx(WH_CALLWNDPROC, HookProc, hInstance, 0);
  98. end;

  99. //结束HOOK
  100. procedure EndHook; stdcall;
  101. begin
  102.   if hhk <> 0 then
  103.     UnhookWindowsHookEx(hhk);
  104. end;

  105. //环境处理
  106. procedure DllEntry(dwResaon: DWORD);
  107. begin
  108.   case dwResaon of
  109.     DLL_PROCESS_ATTACH: InitHook;  //DLL载入
  110.     DLL_PROCESS_DETACH: UninitHook; //DLL删除
  111.   end;
  112. end;

  113. exports
  114.   StartHook, EndHook;

  115. begin
  116.   MemShared;

  117.   { 分配DLL程序到 DllProc 变量 }
  118.   DllProc := @DllEntry;
  119.   { 调用DLL加载处理 }
  120.   DllEntry(DLL_PROCESS_ATTACH);
  121. end.
复制代码
这样,我们用来hook API 的 Dll 就完工了。 在Dll中,我们还使用到了内存映射,用来实现在拦截全局时的内存共享,如这个例子中需要保存调用此hook的进程句柄,以防止通过任务管理器关闭示例程序。

  编译生成 hookdll.dll 文件,就可以使用了。现在我们再来建立一个测试用的程序。


  如附图所示,画3个按钮,分别为"Hook"、"UnHook"、"MessageBox",前两个用来安装和删除钩子,第三个用来显示一个消息框,你将会看到被Hook后的情况。测试工程的代码如下:
  1. unit FMain;

  2. interface

  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;

  6. type
  7.   TfrmMain = class(TForm)
  8.     btnHook: TButton;
  9.     btnUnhook: TButton;
  10.     Button1: TButton;
  11.     procedure btnHookClick(Sender: TObject);
  12.     procedure btnUnhookClick(Sender: TObject);
  13.     procedure Button1Click(Sender: TObject);
  14.     procedure FormCreate(Sender: TObject);
  15.   private
  16.     { Private declarations }
  17.   public
  18.     { Public declarations }
  19.   end;

  20. var
  21.   frmMain: TfrmMain;

  22.   procedure StartHook(pid: DWORD); stdcall; external 'hookdll.dll';
  23.   procedure EndHook; stdcall; external 'hookdll.dll';

  24. implementation

  25. {$R *.dfm}

  26. procedure TfrmMain.btnHookClick(Sender: TObject);
  27. begin
  28.   StartHook(GetCurrentProcessId);
  29. end;

  30. procedure TfrmMain.btnUnhookClick(Sender: TObject);
  31. begin
  32.   EndHook;
  33. end;

  34. procedure TfrmMain.Button1Click(Sender: TObject);
  35. begin
  36.   MessageBox(0, 'abdfadfasdf', nil, 0);
  37. end;

  38. procedure TfrmMain.FormCreate(Sender: TObject);
  39. begin

  40. end;

  41. end.
复制代码
完成后运行,先不点击"hook"按钮,直接点击MessageBox,你会发现现在已经被拦截了。为什么我们还没有安装钩子就被拦截了呢?程序出错了吗?呵呵。当然没有出错。反过来看看DLL中的一处代码

  1. .............

  2. //环境处理
  3. procedure DllEntry(dwResaon: DWORD);
  4. begin
  5.   case dwResaon of
  6.     DLL_PROCESS_ATTACH: InitHook;  //DLL载入
  7.     DLL_PROCESS_DETACH: UninitHook; //DLL删除
  8.   end;
  9. end;

  10. ............

  11. begin
  12.   MemShared;

  13.   { 分配DLL程序到 DllProc 变量 }
  14.   DllProc := @DllEntry;
  15.   { 调用DLL加载处理 }
  16.   DllEntry(DLL_PROCESS_ATTACH);
  17. end.
复制代码
可以看到,在DLL装入内存的时候其实就已经调用了InitHook,将要拦截的API拦截了。这时候看看任务管理器能不能关闭我们的程序,试一下就知道还可以,因为我们还没有调用StartHook来传入我们程序的PID,所以还可以被关闭。    到此这篇文章就结束了, 本人从小语文没及过格(^_^),文章写的不太好,不过源代码都贴上了,有详细的注释,相信大家也能看明白。如果你发现有什么错误的地方,要记得告诉我哦!

该用户从未签到

发表于 2020-5-25 09:41:56 | 显示全部楼层



{2020年5月18日} 未来三个月之内,爆发全球历史最大金融海啸!{假摔}

{2020卝年5月18曰} 未来三个月之内,bào发全球历卝史最大金融海啸!{假摔}


作者: 寒武纪
时间 :   2020卝年5月18曰О8:03:06   星期一   农历四月廿六    周润发生曰
            庚子年 【鼠年】  辛巳月  辛酉曰
           上证综指 2868.46点        恒指 23797.47点      道指 23685.42点

本人 邮.箱 :
126  用户名: mmdd2016     s i n a  c o m   用户名:  mmdd2016
126  用户名: iii217               s i n a   c n    用户名:  iii217


突然的,全球金融 雪 崩 溃 坝 、彻 底 崩 溃 ;
没有什么,“谁也没想到”、“友邦惊诧”黑天鹅白天鹅哥斯拉撞冰山;
一切都是,蓄谋已久的,精心策划 --- 惊天魔盗团。zéi喊捉zéi。

1  未来三个月之内,即,2020卝年六卝月、七月、八月,将会突然bào发,
    人类最大金融海啸,全球股市、金融市场连续跌亭大崩卝盘。
    {大盘连续或稍稍间断30/40多个跌亭板 }
    太久的忍耐时机筹谋,财狼们终于要动手了;
    虎虎虎。亦喜亦忧。大吉大凶。
    静里忽然动干戈。
    缠中说禅13年之前预卝言的,2019毁miè性下跌。{稍有误差}
    已故“周期天王”周金涛的,“2018年到2019年是康波周期的万劫
    不复之年”。
    道琼斯,憋了11年的一泡shǐ,总算找到了,公共厕所。


2  全球连续跌停大崩卝盘的见底点位:
    上证综指160点左右,见底{166④的十分之一}。
    以今天上正宗指2868.46计算,大约“瞬间”跌去 18倍。
    也可能,上证综指95.79点,见底。
    最震撼的推卝倒重来,竟然只是,洗盘 !冲顶之前的洗盘 !!
    道琼斯,跌去37倍,6④0点见底 --- {6④40.О8点的十分之一};
    23685.42 --→ 6④0点 ;
    恒生指数跌至1000点见底。
    23797.47 ---→ 1000点   ;   
    仙股满天飞。

12个跌停板之后,停顿、反弹,之后,还有12个跌停板;
12个跌停板之后,停顿、反弹,之后,还有12个跌停板。

谜底,让你吃惊的合不拢嘴。这就对了。
我强调,我重申,股价跌去97% ,跌去97%,不是庄稼们 发 疯 了,
而是,他们,早已筹谋的,既定共同战略布jú。
不把散户完全吓的 屁 滚 niào liú,如何能达到,彻 底 洗 盘 的目的 ??
跌去九成,就像1929,对老股卝民来说,已经xí以为常;中卝囯股市,
曾经跌去90%的股票,比比皆是。
跌去九成,已经,无fǎ充分刺卝激震撼、撕 裂 老股卝民、私募的神 经
系 统 。

五重斩,五福临门:
5178 ÷ 2 ÷ 2 ÷ 2 ÷ 2 ÷ 2 = 162点
为何,大盘160点左右见底??
本人在:
{2019年11月30曰}论证2020上半年全球大崩卝盘的见底点位
{2019年5月19曰}论证2019下半年全球大崩卝盘的见底点位
【2016年3月11曰】四论,全球塴盘的见底点位。
【2015年9月26曰】三论,全球塴盘的见底点位。

“论证2020下半年全球大崩卝盘的见底点位”,即将装配。
……  ……
几篇文章之中有模糊的猜测论证,网上可以搜到。

2020卝年06卝月、07月、О8月,忽然之间,天昏地暗,天崩地裂。
朕给出,令庸俗大众惊诧疑惑、无fǎ接受的“庄稼底牌”,是无价之
宝。
真卝理是电,不以任何人,任何泉卝利、任何所谓“大多数”的,意志为
转移。

猝不及防,永远出乎散租意料,“万万没想到”,使之“猜不透”、团
团转、热锅蚂蚁;驱赶围猎,永远使散户沉浸于tān婪恐惧烈火寒冰,
追涨shā跌动物本能”无fǎ自拔;
是庄稼们百战百胜吃香喝辣的,看家fǎ宝。

见底点位{上证宗指160点或者95.79点},是全球庄稼们{xié.饿.金融精英}
蓄谋已久的共识,不以任何人意志为转移。
即,在见底之前,出抬任何“救卝市利好”都是徒劳无益瞎折腾。
当见底之时,即便不出抬任何救卝市措施,股市也会自动“大反转”腾空
而起。

中外庄稼qīn蜜配合,完成最后的惨烈洗盘。
而直接zá盘、直接做空,导致中卝囯股市xuè崩的,是中卝囯庄稼 ---- 中卝囯
财富精英之中的精英 --- 资本大鳄。
每一只股票背后,都有庄稼暗中cāo纵走势。
每一个囯卝家的股票市场,金融市场,都有庄稼总司令暗中主导一切。
黑老大、总指挥,是 黯 黑 帝 囯。

索罗斯的,类兽卝性、反射理论,动态远均衡,大起大落理论。
缠中说禅的,跌停板洗盘fǎ。


3  见底时间:2020卝年九月至2020卝年十一月全球股市同步见底。
   
---- 见底以上证综指160{95.79}}点为准 ,见底时间仅为cū略推断。
---- 好深一个坑;假摔,象 真 的 一 样 。
---- 来去匆匆,夏曰的大bào雨 ;
       两个月、至多三、四个月之内,完成最后的 溃 坝 式 终极洗盘。
---- 最疯狂的连续跌停,然后,迅速连续涨停,拉起。荡秋千。
       庄家绝不敢在底部卝长期停留,因为股价太便宜,远低于,庄家
       的长期平均持仓成本。

连序跌亭洗盘过程之中,会有反弹诱多,会有横盘迷卝魂阵,会有底部
构筑 W底的把戏 。
并没有什么,情绪彻底崩溃,破罐破摔,歇斯底里不顾一切 ……
---- 演戏给你看!
       一切都在,沉着冷静,聪明透顶庄稼们的,精确掌控之中。

本人对见底点位、见底时间的推演预卝测,可能不那么准确。这也,不
是什么大问题。
最关键,全球崩卝盘的“性质”,是“挖坑”行情,是黎明之前最后最
黑卝暗最凶狠的一shā。这一点,本人绝对不会错,这就够了,足够了。
但愿本剂疫卝苗,不会失效。
底部巨量,惊天的底部巨量,历卝史最高成交量,全民目击的狐狸尾巴,
谁也无fǎ否认。
这就是,庄稼xī筹洗盘,mǎi入股票的,铁证。

疑似吹鼓手,2018年О8月16曰海通证券分析师荀玉根表示,A股正处
于第五轮牛熊周期的底部。前四次除20О8年那次外,其余三次1994年
7月-1996年1月、2002年1月-2005年6卝月、2012年1月-2014年6卝月都
是以时间换空间的震荡圆弧底。(中卝囯证券报)
“磨底是长期的、复杂的过程,期间不排除还会出现巨震。”

为什么,一定是“以时间换空间的震荡圆弧底”;
而不可能是,“以空间换时间的金zhēn探底”??

可能的未来是,当上证综指连续跌停跌破贰佰点,跌破壹佰点之时,
病急乱投医,中卝囯guān卝员们按约定祭出四个救卝市最大shā器 :
----  取消T+1,取消10%涨跌幅限卝制,万亿借款央行直接入市,
        推出88.8万亿经济刺卝激印钞票计划。
中卝囯股市,次曰,一天bào卝涨30倍,把所有散户都闪了腰。
中卝囯百卝姓,早应学会“听反话”。它吹东,那么表明东方有máo坑;
西边才是正确的选择与方向。

4   2020卝年六卝月、七月、八月全球崩卝盘断头铡dāo的利空借口:
     持续上涨91年{从1929算起},终极冲顶之前必然的总洗盘,
     持续上涨91年{从1929算起},终极冲顶之前必然的总洗盘,
     不以任何人,任何事卝件为转移。
不管,有没有,中美贸易战、全球贸易战,{朝}核危卝机、特朗普 金 正 恩
疯狂折腾、美囯加息 、或者降息预期落空、中卝囯加息、恐怖xí卝击、斩首
遇刺、中卝囯经济下行,债务危卝机、公卝投危卝机、拖欧危卝机、减持危卝机、汇率
危卝机、石油危卝机、钱荒危卝机、囯债收益率、失业率、质押股票平仓、配资
bào仓、liú姓投资人出卝事卝了、科创板注册制、囯债收益率、下调评级、程序
化自动交易、软件自动斩仓、新股IPO抽xuè、索罗斯做空、巴以危卝机、土
耳其叙利亚伊朗阿卝拉卝伯危卝机、关门危卝机、废除中岛条约、第二个“广卝场协
议”、担忧全球经济放缓、文明冲卝突赵薇gē韭菜、地卝震海啸火山烹卝发冠状
病dú疫情等自卝然卝灾卝害、中美贸易战重启战火、中美断绝交往、最怕不确定
……
一座或N座城市,遭受一次或N次的,原子弹恐怖xí卝击 ---- 本质还是自己
zhà自己,演戏。资本来到世间,从头到脚,每个máo孔都滴着xuè和肮卝脏的东
西。
狼吃小羊,与溪水无关,与 武 汉 肺 炎 病dú 是不是 生 物 武卝器无关。
庄家们刻意制卝造。蓄谋已久。zéi喊捉zéi。闪击战。
又一次,剪羊máo,开始了。躲不过的。

所谓“股汇双shā”其实并不存在,或者,那只是一个借口。
看看人卝民币汇率长期走势图,与中卝囯股市涨跌并无正相关。况且,本币
贬值,股市上涨,才是正常现象。例如,委内瑞拉的万倍通胀,股市上
涨74倍。
汇市,或者其它乱七八糟,都是 烟 雾 弹 ,股市,才是主战场。


5  有关2019年底{2020}bào发人类最大金融海啸的,事先预卝测文章:

{1}《2019年底bào发世界经济危卝机的可能性分析(万字长文)》
         ---- 知乎;星象大白;2019年8月28曰前后成文
               专题分析,一共分为4篇,长达3万字。
{2}《2019年底,下一次全球经济危卝机的bào点》
               鸿网电商   2018年О8月О8曰 09:47
         ---- 上个月,美囯经济扩张周期已经达到第九年。而有史以来最
               长的一次是十年。
               历卝史上,美囯经济扩张周期最长一次持续了120个月(十年)。
               最近一次美囯经济扩张周期自2009年至今已经9年。
              根据周期规律,下一次经济危卝机的关键时点锁定在2019年底
              --- 2020卝年初。
              但周期规律锁定的大致时点仍然会根据全球经济发展的新威胁
              产生提前或滞后。
              现在全球的经济形势比较复杂,虽然美囯经济发展强卝势,但“
              新危险”也很明显。
{3}《周金涛周期论:2018到2019是康波周期的万卝劫卝不卝复之年》
            2018年02月09曰 09:33    新浪证券综合
         ---- 40岁以上的人,人生第一次机会在20О8年,如果那时候mǎi股
                票、房子,你卝的卝人生是很成功的。20О8年之前的上一次人生
                机会1999年,40岁的人抓卝住那次机会的人不多,所以20О8年
                是第一次机会。
                第二次机会在2019年,最后一次在30年{2о30年}附近,能够
                抓卝住一次你就能够成为中产阶卝级,这就是“人生发财靠康波”
                的道理。
                2017年中期、三季度之后,将看到中卝囯和美囯的资产价卝格全
                线回落,2019年出现最终低点,那个低点可能远比大家想像
                的低。
                周天王于2016年12月27曰中午因胰腺癌去世。
{4}《货币战争和人卝民币战略(上)》 (2006-03-07 13:26:38)   缠中说禅
         ---- 这个大型调整的巨大shā伤力将在2019年达到高峰。1929年的
                悲惨时刻将在美囯重演,这个时间刚好是90年,而这个90年
                的一半1974年,其附近产生了所谓石油危卝机的中型调整。而
                其3/4位置出现的是1997年的亚洲金融风bào。
                由此可见该周期的重要和准确性。
                20О8年是1997年与2019年的一半位置,其前后是一个值得关
                注的时间之窗。但其后半句无须修改,多头陷阱的上升以及其
                后的下跌也不过是更大级别下跌的前奏,这个毁miè性的下跌将
                在2019年卝前后达到最高卝潮。


6   2020卝年六卝月、七月、八月,全球 崩 盘 的性质{ 唯一原因 } :
     总出货行情bào发了:全球股市91年总出货,中卝囯股市30年总出货。
     总出货之前的总洗盘。底部必放巨量{庄家xī筹;人类最大成交量}。

     2868.46 ——→ 1000或者800{反弹诱多} ——→ 160点或者95.79点

腰斩、腰斩、再腰斩、再腰斩。见底。{谁能想到?}
2868.46点大约开始计算,bào跌、连续跌婷、至1000点{或800点},诱
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 18:14

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表