【软件名称】QQ第六感 V1.10
【软件大小】509 KB
【软件语言】简体中文
【应用平台】Win9x/NT/2000/XP
【软件简介】QQ第六感是一款QQ的辅助软件,用它可以查到同局域网内的其他机器上在线QQ的号码
【软件限制】未注册用户只能显示QQ号码的前五位
【破解说明】好久不练,弄来暖手。水平太差,没看出算法,只好暂时先改一下了。第一次在程序空白处加入附加指令来执行,不知是否稳定,经自己测试无异常,破解后可使用自己的名字+固定注册码123456-890ABCDE-12345678来注册。文笔也不好,笔记可读性不强,见笑
【使用工具】PEiD,stripper,OD修改版,HEdit

by DimRacker

用PEiD体检,是ASPack 2.12加的壳,stripper很容易就搞掉。
在OD里打开SixthSense.exe,用Ultra String Reference看不到显眼的信息,中文字符好像经过变换了。F9运行,提示要注册,可能它启动时也会检测注册码。确定后,程序运行。
输入用户ID:DimRacker,注册码:34343434,注册试试,提示“你输入的注册码格式有误”好了,在OD里搜这个吧,找到一个,看下Reference:

0040BB7E   mov byte ptr ds:[edi+438DD8],al
0040BBFC   mov eax,SixthSen.00438DD8

双击40BB7E去看看,按CTRL+K查看调用树,呵,好多地方都跟这有一腿。先从第一个401391入手,进去后从401322开始,往下看,找地方下个断,就在40134F吧。重新回到程序,点注册,OD拦截在40134F,慢慢走,发现这里是初始化ID和注册码,经跟踪发现,注册码格式必须为24位,且第7位和第16位必须为“-”,于是重新输入123456-890ABCDE-GHIJKLMN,再跟踪,发现注册码第三段不符合要求,再重新输入123456-890ABCDE-12345678,长征开始了。

以下是所下的断点和一些代码注释:
**********************************************************************

断点地址    模块         激活    注释
0040134F    SixthSen     关闭    初始化name,regcode,要求格式123456-890ABCDE-12345678
0040149B    SixthSen     关闭    计算第2、3段regcode,并写入注册表
004015C5    SixthSen     关闭    秀注册码错误窗口。此call要跟入,单步追踪,直到返回SixthSen领空0x4017B0
004017B0    SixthSen     关闭    keycall
00401984    SixthSen     永远    cmp第2段regcode,如果正确再cmp第3段regcode
0040BD1F    SixthSen     关闭    软件启动时的keycall
0040C093    SixthSen     永远    软件启动时cmp第2段regcode,如果正确再cmp第3段regcode
0040D005    SixthSen     永远    软件启动时另一次cmp第2段regcode,如果正确再cmp第3段regcode


**********************************************************************

004013A2  |.  33FF                     xor edi,edi
004013A4  |.  397D F4                  cmp dword ptr ss:[ebp-C],edi     ;判断用户ID的位数,edi=0
004013A7  |.  75 10                    jnz short SixthSen.004013B9
.
.
.
004013B9  |> \3BF7                     cmp esi,edi                      ;判断注册码的位数,edi=0
004013BB  |.  75 10                    jnz short SixthSen.004013CD
.
.
.
004013CD  |> \807D C2 2D               cmp byte ptr ss:[ebp-3E],2D      ;判断注册码第7位是否为“-”
004013D1  |.  0F85 F6010000            jnz SixthSen.004015CD
004013D7  |.  807D CB 2D               cmp byte ptr ss:[ebp-35],2D      ;判断注册码第16位是否为“-”
004013DB  |.  0F85 EC010000            jnz SixthSen.004015CD
004013E1  |.  83FE 18                  cmp esi,18                       ;判断注册码是否为24位
004013E4  |.  0F85 E3010000            jnz SixthSen.004015CD
004013EA  |.  E8 22730200              call SixthSen.00428711
.
.
.
00401977  |.  8B0D 2C8F4300            mov ecx,dword ptr ds:[438F2C]
0040197D  |.  A1 DC8E4300              mov eax,dword ptr ds:[438EDC]
00401982  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
00401984  |.  3BF1                     cmp esi,ecx                      ;cmp第2段regcode
00401986  |.  75 18                    jnz short SixthSen.004019A0
00401988  |.  8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0040198E  |.  33C8                     xor ecx,eax
00401990  |.  3BF9                     cmp edi,ecx                      ;cmp第3段regcode
00401992  |.  75 0C                    jnz short SixthSen.004019A0
00401994  |.  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
00401997  |.  C740 5C D8070000         mov dword ptr ds:[eax+5C],7D8    ;得到7D8后成功注册
0040199E  |.  EB 0A                    jmp short SixthSen.004019AA
004019A0  |>  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
004019A3  |.  C740 5C D5070000         mov dword ptr ds:[eax+5C],7D5    ;得到7D5后注册失败
004019AA  |>  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
004019AD  |.  5F                       pop edi
004019AE  |.  5E                       pop esi
004019AF  |.  5B                       pop ebx
004019B0  |.  8B40 5C                  mov eax,dword ptr ds:[eax+5C]
004019B3  |.  C9                       leave
004019B4  \.  C3                       retn


修改方法:

00401982  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
00401984     /E9 17A00200              jmp SixthSen.0042B9A0            ;跳到42B9A0执行附加的指令
00401989     |90                       nop
0040198A     |90                       nop
0040198B     |90                       nop
0040198C     |90                       nop
0040198D     |90                       nop
0040198E  |.  33C8                     xor ecx,eax                      ;继续执行原程序指令


以下为在程序结尾空白处写入的附加指令:

0042B9A0      BE DEBC0A89              mov esi,890ABCDE                 ;将第2段正确的regcode改为890ABCDE
0042B9A5      BF 78563412              mov edi,12345678                 ;将第3段正确的regcode改为12345678
0042B9AA      3BF1                     cmp esi,ecx
0042B9AC    ^ 0F85 EE5FFDFF            jnz SixthSen.004019A0
0042B9B2      8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0042B9B8    ^ E9 D15FFDFF              jmp SixthSen.0040198E


**********************************************************************
软件启动时对注册码的检测:

0040C086  |.  8B0D 2C8F4300            mov ecx,dword ptr ds:[438F2C]
0040C08C  |.  A1 DC8E4300              mov eax,dword ptr ds:[438EDC]
0040C091  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
0040C093  |.  3BF1                     cmp esi,ecx                      ;cmp第2段regcode
0040C095  |.  75 1C                    jnz short SixthSen.0040C0B3
0040C097  |.  8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0040C09D  |.  33C8                     xor ecx,eax
0040C09F  |.  3BF9                     cmp edi,ecx                      ;cmp第3段regcode
0040C0A1  |.  75 10                    jnz short SixthSen.0040C0B3
0040C0A3  |.  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
0040C0A6  |.  05 21420000              add eax,4221
0040C0AB  |.  C700 D8070000            mov dword ptr ds:[eax],7D8       ;得到7D8后成功注册
0040C0B1  |.  EB 0E                    jmp short SixthSen.0040C0C1
0040C0B3  |>  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
0040C0B6  |.  05 21420000              add eax,4221
0040C0BB  |.  C700 D5070000            mov dword ptr ds:[eax],7D5       ;得到7D5后注册失败
0040C0C1  |>  8B00                     mov eax,dword ptr ds:[eax]
0040C0C3  |.  5F                       pop edi
0040C0C4  |.  5E                       pop esi
0040C0C5  |.  5B                       pop ebx
0040C0C6  |.  C9                       leave
0040C0C7  \.  C3                       retn


修改方法:

0040C091  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
0040C093     /E9 27F90100              jmp SixthSen.0042B9BF            ;跳到42B9BF执行附加的指令
0040C098     |90                       nop
0040C099     |90                       nop
0040C09A     |90                       nop
0040C09B     |90                       nop
0040C09C     |90                       nop
0040C09D  |. |33C8                     xor ecx,eax                      ;继续执行原程序指令


以下为在程序结尾空白处写入的附加指令:

0042B9BF      BE DEBC0A89              mov esi,890ABCDE                 ;将第2段正确的regcode改为890ABCDE
0042B9C4      BF 78563412              mov edi,12345678                 ;将第3段正确的regcode改为12345678
0042B9C9      3BF1                     cmp esi,ecx
0042B9CB    ^ 0F85 E206FEFF            jnz SixthSen.0040C0B3
0042B9D1      8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0042B9D7    ^ E9 C106FEFF              jmp SixthSen.0040C09D


**********************************************************************
软件启动时另一次对注册码的检测:

0040CFF8  |.  8B0D 2C8F4300            mov ecx,dword ptr ds:[438F2C]
0040CFFE  |.  A1 DC8E4300              mov eax,dword ptr ds:[438EDC]
0040D003  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
0040D005  |.  3BF1                     cmp esi,ecx                      ;cmp第2段regcode
0040D007  |.  75 1C                    jnz short SixthSen.0040D025
0040D009  |.  8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0040D00F  |.  33C8                     xor ecx,eax
0040D011  |.  3BF9                     cmp edi,ecx                      ;cmp第3段regcode
0040D013  |.  75 10                    jnz short SixthSen.0040D025
0040D015  |.  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
0040D018  |.  05 55410000              add eax,4155
0040D01D  |.  C700 D8070000            mov dword ptr ds:[eax],7D8       ;得到7D8后成功注册
0040D023  |.  EB 0E                    jmp short SixthSen.0040D033
0040D025  |>  8B45 FC                  mov eax,dword ptr ss:[ebp-4]
0040D028  |.  05 55410000              add eax,4155
0040D02D  |.  C700 D5070000            mov dword ptr ds:[eax],7D5       ;得到7D5后注册失败
0040D033  |>  8B00                     mov eax,dword ptr ds:[eax]
0040D035  |.  5F                       pop edi
0040D036  |.  5E                       pop esi
0040D037  |.  5B                       pop ebx
0040D038  |.  C9                       leave
0040D039  \.  C3                       retn


修改方法:

0040D003  |.  33C8                     xor ecx,eax                      ;esi为第2段正确的regcode,edi为第3段正确的regcode
0040D005     /E9 D4E90100              jmp SixthSen.0042B9DE            ;跳到42B9DE执行附加的指令
0040D00A     |90                       nop
0040D00B     |90                       nop
0040D00C     |90                       nop
0040D00D     |90                       nop
0040D00E     |90                       nop
0040D00F  |. |33C8                     xor ecx,eax                      ;继续执行原程序指令


以下为在程序结尾空白处写入的附加指令:

0042B9DE      BE DEBC0A89              mov esi,890ABCDE                 ;将第2段正确的regcode改为890ABCDE
0042B9E3      BF 78563412              mov edi,12345678                 ;将第3段正确的regcode改为12345678
0042B9E8      3BF1                     cmp esi,ecx
0042B9EA    ^ 0F85 3516FEFF            jnz SixthSen.0040D025
0042B9F0      8B0D E08E4300            mov ecx,dword ptr ds:[438EE0]
0042B9F6    ^ E9 1416FEFF              jmp SixthSen.0040D00F


**********************************************************************
用HEdit打开SixthSense.exe,找到相应地址EIP-400C00,CTRL+G修改代码
完毕
另外,注册信息保存在:

[HKEY_LOCAL_MACHINE\SOFTWARE\小飞侠.NET\QQ第六感\Setting]
"ID"=""
"SN"=hex:

by DimRacker
03:21 2005-03-18