qq聊天记录器 2007 简单分析
软件大小:1102KB软件类别:国产软件/QQ 专区
下载次数:232211
软件授权:共享版
软件语言:简体中文
运行环境:Win9x/Me/NT/2000/XP/2003
更新时间:2007-7-18 16:57:16
华军下载:http://bj.onlinedown.net/soft/52278.htm
今日无事,下了几个软件测试。软件无壳,反OD,算法分析的时候遇到一些麻烦,但使用了明码比较,无机器码,导致KEY通用,可以认为这类假密强度的软件基本上就是间接让破解者来做宣传的免费软件。建议该软件加壳来保护,不建议采用明码。By:Nisy 07.19
00417810 .6A FF PUSH -1 ;算法部分从这里开始,我们在这里下断
00417812 .68 F85F4600 PUSH QQRecord.00465FF8
00417817 .64:A1 0000000>MOV EAX,DWORD PTR FS:
0041781D .50 PUSH EAX
………………
中间代码省略
………………
00417966 > \8D4C24 14 LEA ECX,DWORD PTR SS:
0041796A .51 PUSH ECX
0041796B .8D4C24 24 LEA ECX,DWORD PTR SS:
0041796F .E8 4CA6FFFF CALL QQRecord.00411FC0 ;算法CALL,我们F7跟进
00417974 .8B4C24 1C MOV ECX,DWORD PTR SS: ;送出假码
00417978 .33D2 XOR EDX,EDX
0041797A .83C4 04 ADD ESP,4
0041797D .85C9 TEST ECX,ECX
0041797F .0F95C2 SETNE DL
00417982 .85D2 TEST EDX,EDX
00417984 .75 0A JNZ SHORT QQRecord.00417990
00417986 .68 05400080 PUSH 80004005
0041798B .E8 A0F3FEFF CALL QQRecord.00406D30
00417990 >8B00 MOV EAX,DWORD PTR DS: ;真码保存到 EAX 可做内存KG
00417992 .51 PUSH ECX
00417993 .50 PUSH EAX
00417994 .E8 44610300 CALL QQRecord.0044DADD
00417999 .83C4 08 ADD ESP,8
0041799C .85C0 TEST EAX,EAX
0041799E .8B4424 20 MOV EAX,DWORD PTR SS:
004179A2 .0F94C3 SETE BL
004179A5 .83C0 F0 ADD EAX,-10
004179A8 .8D50 0C LEA EDX,DWORD PTR DS:
004179AB .83C9 FF OR ECX,FFFFFFFF
004179AE .F0:0FC10A LOCK XADD DWORD PTR DS:,ECX ;LOCK 前缀
004179B2 .49 DEC ECX
004179B3 .85C9 TEST ECX,ECX
004179B5 .7F 0A JG SHORT QQRecord.004179C1
004179B7 .8B08 MOV ECX,DWORD PTR DS:
004179B9 .8B11 MOV EDX,DWORD PTR DS:
004179BB .50 PUSH EAX
004179BC .8B42 04 MOV EAX,DWORD PTR DS:
004179BF .FFD0 CALL EAX
004179C1 >84DB TEST BL,BL
004179C3 .74 4B JE SHORT QQRecord.00417A10
004179C5 .E8 EFAA0000 CALL QQRecord.004224B9
004179CA .8B4C24 14 MOV ECX,DWORD PTR SS:
004179CE .8B70 04 MOV ESI,DWORD PTR DS:
004179D1 .51 PUSH ECX
004179D2 .68 78334700 PUSH QQRecord.00473378 ;userid
004179D7 .68 80334700 PUSH QQRecord.00473380 ;register
004179DC .8BCE MOV ECX,ESI
004179DE .E8 C4A30100 CALL QQRecord.00431DA7
004179E3 .8B5424 18 MOV EDX,DWORD PTR SS:
004179E7 .52 PUSH EDX
004179E8 .68 8C334700 PUSH QQRecord.0047338C ;serial
004179ED .68 80334700 PUSH QQRecord.00473380 ;register
004179F2 .8BCE MOV ECX,ESI
004179F4 .E8 AEA30100 CALL QQRecord.00431DA7
004179F9 .6A 00 PUSH 0
004179FB .6A 00 PUSH 0
004179FD .68 BC3B4700 PUSH QQRecord.00473BBC ;注册成功
00417A02 .E8 3D170100 CALL QQRecord.00429144
00417A07 .8BCD MOV ECX,EBP
00417A09 .E8 1A190100 CALL QQRecord.00429328
00417A0E .EB 15 JMP SHORT QQRecord.00417A25
00417A10 >6A 00 PUSH 0
00417A12 .6A 00 PUSH 0
00417A14 .68 C83B4700 PUSH QQRecord.00473BC8 ;序列号不对!
我们来看一下算法CALL 00411FC0
00411FC0 $6A FF PUSH -1
00411FC2 .68 F6554600 PUSH QQRecord.004655F6
00411FC7 .64:A1 0000000>MOV EAX,DWORD PTR FS:
00411FCD .50 PUSH EAX
00411FCE .81EC 24010000 SUB ESP,124
00411FD4 .A1 80384800 MOV EAX,DWORD PTR DS:
00411FD9 .33C4 XOR EAX,ESP
00411FDB .898424 200100>MOV DWORD PTR SS:,EAX
00411FE2 .53 PUSH EBX
00411FE3 .55 PUSH EBP
00411FE4 .56 PUSH ESI
00411FE5 .57 PUSH EDI
00411FE6 .A1 80384800 MOV EAX,DWORD PTR DS:
00411FEB .33C4 XOR EAX,ESP
00411FED .50 PUSH EAX
00411FEE .8D8424 380100>LEA EAX,DWORD PTR SS:
00411FF5 .64:A3 0000000>MOV DWORD PTR FS:,EAX
00411FFB .8B8424 480100>MOV EAX,DWORD PTR SS:
00412002 .8B30 MOV ESI,DWORD PTR DS:
00412004 .33DB XOR EBX,EBX
00412006 .395E F4 CMP DWORD PTR DS:,EBX ;判断用户名是否为空
00412009 .8BF9 MOV EDI,ECX
0041200B .897C24 28 MOV DWORD PTR SS:,EDI
0041200F .895C24 20 MOV DWORD PTR SS:,EBX
00412013 .75 34 JNZ SHORT QQRecord.00412049
00412015 .68 8E094700 PUSH QQRecord.0047098E
0041201A .E8 014FFFFF CALL QQRecord.00406F20
0041201F .8BC7 MOV EAX,EDI
00412021 >8B8C24 380100>MOV ECX,DWORD PTR SS:
00412028 .64:890D 00000>MOV DWORD PTR FS:,ECX
0041202F .59 POP ECX
00412030 .5F POP EDI
00412031 .5E POP ESI
00412032 .5D POP EBP
00412033 .5B POP EBX
00412034 .8B8C24 200100>MOV ECX,DWORD PTR SS:
0041203B .33CC XOR ECX,ESP
0041203D .E8 4BAE0300 CALL QQRecord.0044CE8D
00412042 .81C4 30010000 ADD ESP,130
00412048 .C3 RETN
00412049 >68 05010000 PUSH 105
0041204E .8D4424 30 LEA EAX,DWORD PTR SS:
00412052 .53 PUSH EBX
00412053 .50 PUSH EAX
00412054 .E8 97D20300 CALL QQRecord.0044F2F0
00412059 .83C4 0C ADD ESP,0C
0041205C .56 PUSH ESI
0041205D .8D4C24 30 LEA ECX,DWORD PTR SS:
00412061 .51 PUSH ECX
00412062 .FF15 94734600 CALL DWORD PTR DS:[<&KERNEL32.lstrcpyA>] ;kernel32.lstrcpyA
00412068 .8D4424 2C LEA EAX,DWORD PTR SS:
0041206C .8D50 01 LEA EDX,DWORD PTR DS:
0041206F .90 NOP
00412070 >8A08 MOV CL,BYTE PTR DS: ;循环取处(用户名)的数据
00412072 .83C0 01 ADD EAX,1
00412075 .84C9 TEST CL,CL
00412077 .^ 75 F7 JNZ SHORT QQRecord.00412070
00412079 .2BC2 SUB EAX,EDX
0041207B .894424 1C MOV DWORD PTR SS:,EAX ;计算用户名的位数 结果保存在中
0041207F .B8 E8234700 MOV EAX,QQRecord.004723E8
00412084 .8D50 01 LEA EDX,DWORD PTR DS:
00412087 >8A08 MOV CL,BYTE PTR DS: ;循环取处的数据
00412089 .83C0 01 ADD EAX,1
0041208C .84C9 TEST CL,CL
0041208E .^ 75 F7 JNZ SHORT QQRecord.00412087
00412090 .2BC2 SUB EAX,EDX
00412092 .894424 24 MOV DWORD PTR SS:,EAX ;一共18位哦结果保存在中
00412096 .B8 FC234700 MOV EAX,QQRecord.004723FC
0041209B .8D50 01 LEA EDX,DWORD PTR DS:
0041209E .8BFF MOV EDI,EDI
004120A0 >8A08 MOV CL,BYTE PTR DS: ;循环取处的数据
004120A2 .83C0 01 ADD EAX,1
004120A5 .84C9 TEST CL,CL
004120A7 .^ 75 F7 JNZ SHORT QQRecord.004120A0
004120A9 .2BC2 SUB EAX,EDX
004120AB .894424 20 MOV DWORD PTR SS:,EAX ;一共12位哦 结果保存在中
004120AF .33FF XOR EDI,EDI
004120B1 .E8 82040100 CALL QQRecord.00422538
004120B6 .33C9 XOR ECX,ECX
004120B8 .3BC3 CMP EAX,EBX
004120BA .0F95C1 SETNE CL
004120BD .3BCB CMP ECX,EBX
004120BF .75 0A JNZ SHORT QQRecord.004120CB
004120C1 .68 05400080 PUSH 80004005
004120C6 .E8 654CFFFF CALL QQRecord.00406D30
004120CB >8B10 MOV EDX,DWORD PTR DS:
004120CD .8BC8 MOV ECX,EAX
004120CF .8B42 0C MOV EAX,DWORD PTR DS:
004120D2 .FFD0 CALL EAX
004120D4 .8D68 10 LEA EBP,DWORD PTR DS:
004120D7 .896C24 18 MOV DWORD PTR SS:,EBP
004120DB .33F6 XOR ESI,ESI
004120DD .89B424 400100>MOV DWORD PTR SS:,ESI
004120E4 .E8 4F040100 CALL QQRecord.00422538
004120E9 .33C9 XOR ECX,ECX
004120EB .3BC6 CMP EAX,ESI
004120ED .0F95C1 SETNE CL
004120F0 .3BCE CMP ECX,ESI
004120F2 .75 0A JNZ SHORT QQRecord.004120FE
004120F4 .68 05400080 PUSH 80004005
004120F9 .E8 324CFFFF CALL QQRecord.00406D30
004120FE >8B10 MOV EDX,DWORD PTR DS:
00412100 .8BC8 MOV ECX,EAX
00412102 .8B42 0C MOV EAX,DWORD PTR DS:
00412105 .FFD0 CALL EAX
00412107 .8D48 10 LEA ECX,DWORD PTR DS:
0041210A .894C24 14 MOV DWORD PTR SS:,ECX
0041210E .837C24 1C 00CMP DWORD PTR SS:,0
00412113 .C68424 400100>MOV BYTE PTR SS:,1
0041211B .0F86 8F000000 JBE QQRecord.004121B0
00412121 >33D2 XOR EDX,EDX ;算法循环从这里开始
00412123 .8D47 01 LEA EAX,DWORD PTR DS:
00412126 .F77424 24 DIV DWORD PTR SS: ;除以(第二组数据的位数)
0041212A .8D43 01 LEA EAX,DWORD PTR DS:
0041212D .8BFA MOV EDI,EDX
0041212F .33D2 XOR EDX,EDX
00412131 .F77424 20 DIV DWORD PTR SS: ;除以(第一组数据的位数)
00412135 .8BDA MOV EBX,EDX
00412137 .8A83 FC234700 MOV AL,BYTE PTR DS: ;逐位取第二组数据
0041213D .3287 E8234700 XOR AL,BYTE PTR DS: ;异或第一组数据
00412143 .324434 2C XOR AL,BYTE PTR SS: ;异或用户名
00412147 .04 13 ADD AL,13 ;AL+13
00412149 .85F6 TEST ESI,ESI
0041214B .75 08 JNZ SHORT QQRecord.00412155
0041214D .0FBEC0 MOVSX EAX,AL ;带符号位扩展
00412150 .99 CDQ ;双字变四字
00412151 .33C2 XOR EAX,EDX ;异或
00412153 .2BC2 SUB EAX,EDX ;相减
00412155 >3C 40 CMP AL,40 ;以下判断AL是否为英文字母
00412157 .7E 04 JLE SHORT QQRecord.0041215D ;AL<=40 则跳 注意:41=A
00412159 .3C 5B CMP AL,5B ;与5B比较,即判断AL是否为大写字母 5A=Z
0041215B .7C 0A JL SHORT QQRecord.00412167
0041215D >8AC8 MOV CL,AL ;继续判断是否为小写字母
0041215F .80E9 61 SUB CL,61
00412162 .80F9 19 CMP CL,19
00412165 .77 10 JA SHORT QQRecord.00412177 ;若是小写字母-61H后应小于19H
00412167 >0FBED0 MOVSX EDX,AL ;如果是英文字母 则跳到这里
0041216A .52 PUSH EDX
0041216B .68 88254700 PUSH QQRecord.00472588 ;ASCII "%c"
00412170 .8D4424 20 LEA EAX,DWORD PTR SS:
00412174 .50 PUSH EAX
00412175 .EB 0E JMP SHORT QQRecord.00412185
00412177 >0FBEC8 MOVSX ECX,AL
0041217A .51 PUSH ECX
0041217B .68 A01D4700 PUSH QQRecord.00471DA0 ; ASCII "%d"
00412180 .8D5424 20 LEA EDX,DWORD PTR SS:
00412184 .52 PUSH EDX
00412185 >E8 56B9FFFF CALL QQRecord.0040DAE0 ; 得出最终结果的关键CALL
0041218A .8B6C24 24 MOV EBP,DWORD PTR SS:
0041218E .8B45 F4 MOV EAX,DWORD PTR SS:
00412191 .83C4 0C ADD ESP,0C
00412194 .50 PUSH EAX
00412195 .55 PUSH EBP
00412196 .8D4C24 1C LEA ECX,DWORD PTR SS:
0041219A .E8 C143FFFF CALL QQRecord.00406560
0041219F .83C6 01 ADD ESI,1
004121A2 .3B7424 1C CMP ESI,DWORD PTR SS:
004121A6 .^ 0F82 75FFFFFF JB QQRecord.00412121 ; 继续循环
004121AC .8B4C24 14 MOV ECX,DWORD PTR SS: ; 这里得出KEY
004121B0 >8B71 F4 MOV ESI,DWORD PTR DS:
004121B3 .8B41 F8 MOV EAX,DWORD PTR DS:
004121B6 .BA 01000000 MOV EDX,1
004121BB .2B51 FC SUB EDX,DWORD PTR DS:
004121BE .2BC6 SUB EAX,ESI
004121C0 .0BC2 OR EAX,EDX
004121C2 .7D 0E JGE SHORT QQRecord.004121D2
004121C4 .56 PUSH ESI
004121C5 .8D4C24 18 LEA ECX,DWORD PTR SS:
004121C9 .E8 B24BFFFF CALL QQRecord.00406D80
004121CE .8B4C24 14 MOV ECX,DWORD PTR SS:
004121D2 >8D46 01 LEA EAX,DWORD PTR DS:
004121D5 .50 PUSH EAX
004121D6 .51 PUSH ECX
004121D7 .E8 0AC70300 CALL QQRecord.0044E8E6
004121DC .50 PUSH EAX
004121DD .E8 CE48FFFF CALL QQRecord.00406AB0
004121E2 .83C4 0C ADD ESP,0C
004121E5 .85F6 TEST ESI,ESI
004121E7 .0F8C E9000000 JL QQRecord.004122D6
004121ED .8B4424 14 MOV EAX,DWORD PTR SS:
004121F1 .3B70 F8 CMP ESI,DWORD PTR DS:
004121F4 .0F8F DC000000 JG QQRecord.004122D6
004121FA .8970 F4 MOV DWORD PTR DS:,ESI
004121FD .8B4C24 14 MOV ECX,DWORD PTR SS:
00412201 .8D5C24 14 LEA EBX,DWORD PTR SS:
00412205 .C6040E 00 MOV BYTE PTR DS:,0
00412209 .E8 02AAFFFF CALL QQRecord.0040CC10
0041220E .8BF8 MOV EDI,EAX
00412210 .E8 7BAAFFFF CALL QQRecord.0040CC90
00412215 .8B7424 14 MOV ESI,DWORD PTR SS:
00412219 .8B4E F0 MOV ECX,DWORD PTR DS:
0041221C .8B11 MOV EDX,DWORD PTR DS:
0041221E .8B42 10 MOV EAX,DWORD PTR DS:
00412221 .83C6 F0 ADD ESI,-10
00412224 .FFD0 CALL EAX
00412226 .837E 0C 00 CMP DWORD PTR DS:,0
0041222A .8D4E 0C LEA ECX,DWORD PTR DS:
0041222D .7C 11 JL SHORT QQRecord.00412240
0041222F .3B06 CMP EAX,DWORD PTR DS:
00412231 .75 0D JNZ SHORT QQRecord.00412240
00412233 .8BFE MOV EDI,ESI
00412235 .BA 01000000 MOV EDX,1
0041223A .F0:0FC111 LOCK XADD DWORD PTR DS:,EDX ;LOCK 前缀
0041223E .EB 37 JMP SHORT QQRecord.00412277
00412240 >8B4E 04 MOV ECX,DWORD PTR DS:
00412243 .8B10 MOV EDX,DWORD PTR DS:
00412245 .8B12 MOV EDX,DWORD PTR DS:
00412247 .6A 01 PUSH 1
00412249 .51 PUSH ECX
0041224A .8BC8 MOV ECX,EAX
0041224C .FFD2 CALL EDX
0041224E .8BF8 MOV EDI,EAX
00412250 .85FF TEST EDI,EDI
00412252 .75 05 JNZ SHORT QQRecord.00412259
00412254 .^ E9 C749FFFF JMP QQRecord.00406C20
00412259 >8B46 04 MOV EAX,DWORD PTR DS:
0041225C .8947 04 MOV DWORD PTR DS:,EAX
0041225F .8B46 04 MOV EAX,DWORD PTR DS:
00412262 .83C0 01 ADD EAX,1
00412265 .50 PUSH EAX
00412266 .83C6 10 ADD ESI,10
00412269 .56 PUSH ESI
0041226A .50 PUSH EAX
0041226B .8D4F 10 LEA ECX,DWORD PTR DS:
0041226E .51 PUSH ECX
0041226F .E8 DFBC0300 CALL QQRecord.0044DF53
00412274 .83C4 10 ADD ESP,10
00412277 >8B7424 28 MOV ESI,DWORD PTR SS:
0041227B .C68424 400100>MOV BYTE PTR SS:,0
00412283 .8B4424 14 MOV EAX,DWORD PTR SS:
00412287 .83C7 10 ADD EDI,10
0041228A .83C0 F0 ADD EAX,-10
0041228D .893E MOV DWORD PTR DS:,EDI
0041228F .8D50 0C LEA EDX,DWORD PTR DS:
00412292 .83C9 FF OR ECX,FFFFFFFF
00412295 .F0:0FC10A LOCK XADD DWORD PTR DS:,ECX ;LOCK 前缀
00412299 .49 DEC ECX
0041229A .85C9 TEST ECX,ECX
0041229C .7F 0A JG SHORT QQRecord.004122A8
0041229E .8B08 MOV ECX,DWORD PTR DS:
004122A0 .8B11 MOV EDX,DWORD PTR DS:
004122A2 .50 PUSH EAX
004122A3 .8B42 04 MOV EAX,DWORD PTR DS:
004122A6 .FFD0 CALL EAX
004122A8 >8D45 F0 LEA EAX,DWORD PTR SS:
004122AB .C78424 400100>MOV DWORD PTR SS:,-1
004122B6 .8D48 0C LEA ECX,DWORD PTR DS:
004122B9 .83CA FF OR EDX,FFFFFFFF
004122BC .F0:0FC111 LOCK XADD DWORD PTR DS:,EDX ;LOCK 前缀
004122C0 .4A DEC EDX
004122C1 .85D2 TEST EDX,EDX
004122C3 .7F 0A JG SHORT QQRecord.004122CF
004122C5 .8B08 MOV ECX,DWORD PTR DS:
004122C7 .8B11 MOV EDX,DWORD PTR DS:
004122C9 .50 PUSH EAX
004122CA .8B42 04 MOV EAX,DWORD PTR DS:
004122CD .FFD0 CALL EAX
004122CF >8BC6 MOV EAX,ESI
004122D1 .^ E9 4BFDFFFF JMP QQRecord.00412021
JMP到这里:
00412021 > /8B8C24 380100>MOV ECX,DWORD PTR SS:
00412028 . |64:890D 00000>MOV DWORD PTR FS:,ECX
0041202F . |59 POP ECX
00412030 . |5F POP EDI
00412031 . |5E POP ESI
00412032 . |5D POP EBP
00412033 . |5B POP EBX
00412034 . |8B8C24 200100>MOV ECX,DWORD PTR SS:
0041203B . |33CC XOR ECX,ESP
0041203D . |E8 4BAE0300 CALL QQRecord.0044CE8D
00412042 . |81C4 30010000 ADD ESP,130
00412048 . |C3 RETN ;返回
我们再来看一下算法中的几处关键数据:
004723E80E 3C 2D 4B 5C 4F 98 10 0C 9E AB FE 0F 2D 1B 70<-K\O?.灚?-p
004723F829 1B 00 00 4D A4 9B CA 2D 39 FC CF D2 CD 2A AC)..M??9?彝*
004724084C 01 L
和这些数据是从何而来呢?是生来就有呢?还是……,我们重新OD载入,然后d 4723E8,呵呵,比较幸运果然是生来就有。是否是固定值呢?恩,如果不是那软件作者在计算KEY的时候可就费事了,因为他只能得到注册者的用户名。
/////////////////////////////////////////////////////////
我们简单的看一下算法中的这个关键CALL:00412185 CALL 0040DAE0
0040DAE0 8B4C24 08 MOV ECX,DWORD PTR SS: ; F7跟进后来到这里
0040DAE4 8D4424 0C LEA EAX,DWORD PTR SS:
0040DAE8 50 PUSH EAX
0040DAE9 51 PUSH ECX
0040DAEA 8B4C24 0C MOV ECX,DWORD PTR SS:
0040DAEE E8 5DFFFFFF CALL QQRecord.0040DA50 ; 跟进
0040DAF3 C3 RETN
////////////////
0040DA9F E8 1F0C0400 CALL QQRecord.0044E6C3 ; 这个CALL
////////////////
0044E6D5 E8 63FFFFFF CALL QQRecord.0044E63D ; 继续跟进
//////////////
0044E691 E8 DDFEFFFF CALL QQRecord.0044E573 ; 继续跟进
//////////
0044E5F7 FF55 08 CALL DWORD PTR SS: ; 进到这个CALL就看到算法了
////////
跟进这个CALL就可以找到算法部分了:先做一个简单运算,然后对结果做满足条件的跳转,最终得出结果。这里比较麻烦,有兴趣的朋友自己跟一下吧。(注意:其他的CALL不要轻易进,否则OD会挂掉。)
/////////////////////////////////////////////////////////
提供一组KEY
用户名:Nisy
注册码:23-14527
对解密不了解的程序员大都不将KEY加密便直接保存放到注册表或某个文件,例如这个软件就将注册信息放到了这里:HKEY_CURRENT_USER\Software\msddr\srecord\qq\QQRecord\Register。 如何得来,进注册表搜索我们的注册码即可,这就是不加密保存的弊端之一。
我的序列号有14位......
这个是明码比较
算法循环异或 似乎是分别从 2组数据的第2个数据开始的 没怎么仔细分析 学习在学习,对我等菜鸟实在是太好了,谢谢分享!/:good 来支持下。~~~~/:014 支持一下吧!!!!!!!! 学学 现在还不是很清楚谢谢 /:L /:L /:L /:L /:L 学习在学习,对我等菜鸟实在是太好了,谢谢分享!
页:
[1]