炒股的前前后后

今年年初的时候,其实我就有点想买点股票的,之前老婆一直吵着想入市去捞点油水,周围的朋友都通过股市如何如何赚钱了,07年大牛的时候身边有一些朋友也捞了不少,可怜当时没有多余的资金,炒股不如自己搞点实业来得踏实。于是也就错过了一波大好行情,去年6,7月份的时候我们公司的股票600804才15块,年初的时候涨到20左右,本来计划买点的,结果年初去夏威夷土豪了一把,第一次出国买了不少东西,于是把积蓄都用了,年初那几个月还过的紧巴巴的,花了两三个月才恢复元气。后来公司的股票涨到30块,就在想啊,如果去年年中的时候买个20万股票,这一下就翻一倍了,再后来涨到50块钱,就更后悔当时没有买了。。。。

当大盘一路冲高,冲到4000点以上以后,我知道风险太大,要亏。。。所以一直观望着,5月底开始,大盘一直暴跌,到4000点的时候,我决定入市了,准备抄底了,6月底开户,第一天投了10万,结果第二天就赚了1万多,爽啊,于是再投10万,结果就开始每天跌停的日子,跌停了继续接盘买。。。再买。。再买,直到打光所有子弹。。。。。。后来国家救市,公司的股停牌了两星期,复盘后连续3个涨停,回本了不少,再涨了几天,基本上就回本了,其实人的心里啊,当亏本的时候就想回本,回本之后就想赚点再走。。。于是见证了为国护盘,千股涨停,千股跌停这些只有在A股才有的奇葩事情。。

查看更多内容...

Posted in 证券投资 at September 15, 2015. by 傻猫 .    Views: 2049    No Comments

Delphi中Hook API进行进程保护(不允许进程结束的方法)

const
PRG_NAME = 'HA.exe';
var
TerminateProcessNext : function (processHandle, exitCode: dword) : bool; stdcall;
NtTerminateProcessNext : function (processHandle, exitCode: dword) : dword; stdcall;

{$R *.res}
function ThisIsOurProcess(processHandle: dword): boolean;
var
pid: dword;
arrCh: array [0 .. MAX_PATH] of char;
begin
pid := ProcessHandleToId(processHandle);
result := (pid <> 0) and ProcessIdToFileName(pid, arrCh) and
(PosText(PRG_NAME, arrCh) > 0);
end;

查看更多内容...

Posted in 软件开发 at September 11, 2015. by 傻猫 .    Views: 2065    No Comments

SQL Server 2008 Management Studio 过期无法使用解决办法

SQL Server 2008 评估期已过解决方法?
SQL Server Management Studio 过期无法使用解决办法?

解决办法:

安装SQL Server 2008的时候没有输入序列号,后来才发现是Express版的,今天到期了,升级SQL后,SQL服务可以用了,但SQL Server Management Studio缺无法使用。SQL Server 2008有180天的试用期,过期后会提示“评估期已过”的提示。
在网上找了许久找到了一个解决方法:

1、修改注册表(Regedit): 路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ConfigurationState下的CommonFiles文件,将值从1改为3。

2、进入SQL Server安装中心:
201105062325308450.png

3、选择“维护”-“版本升级”
201105062325323825.png

4、输入密钥,其他的根据提示操作,升级完成后就可以了。

Posted in 数据库 at September 8, 2015. by 傻猫 .    Views: 1936    No Comments

自定义Delphi公用函数单元

{*******************************************************}
{ }
{ Delphi公用函数单元 }
{ }
{ 版权所有 (C) 2008 }
{ }
{*******************************************************}
unit YzDelphiFunc;

interface

uses
ComCtrls, Forms, Windows, Classes, SysUtils, ComObj, ActiveX, ShlObj, Messages,
Graphics, Registry, Dialogs, Controls, uProcess, uCpuUsage, StrUtils, CommCtrl,
jpeg, WinInet, ShellAPI, SHFolder, ADODB, WinSock;

{ 保存日志文件 }
procedure YzWriteLogFile(Msg: String);

{ 延时函数,单位为毫秒 }
procedure YzDelayTime(MSecs: Longint);

{ 判断字符串是否为数字 }
function YzStrIsNum(Str: string):boolean;

{ 判断文件是否正在使用 }
function YzIsFileInUse(fName: string): boolean;

{ 删除字符串列表中的空字符串 }
procedure YzDelEmptyChar(AList: TStringList);

{ 删除文件列表中的"Thumbs.db"文件 }
procedure YzDelThumbsFile(AList: TStrings);

{ 返回一个整数指定位数的带"0"字符串 }
function YzIntToZeroStr(Value, ALength: Integer): string;

{ 取日期年份分量 }
function YzGetYear(Date: TDate): Integer;

查看更多内容...

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 2323    No Comments

DELPHI实现关机,兼容全部WINDOWS系统

{=======================================================================================================================
关闭Windows函数ExitWindowsEx(UINT uFlag,DWORD:dwReserved)说明:

控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数。如果Complile时提示EWX_XXXX未定义,那么请手动定义这几个常数,默认情况下是无需我们手动定义的。
const
EWX_FORCE=4; //关闭所有程序并以其他用户身份登录?(!!应为“强制执行否”吧!!)
EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
EWX_REBOOT=2; //重新启动计算机
EWX_SHUTDOWN=1;//关闭计算机
EWX_POWEROFF=8;//切断电源
EWX_FORCEIFHUNG=$10;//不记得了,有谁好心查下MSDN
调用方法:
ExitWindowsEx(EWX_REBOOT,0); //重启计算机
ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0); //强行关机
不过博主经常听到有人说这一API只在Windows 95/98/98SE/Me下有效,而在Windows NT/2000/XP下无效。
其实这是不正确的,这一API在上述平台下均是有效的,只是我们在Windows NT/2000/XP平台下执行此函数之前,必须要获取得关机特权罢了,其实就算是Windows NT/2000/XP系统自身关机也必须要走这一流程的。
view plainprint?
获取关机特权函数如下:
procedure Get_Shutdown_Privilege; //获得用户关机特权,仅对Windows NT/2000/XP
var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[

另一个关机API,InitiateSystemShutdown(PChar(Computer_Name),PChar(Hint_Msg),Time,Force,Reboot);在Windows NT/2000/XP平台下还会自动调用系统本身的关机提示窗口。
InitiateSystemShutdown(PChar(Computer_Name), PChar(Hint_Msg),Time,Force,Reboot);
//关机计算机名,关机提示信息,停留时长,是否强行关机,是否要重启
当我们把Computer_Name设为nil时,默认为本机,如 InitiateSystemshutdown(nil,nil,0,True,False);//强行关机

由于我们需要制作一个通用的关机程序,故要对当前的操作系统进行判断,这个比较简单,函数如下:
function GetOperatingSystem: string;//获取操作系统信息
var osVerInfo: TOSVersionInfo;
begin
Result :='';
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT:
begin
Result := 'Windows NT/2000/XP'
end;
VER_PLATFORM_WIN32_WINDOWS:
begin
Result := 'Windows 95/98/98SE/Me';
end;
end;
end;

执行关机的主函数:
procedure ShutDownComputer;
begin
if GetOperatingSystem='Windows NT/2000/XP' then
begin
Get_Shutdown_Privilege;
//调用此函数会出现系统关机提示窗口,并允许用户取消关机动作
//InitiateSystemShutDown(nil,'关机提示:讨厌你所以关了你!',0,True,False);
ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE+EWX_POWEROFF+EWX_FORCEIFHUNG,0);
end else
begin
ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE+EWX_POWEROFF+EWX_FORCEIFHUNG,0);
end;
end;
=========================================================================================================================}

使用:

procedure TShutDownForm.btn_PowerOffClick(Sender:Object);
begin
ShutDownComputer;
end;

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 1816    No Comments

19种防调试检测方法

unit Unit1;

interface

uses
JwaNative, Debug,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function FD_IsDebuggerPresent(): Boolean;
function PD_PEB_BeingDebuggedFlag(): Boolean;
function FD_PEB_NtGlobalFlags(): Boolean;
function FD_Heap_HeapFlags(): Boolean;
function FD_Heap_ForceFlags(): Boolean;
function FD_CheckRemoteDebuggerPresent(): Boolean;
function FD_NtQueryInfoProc_DbgPort(): Boolean;
function FD_NtQueryInfoProc_DbgObjHandle(): Boolean;
function FD_NtQueryInfoProc_DbgFlags(): Boolean;
function FD_SeDebugPrivilege(csrssPid: THandle): Boolean;
function FD_Find_Debugger_Window(): Boolean;
function FD_Exception_Closehandle(): Boolean;
function FD_Exception_Int3(): Boolean;
function FD_OutputDebugString(): boolean;
function FD_Check_StartupInfo(): Boolean;
function FD_INT_2d(): Boolean;
function FS_OD_Int3_Pushfd(): Boolean;
function FS_SI_Exception_Int1(): Boolean;
function FB_HWBP_Exception(): Boolean;

代码下载:20095641408249.rar

查看更多内容...

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 1784    No Comments

反编译Delphi软件DEDE的使用

elphi/C++ Builder采用控件拖放的方式来完成界面的设计,并和事件联系起来。而这些信息以资源(RCDATA)的方式存放于可执行文件中。DeDe便利用这个原理进行反编译,获取相关信息,将界面与事件联系关系还原,但事件的汇编代码不能还原。DeDe公开了源代码,感兴趣的读者可以研究一下。

1.主要功能
用DeDe可以查看Delphi程序窗体的属性,可以查看按钮对应的事件,并将事件代码反汇编出来,其能识别出Delphi库函数,具有良好的可读性。另外,还可以把事件输出到map文件中供其他工具使用。

2.配置
(1)DSF文件

①DSF文件的含义

DSF文件内容来自不同版本BPL库文件的输出符号表。DeDe反汇编引擎使用这些符号表对生成的ASM代码文件添加类成员方法调用的注释,这非常类似于IDA Pro的FLIRT技术。如果没有加载任何BPL符号表文件,对BPL类的调用就无法以注释的格式说明。

②加载DSF文件

经由“File/Load Symbol File”菜单,就可加载所需要的DSF文件。程序若能正确识别出相应版本的Delphi程序,会自动加载DSF文件。若希望每次启动DeDe的同时自动加载若干DSF文件,选中“Options/Configuration”菜单,在Symbols选项卡中就可完成本项工作。如果想查看包含在某个特定DSF文件中的输出符号表,选择“Options/Symbols”。

③为何需要创建DSF文件

处理使用自定义构件(即不是Delphi安装的构件)的程序时,如果有这些自定义构件的BPL,并且为它们创建了DSF文件,那么DeDe将会注释所有对这些自定义构件的调用。创建DSF的速度也是很快的。

查看更多内容...

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 1601    No Comments

Delphi 5 种反调试技术

1.程序窗口句柄检测
原理:用FindWindow函数查找具有相同窗口类名和标题的窗口,如果找到就说明有OD在运行
//******************************************** //通过查找窗口类名来实现检测OllyDBG
//******************************************** function AntiLoader():Boolean;
const
OllyName='OLLYDBG';
var
Hwnd:Thandle;
begin
Hwnd:=FindWindow(OllyName,nil);
if Hwnd<>0 then
Result:=True
else
Result:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if AntiLoader then
MessageBox(Handle,'找到调试器!','提示',MB_OK+MB_ICONINFORMATION)
else
MessageBox(Handle,'未找到调试器!','提示',MB_OK+MB_ICONINFORMATION)
end;

查看更多内容...

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 1549    No Comments