飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2836|回复: 8

[求助] 不是明码的比较 只能爆破么?谢谢

[复制链接]
  • TA的每日心情
    开心
    2022-12-21 20:04
  • 签到天数: 189 天

    [LV.7]常住居民III

    发表于 2008-2-26 15:40:57 | 显示全部楼层 |阅读模式
    进球彩***  4.04
    http://www.zc310.com/down/JQCDYJ/JQCDYJ2000.exe
    跟了一上午 在堆栈里发现如下东东 应该不是明码比较 请教一下如何找注册码 不想要爆破 谢谢了

    0012EFFC  |014D5060   ASCII "2C36280289C71" 好像是假码算出来的
    0012F000  |00000000
    0012F004  |014D507C   ASCII "8160>;=3805"   这个是机器码算出来的
    0012F008  |014D50EC   ASCII "0D稼?,LF,"祍430B99C05B5EB54383725D3255CA56" 这个不知道是什么
    0012F00C  |014D5060   ASCII "2C36280289C71"
    0012F010  |00000000
    0012F014  |014D5008   ASCII "7777777777777777"
    0012F018  |014D5048   ASCII "89306392880"
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-3-30 11:15
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-2-26 17:39:31 | 显示全部楼层
    路过~~~~~~
    不是明码不代表就找不到注册码呀!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-26 20:28:14 | 显示全部楼层
    /:012 不是明码就要追出它的算法流程
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-12-21 20:04
  • 签到天数: 189 天

    [LV.7]常住居民III

     楼主| 发表于 2008-2-26 21:24:28 | 显示全部楼层
    谢谢楼上的 我追到整个算法流程了 可是不会写注册机啊 帮帮忙  谢谢了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-26 21:33:12 | 显示全部楼层
    呵呵  怎么追算法流程  

    偶菜鸟不懂,,,教下偶等菜鸟吧...
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-1-27 00:17
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2008-2-26 21:36:56 | 显示全部楼层
    爆破了下


    006417F1    90              nop
    006417F2    90              nop

    这里NOP下就OK了

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2021-4-1 00:38
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2008-2-26 23:11:04 | 显示全部楼层
    原帖由 baby520 于 2008-2-26 21:36 发表
    爆破了下


    006417F1    90              nop
    006417F2    90              nop

    这里NOP下就OK了

    高人啊,学习了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-10-18 18:39
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-2-27 05:37:50 | 显示全部楼层
    看到6楼的结果真的叫我们这些新手决的高呀
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-12-21 20:04
  • 签到天数: 189 天

    [LV.7]常住居民III

     楼主| 发表于 2008-2-27 10:08:05 | 显示全部楼层
    转高手的分析 类似算法
    005FA53C   .  8B55 E0       mov edx,dword ptr ss:[ebp-20]
    005FA53F   .  8D45 F0       lea eax,dword ptr ss:[ebp-10]
    005FA542   .  E8 89A7E0FF   call SSQDYJ.00404CD0              ;  ...
    005FA547   .  8D4D E8       lea ecx,dword ptr ss:[ebp-18]
    005FA54A   .  33D2          xor edx,edx
    005FA54C   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005FA54F   .  E8 2CE4FFFF   call SSQDYJ.005F8980              ;  机器码通过异或运算运算得到文本 szKey = "6962>:514;4",跟进1
    005FA554   .  8D4D EC       lea ecx,dword ptr ss:[ebp-14]
    005FA557   .  8B55 E8       mov edx,dword ptr ss:[ebp-18]
    005FA55A   .  8B45 F0       mov eax,dword ptr ss:[ebp-10]
    005FA55D   .  E8 16E2FFFF   call SSQDYJ.005F8778              ;  需要跟进的关键调用,得到字符串 str1,跟进2
    005FA562   .  8D45 D8       lea eax,dword ptr ss:[ebp-28]
    005FA565   .  50            push eax
    005FA566   .  B9 06000000   mov ecx,6
    005FA56B   .  BA 01000000   mov edx,1
    005FA570   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005FA573   .  E8 D0ABE0FF   call SSQDYJ.00405148              ;  szMac 的 1 到 6 位 "613262"
    005FA578   .  8B45 D8       mov eax,dword ptr ss:[ebp-28]
    005FA57B   .  E8 D8F9E0FF   call SSQDYJ.00409F58              ;  十进制文本转换为数值1
    005FA580   .  8BD8          mov ebx,eax
    005FA582   .  8D45 D4       lea eax,dword ptr ss:[ebp-2C]
    005FA585   .  50            push eax
    005FA586   .  B9 06000000   mov ecx,6
    005FA58B   .  BA 07000000   mov edx,7
    005FA590   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005FA593   .  E8 B0ABE0FF   call SSQDYJ.00405148              ;  机器码的 7 到 12 位 "10431"
    005FA598   .  8B45 D4       mov eax,dword ptr ss:[ebp-2C]
    005FA59B   .  E8 B8F9E0FF   call SSQDYJ.00409F58              ;  十进制文本转换为数值2
    005FA5A0   .  03D8          add ebx,eax                       ;  数值1 + 数值2 即 613262 + 10431 = 623693
    005FA5A2   .  8BC3          mov eax,ebx
    005FA5A4   .  8D55 DC       lea edx,dword ptr ss:[ebp-24]
    005FA5A7   .  E8 CCF8E0FF   call SSQDYJ.00409E78              ;  相加结果转换回十进制文本 str2 = "623693"
    005FA5AC   .  8B55 DC       mov edx,dword ptr ss:[ebp-24]
    005FA5AF   .  8D45 FC       lea eax,dword ptr ss:[ebp-4]
    005FA5B2   .  E8 19A7E0FF   call SSQDYJ.00404CD0              ;  ...
    005FA5B7   .  8D45 FC       lea eax,dword ptr ss:[ebp-4]
    005FA5BA   .  50            push eax
    005FA5BB   .  B9 06000000   mov ecx,6
    005FA5C0   .  BA 01000000   mov edx,1
    005FA5C5   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005FA5C8   .  E8 7BABE0FF   call SSQDYJ.00405148              ;  取 str2 的 1 到 6 位 "623693"
    005FA5CD   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005FA5D0   .  E8 1BA9E0FF   call SSQDYJ.00404EF0              ;  strlen( str2 ) 这里应该等于 6
    005FA5D5   .  8BD8          mov ebx,eax
    005FA5D7   .  43            inc ebx
    005FA5D8   .  83FB 06       cmp ebx,6
    005FA5DB   .  7F 16         jg short SSQDYJ.005FA5F3
    005FA5DD   >  8D45 FC       lea eax,dword ptr ss:[ebp-4]
    005FA5E0   .  8B4D FC       mov ecx,dword ptr ss:[ebp-4]
    005FA5E3   .  BA E0A65F00   mov edx,SSQDYJ.005FA6E0
    005FA5E8   .  E8 4FA9E0FF   call SSQDYJ.00404F3C              ;  str2 没有 6 位则在前面添加 0
    005FA5ED   .  43            inc ebx
    005FA5EE   .  83FB 07       cmp ebx,7
    005FA5F1   .^ 75 EA         jnz short SSQDYJ.005FA5DD
    005FA5F3      8B55 EC       mov edx,dword ptr ss:[ebp-14]     ;  str1( 由于插入了随机位置,所以每次跟踪会得到不同的结果,详见后面 )
    005FA5F6   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]      ;  str2 = "623693"
    005FA5F9   .  E8 2EACE0FF   call SSQDYJ.0040522C              ;  返回 str1 中 str2 的位置(失败返回 0)
    005FA5FE   .  8BD8          mov ebx,eax
    005FA600   .  85DB          test ebx,ebx
    005FA602   .  7E 6B         jle short SSQDYJ.005FA66F         ;  关键跳
    005FA604   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]

        ---------------------------------------------------------------------------------------------------------------------------
        上面代码有两行需要跟进:
        005FA54F   .  E8 2CE4FFFF   call SSQDYJ.005F8980              ;  机器码通过异或运算运算得到文本 szKey = "6962>:514;4",跟进1
        005FA55D   .  E8 16E2FFFF   call SSQDYJ.005F8778              ;  需要跟进的关键调用,得到字符串 str1,跟进2
        等下说说这两个跟进,看看是如何得到 str1 的。
        继续向下看,看到了 F1( 机器码 ) 的处理:
        大致过程这样:我的机器码 "61326210431"
        机器码的前 6 位 + 接下来的 6 位 即 613236 + 10431 = 623693,然后再取前 6 位得到 str2 = '623693'
        ---------------------------------------------------------------------------------------------------------------------------



    下面看下两个跟进,看看如何得到 str1:

        ---------------------------------------------------------------------------------------------------------------------------
        005FA54F   .  E8 2CE4FFFF   call SSQDYJ.005F8980              ;  机器码通过异或运算运算得到文本 szKey = "6962>:514;4",跟进1
        ---------------------------------------------------------------------------------------------------------------------------

    005F89CC  |.  8D45 F8       lea eax,dword ptr ss:[ebp-8]
    005F89CF  |.  BA 9C8A5F00   mov edx,SSQDYJ.005F8A9C           ;  取一个字符串 szStr = "yxb_200@"
    005F89D4  |.  E8 F7C2E0FF   call SSQDYJ.00404CD0              ;  ...
    005F89D9  |>  837D FC 00    cmp dword ptr ss:[ebp-4],0
    005F89DD  |.  75 0A         jnz short SSQDYJ.005F89E9
    005F89DF  |.  8B45 F4       mov eax,dword ptr ss:[ebp-C]
    005F89E2  |.  E8 51C2E0FF   call SSQDYJ.00404C38              ;  ...
    005F89E7  |.  EB 6C         jmp short SSQDYJ.005F8A55
    005F89E9  |>  8D45 F0       lea eax,dword ptr ss:[ebp-10]
    005F89EC  |.  E8 47C2E0FF   call SSQDYJ.00404C38              ;  ...
    005F89F1  |.  8B45 F8       mov eax,dword ptr ss:[ebp-8]
    005F89F4  |.  E8 F7C4E0FF   call SSQDYJ.00404EF0              ;  strlen( "yxb_200@" ) = 8
    005F89F9  |.  8945 EC       mov dword ptr ss:[ebp-14],eax
    005F89FC  |.  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005F89FF  |.  E8 ECC4E0FF   call SSQDYJ.00404EF0              ;  strlen( szMac ) = 11
    005F8A04  |.  8BF0          mov esi,eax
    005F8A06  |.  85F6          test esi,esi
    005F8A08  |.  7E 40         jle short SSQDYJ.005F8A4A
    005F8A0A  |.  BB 01000000   mov ebx,1                         ;  i = 1 ( 以下循环 i 从 1 开始 )
    005F8A0F  |>  8BC3          /mov eax,ebx
    005F8A11  |.  99            |cdq
    005F8A12  |.  F77D EC       |idiv dword ptr ss:[ebp-14]       ;  i % 8
    005F8A15  |.  8BFA          |mov edi,edx
    005F8A17  |.  47            |inc edi                          ;  i % 8 + 1
    005F8A18  |.  8B45 F8       |mov eax,dword ptr ss:[ebp-8]
    005F8A1B  |.  0FB64438 FF   |movzx eax,byte ptr ds:[eax+edi-1>;  szStr[i % 8]
    005F8A20  |.  B9 0A000000   |mov ecx,0A
    005F8A25  |.  33D2          |xor edx,edx
    005F8A27  |.  F7F1          |div ecx                          ;  szStr[i % 8] % 10
    005F8A29  |.  8B45 FC       |mov eax,dword ptr ss:[ebp-4]
    005F8A2C  |.  0FB64418 FF   |movzx eax,byte ptr ds:[eax+ebx-1>;  szMac[i-1]
    005F8A31  |.  33D0          |xor edx,eax                      ;  szMac[i-1] ^ ( szStr[i % 8] % 10 )
    005F8A33  |.  8D45 E4       |lea eax,dword ptr ss:[ebp-1C]
    005F8A36  |.  E8 DDC3E0FF   |call SSQDYJ.00404E18             ;  转换成字符类型
    005F8A3B  |.  8B55 E4       |mov edx,dword ptr ss:[ebp-1C]
    005F8A3E  |.  8D45 F0       |lea eax,dword ptr ss:[ebp-10]
    005F8A41  |.  E8 B2C4E0FF   |call SSQDYJ.00404EF8             ;  每轮计算结果连接
    005F8A46  |.  43            |inc ebx
    005F8A47  |.  4E            |dec esi
    005F8A48  |.^ 75 C5         \jnz short SSQDYJ.005F8A0F        ;  处理完机器码所有的字符退出循环
    005F8A4A  |>  8B45 F4       mov eax,dword ptr ss:[ebp-C]
    005F8A4D  |.  8B55 F0       mov edx,dword ptr ss:[ebp-10]
    005F8A50  |.  E8 37C2E0FF   call SSQDYJ.00404C8C
    005F8A55  |>  33C0          xor eax,eax
    005F8A57  |.  5A            pop edx
    005F8A58  |.  59            pop ecx

        -----------------------------------------------------------------------------------------------------------
        005FA55D   .  E8 16E2FFFF   call SSQDYJ.005F8778              ;  需要跟进的关键调用,得到字符串 str1,跟进2
        -----------------------------------------------------------------------------------------------------------

    005F87AD   .  55            push ebp
    005F87AE   .  68 2B895F00   push SSQDYJ.005F892B
    005F87B3   .  64:FF30       push dword ptr fs:[eax]
    005F87B6   .  64:8920       mov dword ptr fs:[eax],esp
    005F87B9   .  8B45 F8       mov eax,dword ptr ss:[ebp-8]
    005F87BC   .  E8 2FC7E0FF   call SSQDYJ.00404EF0              ;  strlen( szKey ) = 11
    005F87C1   .  8945 F0       mov dword ptr ss:[ebp-10],eax
    005F87C4   .  837D F0 00    cmp dword ptr ss:[ebp-10],0
    005F87C8   .  75 0D         jnz short SSQDYJ.005F87D7
    005F87CA   .  8D45 F8       lea eax,dword ptr ss:[ebp-8]
    005F87CD   .  BA 44895F00   mov edx,SSQDYJ.005F8944           ;  ASCII "yxb_200@"
    005F87D2   .  E8 F9C4E0FF   call SSQDYJ.00404CD0              ;  ...
    005F87D7   >  33F6          xor esi,esi
    005F87D9   .  33C0          xor eax,eax
    005F87DB   .  55            push ebp
    005F87DC   .  68 97885F00   push SSQDYJ.005F8897
    005F87E1   .  64:FF30       push dword ptr fs:[eax]
    005F87E4   .  64:8920       mov dword ptr fs:[eax],esp
    005F87E7   .  8B45 F8       mov eax,dword ptr ss:[ebp-8]
    005F87EA   .  E8 25FFFFFF   call SSQDYJ.005F8714              ;  szKey = "6962>:514;4"各字符求和 得到 600
    005F87EF   .  B9 FF000000   mov ecx,0FF
    005F87F4   .  99            cdq
    005F87F5   .  F7F9          idiv ecx                          ;  600 % 0xFF = 90
    005F87F7   .  8BFA          mov edi,edx
    005F87F9   .  8D45 EC       lea eax,dword ptr ss:[ebp-14]
    005F87FC   .  E8 37C4E0FF   call SSQDYJ.00404C38              ;  ...
    005F8801   .  C745 E8 01000>mov dword ptr ss:[ebp-18],1       ;  下面循环 i 初值是 1 ( 不是 0 )
    005F8808   >  8D45 DC       lea eax,dword ptr ss:[ebp-24]
    005F880B   .  50            push eax
    005F880C   .  B9 02000000   mov ecx,2
    005F8811   .  8B55 E8       mov edx,dword ptr ss:[ebp-18]
    005F8814   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005F8817   .  E8 2CC9E0FF   call SSQDYJ.00405148              ;  循环取 "00A6E1236B9AF7" 中的两个字符
    005F881C   .  8B4D DC       mov ecx,dword ptr ss:[ebp-24]
    005F881F   .  8D45 E0       lea eax,dword ptr ss:[ebp-20]
    005F8822   .  BA 58895F00   mov edx,SSQDYJ.005F8958
    005F8827   .  E8 10C7E0FF   call SSQDYJ.00404F3C              ;  字符串前 + '$'
    005F882C   .  8B45 E0       mov eax,dword ptr ss:[ebp-20]
    005F882F   .  E8 2417E1FF   call SSQDYJ.00409F58              ;  文本转换为数值
    005F8834   .  8945 E4       mov dword ptr ss:[ebp-1C],eax
    005F8837   .  3B75 F0       cmp esi,dword ptr ss:[ebp-10]
    005F883A   .  7D 03         jge short SSQDYJ.005F883F
    005F883C   .  46            inc esi                           ;  这里让 ESI 从 1 到 11 ( szKey 的长度) 循环
    005F883D   .  EB 05         jmp short SSQDYJ.005F8844
    005F883F   >  BE 01000000   mov esi,1
    005F8844   >  8B45 F8       mov eax,dword ptr ss:[ebp-8]
    005F8847   .  33DB          xor ebx,ebx
    005F8849   .  8A5C30 FF     mov bl,byte ptr ds:[eax+esi-1]
    005F884D   .  335D E4       xor ebx,dword ptr ss:[ebp-1C]     ;  结果 ^ szKey[ ESI - 1]
    005F8850   .  3BFB          cmp edi,ebx
    005F8852   .  7C 0A         jl short SSQDYJ.005F885E
    005F8854   .  81C3 FF000000 add ebx,0FF                       ;  异或结果 - 上轮结果 ( 不够减就先加上 255 再减 )
    005F885A   .  2BDF          sub ebx,edi
    005F885C   .  EB 02         jmp short SSQDYJ.005F8860
    005F885E   >  2BDF          sub ebx,edi                       ;  异或结果 - 上轮结果 ( 够减就直接减 )
    005F8860   >  8D45 D8       lea eax,dword ptr ss:[ebp-28]
    005F8863   .  8BD3          mov edx,ebx
    005F8865   .  E8 AEC5E0FF   call SSQDYJ.00404E18
    005F886A   .  8B55 D8       mov edx,dword ptr ss:[ebp-28]
    005F886D   .  8D45 EC       lea eax,dword ptr ss:[ebp-14]
    005F8870   .  E8 83C6E0FF   call SSQDYJ.00404EF8              ;  连接每轮计算结果
    005F8875   .  8B7D E4       mov edi,dword ptr ss:[ebp-1C]
    005F8878   .  8345 E8 02    add dword ptr ss:[ebp-18],2       ;  i = i + 2
    005F887C   .  8B45 FC       mov eax,dword ptr ss:[ebp-4]
    005F887F   .  E8 6CC6E0FF   call SSQDYJ.00404EF0              ;  读取字符串的 strlen( )
    005F8884   .  3B45 E8       cmp eax,dword ptr ss:[ebp-18]
    005F8887   .^ 0F8F 7BFFFFFF jg SSQDYJ.005F8808                ;  是否处理完所有的字符串
    005F888D   .  33C0          xor eax,eax
    005F888F   .  5A            pop edx
    005F8890   .  59            pop ecx
    005F8891   .  59            pop ecx
    005F8892   .  64:8910       mov dword ptr fs:[eax],edx
    005F8895   .  EB 12         jmp short SSQDYJ.005F88A9
    005F8897   .^ E9 88B9E0FF   jmp SSQDYJ.00404224
    005F889C   .  8D45 EC       lea eax,dword ptr ss:[ebp-14]
    005F889F   .  E8 94C3E0FF   call SSQDYJ.00404C38              ;  ...
    005F88A4   .  E8 A7BDE0FF   call SSQDYJ.00404650
    005F88A9   >  8B4D F4       mov ecx,dword ptr ss:[ebp-C]
    005F88AC   .  BA 64895F00   mov edx,SSQDYJ.005F8964           ;  ASCII "hazizi"
    005F88B1   .  B8 74895F00   mov eax,SSQDYJ.005F8974           ;  ASCII "zizi#826_zc"
    005F88B6   .  E8 45FCFFFF   call SSQDYJ.005F8500              ;  得到字符串 szStr = "0D430B99C05B5EB54383725D3255CA56"
    005F88BB   .  8D55 D4       lea edx,dword ptr ss:[ebp-2C]     ;  上面的这个字符串跟机器无关,无须跟进
    005F88BE   .  8B45 EC       mov eax,dword ptr ss:[ebp-14]
    005F88C1   .  E8 0A11E1FF   call SSQDYJ.004099D0              ;  去掉字符串前后的空格
    005F88C6   .  837D D4 00    cmp dword ptr ss:[ebp-2C],0
    005F88CA   .  75 0D         jnz short SSQDYJ.005F88D9
    005F88CC   .  8D45 EC       lea eax,dword ptr ss:[ebp-14]
    005F88CF   .  BA 64895F00   mov edx,SSQDYJ.005F8964           ;  ASCII "hazizi"
    005F88D4   .  E8 F7C3E0FF   call SSQDYJ.00404CD0              ;  ...
    005F88D9   >  B8 06000000   mov eax,6
    005F88DE   .  E8 71AAE0FF   call SSQDYJ.00403354              ;  生成一个随机数
    005F88E3   .  8BF0          mov esi,eax
    005F88E5   .  85F6          test esi,esi
    005F88E7   .  7D 05         jge short SSQDYJ.005F88EE
    005F88E9   .  BE 01000000   mov esi,1
    005F88EE   >  8B55 F4       mov edx,dword ptr ss:[ebp-C]
    005F88F1   .  8BCE          mov ecx,esi
    005F88F3   .  8B45 EC       mov eax,dword ptr ss:[ebp-14]
    005F88F6   .  E8 D5C8E0FF   call SSQDYJ.004051D0              ;  将上面循环结果插入到 szStr 的随机位置
    005F88FB   .  33C0          xor eax,eax
    005F88FD   .  5A            pop edx

        ---------------------------------------------------------------------------------------------------------------
        先把前面得到的 "00A6E1236B9AF7" 分成 6 个 byte 得到 byte bHex[6] = {0x00,0xA6,0xE1,0x23,0x6B,0x9A,0xF7}
        然后循环处理:bHex ^ szKey - bHex[i-1]
        说明:不够减则加上 0xFF 再减,另外 i = 0 时 ,bHex[i-1] 另外单独算,大概是 sum( szKey ) % 255
        最后我们看到程序解密出一个字符串 "0D430B99C05B5EB54383725D3255CA56",然后将循环结果插入随机位置,为后面校验准备
        实际,我们并不关心 "0D430B99C05B5EB54383725D3255CA56" 这个字符串,只要让 str1 = str2 即可通过注册
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表