【软件名称】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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课