手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Windows黑客编程基础

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

写程式的方法:在Win98的环境中,先写主干,用最少的代码实现最基本的功能。然后一点点添加功能,每加一点都要调试。尽量少用动态分配、全局变量。充分利用操作系统直接提供的API。在Win98下调试通过之后,再在Win95下调试通过,然后是Win97,WindowsME,WinNT4.0。这样才能写出稳定、快速的程式。
给程式员的建议:1、不要急于求成,这样往往欲速不达。2、不要什么东西都想学,什么都没掌控。3、每天都要自我总结,分析自己的错误率和废码率,不断加强自我管理。4、代码格式很重要。代码要规范、严谨,效率要高。5、不要盲从简单的研发工具(这点笔者不是很同意,最起码要有一定的功底的人才敢这么说)。6、有了成果要公开,不要舍不得,不然很快会过时的(以上两段摘自《程式员》增值合订本2001.上册P18,请读者前往参考)。
四、黑客编程的几个基本技巧
以下将要谈到的几个基本技巧很重要,虽然对于编程高手来说这是在玩小孩子把戏,但对于一位初学者,掌控以下几个技巧将为您的编程扫清道路,而且很容易编写出有趣的程式,培养您对编程的兴趣。
技巧⒈学会修改注册表。
相信大家都知道当浏览了一些网页恶意代码,IE标题、默认主页等被改得面目全非,这就是通过改变注册表来更改系统配置的例子。Windows中的注册表是个好东东,他是windows系统的灵魂,是许多软件记录数据的地方(当然也包括windows本身)。windows通过他记录大量的数据,然后在下一次启动时再读取相应的数据来配置系统。通过控制注册表就能够控制整个系统,所以很多的黑客程式都在注册表上动手脚(尤其是木马程式和作恶剧程式),学会修改注册表能够实现一些有趣而强大的功能。我们完万能够通过编程来操作注册表,达到和手动更改注册表编辑器产生相同的效果。“终极兔子”中的大部分功能就是通过修改注册表来完成的。操作注册表有专门的API函数,大家能够参考有关资料,下面笔者以C Builder为例说明如何在程式中操作注册表:
程式二:编程修改IE标题内容
新建一个工程,在Unit1.h文档中包含Registry单元:
#include
然后就能够在.cpp文档操作注册表了,接着来!在窗体的OnCreate()里加入以下代码(您能够在try{}里面加入任何操作注册表的代码):
TRegistry* Registry;
Registry = new TRegistry();创建一个TRegistry类型的对象Registry,用于修改注册表。
try{
Registry-〉RootKey = HKEY_CURRENT_USER;//配置主键,这是必不可少的,配置好主键后,就能够操作这个主键下任何的键值了。
if( Registry-〉OpenKey("Software//Microsoft//Internet Explorer//Main",FALSE))//调用OpenKey()打开括号里所指的键
{
Registry-〉WriteString("Window Title",”台湾是中国的一部分,世界上只有一个中国!”);//调用WriteString()往注册表里写入IE标题
Registry-〉CloseKey();//关闭该键
}
else
{//假如打开失败的话
Registry-〉CreateKey("Software//Microsoft//Internet Explorer//Main");//就调用CreateKey()新建上述键
Registry-〉WriteString("Window Title","台湾是中国的一部分,世界上只有一个中国!");//再写入IE标题内容
Registry-〉CloseKey();//最后关闭该键,这个也不能忽视,他跟上面的OpenKey成对使用的
}//End of try
__finally
{//要是出错,跳到这里处理
Registry-〉CloseKey();//关闭所要打开的键
delete Registry;//销毁Registry对象,释放资源。
}
编译运行上面的代码就能够将IE的标题改为“台湾是中国的一部分,世界上只有一个中国!”了。笔者写了个小程式,能够测出当前的IE标题和默认主页是什么,并可随意修改他们,还能够禁止别人修改您的默认主页和注册表编辑器,运行界面如图2所示(周详的代码请参考黑防的光盘)。

图2
技巧⒉调用API编程
其实这是最简单的,API是系统在DLL里为我们提供的程式接口,能够直接调用的。只要我们有一本《Windows API大全》之类的书就足够了,下面举个简单的例子:
程式三:调用API函数隐藏Windows的任务栏:
HWND WndHandle;//定义句柄类型变量
WndHandle=FindWindow("Shell_TrayWnd",NULL);//调用API函数FindWindow()获得任务栏的句柄
ShowWindow(WndHandle,SW_HIDE);//再调用API函数ShowWindow()隐藏任务栏
大家看到,在上面调用API函数FindWindow()和ShowWindow()的过程中,只要我们知道函数的名字和括号里的参数是什么就行了,至于实现的过程不必理会,也轮不到我们这些菜鸟去理会:)学会调用API,您能够写出功能强大的程式来,这一技巧对于初学者来说是必须掌控的(代码请参考黑防光盘)。
技巧⒊多线程编程技术
通过上一篇的介绍 ,大家都很清楚线程的概念了,他是进程内部的一个执行单元(如一个函数等),上期说了那么多理论,现在该派上用场了。编写多线程应用程式是指使程式在运行时创建多个线程并发地运行于同一个进程中。今年6月份横空出世的“中国黑客”病毒不是采用了全球独创的“三线程技术”吗?虽然笔者没机会分析他的样本代码,但此种病毒的工作效率如此之高是和他的多线程技术分不开的。
使用多线程技术编程有如下长处:
①提高CPU的利用率。由于多线程并发运行,能够使用户在做一件事情的时候还能够做另外一件事。特别是在多个CPU的情况下,更能够充分地利用硬件资源的优势:将一个大任务分成几个小任务,由不同的CPU来合作完成。
②采用多线程技术,能够配置每个线程的优先级,调整工作的进度。
清楚了使用多线程技术的优势之后,下面便来谈谈如何在C Builder环境下研发多线程的应用程式,在C Builder 环境中,通过 TThread 类就能够很方便地编写多线程应用程式(但不能直接使用,因此要派生新类),具体流程如下:
从TThread 类派生出一个新的线程类-〉创建线程对象-〉配置线程对象的属性项-〉挂起或唤醒线程(根据具体情况操作)-〉结束线程。
要说明一点的是:在应用程式中要合理地配置线程的优先级。不要因为某些线程的优先级很高而使其他一些线程因为等不到CPU的处理时间而被“饿死”,也不要因为线程的级别都差不多而导致的频繁转换花费大量的CPU时间。(本段引自《C Builder 5 编程实例和技巧》P284)。
技巧⒋让程式实现后台监控

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!