All Stories

突然觉得这个世界好像不正常运作了

昨天中午回到了学校,稍微整理了一下,去剪了头发,然后去找学院的领导,想要申请提前去单位报到,可是院长是很不赞成,于是我只好说,等我先去和导师商量了再说。然后遇到了辅导员,他把我叫去说了一下关于毕业设计的事情,我顿时更加沮丧,我们班被分到电路实验中心,这是我最不擅长的,要是网络,软件之类的才是我最熟悉的部分,可偏偏是电路。从大二开始,电路分析,电子线路,高频都没有学好,就像多米诺骨牌一样的连锁反应。后来索性叫了chuanking 和king 他们一起去吃火锅,有点好笑,自己心里默默地为自己庆祝生日,他们都是不知道的,也许还真以为我是心血来潮。等吃完火锅回到寝室,寝室里只剩下一个室友了,另外一个搬走了,人少了,东西却不见怎么少,寝室里还是那么乱,呵呵。

LLYF Spy WIP

稍微整理了一下代码,把几个只用到Win32 API 的全局函数移到一个DLL 中去了,本想这样可以减小点主执行文件的尺寸,其实也小不了多少KB。网上看到一篇文章,提到VC 程序员和BCB 程序员的代码风格问题,说一般经常看到VC程序员的代码风格要好一些,我也有些感触。用BCB 这么久,还是习惯于C语言的过程式编码风格,从来也设计一个类。

有些奢侈地用SYSTEM身份

照着bingle的代码,改了一下自己用,用来搭配LLYF ProcessHelper,现在ph.exe 可以以SYSTEM 身份运行了,至少在Administrator 组用户下可以以SYSTEM 身份运行了,其实也就是能多看到其它两三个进程的命令行和模块列表,至于kavsvc.exe和kav.exe 还是不行的,也真是厉害,能保得这么严,当然IceSword 的进程也打不开。

关于shellapi.h/shlobj.h头文件和宏定义冲突

昨天在给LLYF ProcessHelper添加TrayIcon功能,代码是从LLYF Spy 那部分完全Paste 过来的,结果编译的时候说NIF_INFO没有定义,还有szInfo、uTimeout这些凡是说要IE Version5.0 以上支持部分都说没有定义,可是我在LLYF Spy 里好好的呀,还以为是XP 的问题,马上退到2000 下,结果一样。于是我打开ShellApi.h看,在那个函数和结果定义前加上#define _WIN32_IE 0x0600,编译是勉强通过了,但是功能没有实现,并没有Balloon ToolTip 出现。后来在看Project Options,发现有个NO_WIN32_LEAN_AND_MEAN定义,是因为有一个函数里调用了SHBrowseForFolder,要加shlobj.h 这个头文件,于是意识到可能和这个有关。搜索了一下,我的程序里并没有调用到这个函数(我晕),于是把这个函数体全部注释掉,把这个头文件和宏也删了,编译和运行都正常了。

关于OutputDebugString 的模拟

从这篇文章中可以知道,通过简单的几步设置,便可模拟OutputDebugString,可以用下面的代码描述:

使用OutputDebugString 调试窗口程序

学编程是从DOS下开始的,用了一定时间的TC2.0,使得养成了用printf 输出变量值进行调试的坏习惯。到了写窗口程序时,就遇到了些麻烦。 窗口程序没有方便的进行控制台输出的方法(其实是我不知道),于是,用了几年的用MessageBox 进行输出的调试手段,太麻烦了,因为MessageBox 会打断程序流程,还要人为手动让它继续运行,这是最让人恼火的。

LLYF Spy WIP && Others

今天看了一下Shotgun 那个端口进程关联的代码,那是在Win2000 下可以运行的,虽然得不到(System)8#进程的信息,但可以在普通账号下运行。到XP 下有点小问题,只是因为2000 和XP 对句柄类型表示的枚举值不同,2000下是0x1A,而XP是经0x1C,改了就可以像2000下运行了。

LLYF SocketCapture wip

这是一个用于拦截WinSock API 的程序,主要的目的并不是为了截获数据包,而是为了能从第三方角度方便地观察二进制程序调用WinSock API 的情况,最直接最原始一点的想法,是为了能比较方便地调试自己写的Windows 网络应用程序。

多系统共享Delphi

完成多系统共享BCB6之后,我开始尝试多系统共享Delphi 7 Studio Enterprise (简称D7)和Delphi 2005 Studio (简称D7)。