QQ是大家常用的即时通讯工具,得到了众多用户的喜爱和支持,大有一统中文即时通讯软件市场的趋势。对于这个熟悉的工具软件你可能已经掌握了许多技巧,但是你可知道如何将自己加入到自己的好友名单中吗?你可能会想这太简单了,点击“查找”,输入自己的QQ号码,然后加入就行了呗。嘿嘿,没有这么简单!如果你这样做了会出现一个对话框,显示“不能添加自己”。怎么样,不知道怎么办了吧?我有办法,而且不止一个哟^_^。
方法一、利用QQ本身把自己加入好友名单
直接将自己加入QQ好友名单是不行的,我们绕个小小的圈子就可以骗过QQ服务器了。具体的方法如下:
1. 先将自己加入“黑名单”。在“黑名单”下点击鼠标右键,在弹出的菜单中选择“添加坏人名单”(图1),会出现如图所示画面(图2),让你“敲入坏人号码”,此时,填入自己的QQ号码就可以了。
2. 用鼠标左键拖动“黑名单”中自己的头像,到“我的好友”名单中(图3)。
3. 如果你的QQ设置为需要验证身份才能加入到好友名单中(大多数朋友都是这样设置的),就会出现如图所示画面(图4),填入你想发送给自己的请求信息,按“发送请求”按钮。
4. 此时,系统托盘中就会有你的头像闪动,点击它会看到自己给自己发来的请求信息。点击“通过验证”按钮,注意,此时不会出现通常情况下显示的通过验证成功的信息,相反,会弹出一个对话框,显示“不能添加自己”(图5)。哈,到此,我们在开篇中提到的那种情况终于出现了!怎么办?往下看就知道了,关键就在下面哦。
5. 用鼠标右键点击系统托盘中的QQ图标,会弹出如图6所示画面,选择其中的“注册向导”,会弹出“注册向导”对话框,选择“使用已有的QQ号码”,在“我的号码”栏中填入自己的QQ号码,在“密码”栏中填入自己的QQ密码(图7),然后点击“下一步”。其实,这一步的目的就是为了让QQ重新读取服务器上的好友列表,此时的你已经在QQ服务器你的好友名单中了,只是在你的QQ上没有显示出来而已,你要做的就是把它“娶”回来,读取到本地。
6. 最后,会出现“完成”对话框(图8),点击“完成”按钮即可。现在,到“我的好友”名单中看看,哈,自己已经被加入到自己的QQ好友名单中了!
7. 试试自己和自己说话的感觉:点击“我的好友”名单中代表自己的QQ头像,传送消息过去,哈哈,真的可以呀(图9)!至此大功告成!
方法二、利用“0+号码”添加自己
按照前面的方法操作,如果QQ版本为2000B Build 1220是无论如何也无法成功,看来将自己打入“黑名单”再拉为“好友”这一招已经失效了。对此,各位朋友也不用气馁,笔者还是有办法让你将自己添加为QQ好友的,从2000B Build 0530版本直至现在的2000C Build 0125都适用(早期的低版本QQ是可以添加自己为QQ好友的)。
(特别提示:如果你采用方法一没有成功,在使用方法二时,要先把黑名单中自己的号码删除掉,否则最后添加成功后的自己的号码依然在黑名单中。)
1. 启动你的QQ,在“QQ用户登录”对话框上点击“注册向导”按钮。选择“使用已有的QQ号码”,让隐含的“我的号码”等输入框显示出来。
2. 如图10所示,直接在“我的号码”框中输入你的QQ号码(例如10000),千万不要去掉了“我的号码”框中的那个数字0,让你的QQ变成“010000”;然后输入你的QQ密码,按照提示登陆。
3. 登录成功后,你就会发现你的QQ号码变了,变成010000了。点击QQ面板上的“查找”按钮,在弹出的“查找添加用户”对话框上选择“自定义查找”,输入你的QQ号码10000,按照正常步骤将你的QQ添加为好友。当你点击通过认证按钮时,还是会弹出一个如图5的对话框,提示你不能添加自己为好友,不用理它,等“系统信息”框显示“服务器接受了你的认证信息,请返回”后,直接点击“返回”按钮即可。
4. 关闭你的QQ,参照第一步使用注册向导重新登陆。这一次请在“我的号码”框中去掉那个数字0,用你的QQ号码10000正常登陆。这时你会发现你已经被加入到自己的QQ好友名单中了,试试看,自己跟自己聊天吧,呵呵。
方法三、利用软件将自己加入到好友名单
除了上面所说的方法外,我们还可以利用软件将自己加入到好友名单。可能这个方法较上面所说的要麻烦些,要求你懂的知识也更多些,但掌握这个方法更有DIY的感觉,更有高手的意思哦。
1. 软件介绍
下面先来介绍我们要用到的软件。我们要用到的软件叫“TRW2000”,在说到TRW2000之前,我们先来看看一个和它同类的、大家可能更熟悉一些的软件:Soft-ICE。Soft-ICE是目前公认最好的跟踪调试工具。使用Soft-ICE可以很容易地跟踪一个软件、或是监视软件产生的错误进行除错,它有DOS、WINDOW3.1、WIN95/98/NT/2000/各个平台上的版本。这个本是用来对软件进行调试、跟踪、除错的工具,在解密高手手中变成了最恐怖的破解工具;而TRW2000则是中国的“Soft-ICE”,它是中国人自己编写的调试软件,完全兼容Soft-ICE各条指令,由于现在许多软件能检测Soft-ICE的存在,而对TRW2000的检测就差了许多,因此目前它成了解密高手们的最爱。TRW2000专门针对软件破解进行了优化,在Windows下跟踪调试程序,跟踪功能更强;可以设置各种断点,并且断点种类更多;它可以象一些脱壳工具一样完成对加密外壳的去除,自动生成EXE文件,因此它的破解能力更强,而且它不用象Soft-ICE那样必须在开机时即启动运行。
TRW2000有两组热键:CTRL+N和CRTL+M,它们分别代表不同的特权级别,所谓特权级别就是程序在执行中有级别之分,只有操作系统工作在最高级--0级中,其它的程序都应工作在3级中,在3级中的程序不可直接访问IO端口,也无法访问其它程序运行的内存,连向程序自已的代码段写入数据都是非法的(会出现你熟悉的蓝屏),只有对工作在0级上的程序来说系统才是全开放的。所以TRW2000为我们准备了两种不同特权级别的热键:按CTRL+N为3级,按CTRL+M为0级。可以在不同的情况下使用,像我们今天跟的这个程序来说使用3级就可以了,所以我们按CTRL+N。
TRW2000的主界面由五部分组成,窗口中最上面的是存贮/寄存器窗,用来显示各存贮/寄存器的当前值;在存贮/寄存器窗下面的一个窗口是数据窗口,是用来显示存贮器的内容的;在数据窗口的左面也就是由“:”分开的两个值对应为:段地址:偏移地址,屏幕中间为“段地址:偏移地址”所存贮的16进制值,在右面是那些16进制值所对应的ASCII码;数据窗下面是代码窗,也就是程序啦,高亮显示的那一行是机器将要(注意:是将要)处理的下一条指令;在代码窗右上角的是堆栈窗,所谓堆栈就是一段以先进后出为工作方式的存贮器(内存),它显示的是堆栈的偏移地址和内容;在代码窗的下面是指令窗,在这里你可以对TRW2000下达你的指令,我们用来下断点的命令就是在此输入的(图11)。
TRW2000所有窗口的默认颜色是黑底蓝字,在白天不易看清,所以你可以下指令VER BLUE来改变它的颜色,如果你想让它每次启动时都改变,你可以打开TRW2000安装目录下的TRW2000.INI文件,把INIT="lines 35;wr 3;wd 8;wc 16;code on;"改成INIT="lines 35;wr 3;wd 8;wc 16;code on;ver blue",也就是把VER BLUE加在里面。
我们知道不能将自己加入到好友名单的主要原因是那个可恶的“不能添加自己”对话框,如果能跳过这个对话框就可以把自己加入到好友名单了。而要跳过那个对话框就要用到TRW2000,因为对TRW2000来说这是小菜一碟的事(具体的方法下面会讲)。这就是我们用TRW2000的目的。其实,我们也可以利用Soft-ICE的,但是TRW2000更容易使用,对于初学者来说使用它更好些。
2. 具体方法
头几步与方法一中的前四步相同,概括说来就是先在“黑名单”中加入自己,再把自己拖入到“我的好友”,这时会弹出一个对话框“不能添加自己”。请注意问题的关键就是如何跳过这个对话框,跳过它就万事大吉了。
运行TRW2000,在那个对话框弹出时按下CTRL+N(这是TRW2000默认的激活热键),这样就进入到TRW2000的界面中,输入“pmodule”(不含引号)命令,解释一下:pmodule是TRW2000特有的命令,使用它可以快速回到当前程序的“领空”。这里解释一下“领空”的概念,所谓“领空”,实际上是指在某一时刻,CPU的CS:IP(EIP)所指向的某一段代码的所有者所在的区域。也即TRW2000停下来时光棒(高亮度那一行)所在的那一句代码是属于哪个程序的,属于QQ:
2000b.EXE的就叫QQ:
2000的“领空”,属于KERNEL的就叫KERNEL的“领空”,你如果想窥探QQ:
2000b.exe的代码,就要在QQ:
2000b.exe的“领空”中进行跟踪。
执行完pmodule命令完毕,会回到“不能添加自己”对话框,点击对话框中的“确定”按钮,会在地址0167:0051C945处中断下来,代码形式如下:
0167:0051C935 FF742410 PUSH DWORD [ESP+10]
0167:0051C939 50 PUSH EAX
0167:0051C93A FF742410 PUSH DWORD [ESP+10]
0167:0051C93E 51 PUSH ECX
0167:0051C93F FF152C965500 CALL `USER32!MessageBoxA` //这就是“不能添加自己”对话框
0167:0051C945 5E POP ESI //点“确定”后光标停留在这里,该行高亮度显示。
0167:0051C946 C20C00 RET 0C //按F10跳出子程序会来到"0167:00442B92"处 (打★处)
0167:00442B37 8B86CC020000 MOV EAX,[ESI+02CC]
0167:00442B3D 83F8FF CMP EAX,BYTE -01
0167:00442B40 0F848A010000 JZ NEAR 00442CD0
0167:00442B46 3B05E8255D00 CMP EAX,[005D25E8] //比较EAX和[005D25E8]值是否相等,这是关键
0167:00442B4C 7559 JNZ 00442BA7 //如果不等则跳转到00442BA7,不能让它跳走
0167:00442B4E A18C315B00 MOV EAX,[005B318C]
0167:00442B53 8945E8 MOV [EBP-18],EAX
0167:00442B56 C745FC01000000 MOV DWORD [EBP-04],01
0167:00442B5D 8945E4 MOV [EBP-1C],EAX
0167:00442B60 8D45E8 LEA EAX,[EBP-18]
0167:00442B63 688C800000 PUSH DWORD 808C
0167:00442B68 50 PUSH EAX
0167:00442B69 C645FC02 MOV BYTE [EBP-04],02
0167:00442B6D E846CB0200 CALL 0046F6B8
0167:00442B72 8D45E4 LEA EAX,[EBP-1C]
0167:00442B75 6875800000 PUSH DWORD 8075
0167:00442B7A 50 PUSH EAX
0167:00442B7B E838CB0200 CALL 0046F6B8
0167:00442B80 83C410 ADD ESP,BYTE +10
0167:00442B83 8BCE MOV ECX,ESI
0167:00442B85 6A10 PUSH BYTE +10
0167:00442B87 FF75E4 PUSH DWORD [EBP-1C]
0167:00442B8A FF75E8 PUSH DWORD [EBP-18]
0167:00442B8D E8859D0D00 CALL 0051C917
0167:00442B92 8D4DE4 LEA ECX,[EBP-1C] ★★★★
从上面的代码中可以看出这两行是关键:
0167:00442B46 3B05E8255D00 CMP EAX,[005D25E8]
0167:00442B4C 7559 JNZ 00442BA7
只要不跳转走就OK了,所以要把JNZ改为JZ。在汇编语言中,JNZ是不等于转移的意思,JZ是等于转移的意思。我们要做的就是霸王硬上弓——QQ会比较0167:00442B46处的寄存器EAX和[005D25E8]的值是否相等,如果不等就转移,等于就不转移,对我们来说,不转移就意味着成功!所以,强行将代码JNZ 00442BA7(机器码7559)改为JZ 00442BA7(机器码7459)就可以达到我们的目的,在这里JNZ 00442BA7为汇编指令,即和机器码对应的程序代码。这样的改法在共享软件破解中也经常会用到,它就是所谓的暴力法。
现在开始改动代码,随便找个十六进制编辑器,如UltraEdit、WinHex等都可以。用UltraEdit打开QQ:
2000b.exe文件,点击“搜索”菜单下的“查找”,然后在弹出的对话框中填入查找内容“3B05E8255D007559”,找到后将其改为“3B05E8255D007459”,保存退出。现在你就可以跳过那个讨厌的“不能添加自己”对话框了,我们可以轻松的将自己添加到“我的好友”名单中了。请注意如果你用MODEM上网的话,可不要调试得太长时间哦(动作要快些),否则会掉线的。另外,使用方法三时请注意,不同版本的QQ你看到的汇编代码可能与我说的不同,但方法是不会错的,按照这个做就可以了。
其实,之所以讲述了三种方法,目的是希望您能通过这个例子了解到更多的解决问题的办法,开拓自己的思路,只有这样我们才能不断进步,取得成功。