挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 2569|回复: 0
打印 上一主题 下一主题

[分享] Reversing cutie-keygen实战破解教程

[复制链接]
6高级会员
762/1100

762

积分

246

主题

16

听众
已帮网友解决0 个问题
好评
0
贡献
516
海币
2257
交易币
0
跳转到指定楼层
楼主
发表于 2017-5-22 09:46:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


本帖最后由 ymgsk123 于 2017-5-22 09:52 编辑

Reversing cutie-keygen实战破解教程
QT的Crack Me,试运行

界面标题 有个cutie KeyGen,找Main,懒得拖IDA了。

0x2 Main位于01381BF0,PS:自行注意偏移地址
  1. 0138190B  |.  6A 0C                                       PUSH    0xC0138190D  |.  68 18B0C401                                 PUSH    01C4B018                                                ;  cutie keygen
  2. 01381912  |.  FFD5                                        CALL    EBP
  3. 01381914  |.  83C4 08                                     ADD     ESP, 0x8
  4. 01381917  |.  894424 10                                   MOV     DWORD PTR SS:[ESP+0x10], EAX
  5. 0138191B  |.  8D4424 10                                   LEA     EAX, DWORD PTR SS:[ESP+0x10]
  6. 0138191F  |.  C64424 68 07                                MOV     BYTE PTR SS:[ESP+0x68], 0x7
  7. 01381924  |.  50                                          PUSH    EAX
  8. 01381925  |.  8D4C24 1C                                   LEA     ECX, DWORD PTR SS:[ESP+0x1C]
  9. 01381929  |.  FF15 A0413801                               CALL    DWORD PTR DS:[<&Qt5Gui.QWindow::setTitle>]              ;  Qt5Gui.QWindow::setTitle
  10. 0138192F  |.  8D4C24 10                                   LEA     ECX, DWORD PTR SS:[ESP+0x10]
  11. 01381933  |.  C64424 68 04                                MOV     BYTE PTR SS:[ESP+0x68], 0x4
  12. 01381938  |.  FF15 84413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::~QString>]             ;  Qt5Core.QXmlStreamStringRef::~QXmlStreamStringRef
  13. 0138193E  |.  8D4C24 18                                   LEA     ECX, DWORD PTR SS:[ESP+0x18]
  14. 01381942  |.  FF15 BC413801                               CALL    DWORD PTR DS:[<&Qt5Gui.QWindow::show>]                  ;  Qt5Gui.QWindow::show
  15. 01381948  |.  6A 00                                       PUSH    0x0
  16. 0138194A  |.  8D4C24 38                                   LEA     ECX, DWORD PTR SS:[ESP+0x38]
  17. 0138194E  |.  E8 9D020000                                 CALL    01381BF0
复制代码
找按钮派发事件
  1. 01382E80  /[        DISCUZ_CODE_58        ]nbsp; 8B4424 08                                   MOV     EAX, DWORD PTR SS:[ESP+0x8]
  2. 01382E84  |.  83EC 08                                     SUB     ESP, 0x8
  3. 01382E87  |.  85C0                                        TEST    EAX, EAX
  4. 01382E89  |.  75 61                                       JNZ     SHORT 01382EEC
  5. 01382E8B  |.  8B4424 14                                   MOV     EAX, DWORD PTR SS:[ESP+0x14]
  6. 01382E8F  |.  83E8 00                                     SUB     EAX, 0x0                                                ;  Switch (cases 0..1)
  7. 01382E92  |.  74 20                                       JE      SHORT 01382EB4
  8. 01382E94  |.  48                                          DEC     EAX
  9. 01382E95  |.  75 71                                       JNZ     SHORT 01382F08
  10. 01382E97  |.  8B4424 18                                   MOV     EAX, DWORD PTR SS:[ESP+0x18]                            ;  Case 1 of switch 01382E8F
  11. 01382E9B  |.  51                                          PUSH    ECX
  12. 01382E9C  |.  8BCC                                        MOV     ECX, ESP
  13. 01382E9E  |.  FF70 04                                     PUSH    DWORD PTR DS:[EAX+0x4]
  14. 01382EA1  |.  FF15 40413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::QString>]              ;  Qt5Core.QString::QString
  15. 01382EA7  |.  8B4C24 10                                   MOV     ECX, DWORD PTR SS:[ESP+0x10]                            ; |
  16. 01382EAB  |.  E8 E0F5FFFF                                 CALL    01382490                                                ; \win-crac.01382490
  17. 01382EB0  |.  83C4 08                                     ADD     ESP, 0x8
  18. 01382EB3  |.  C3                                          RETN
复制代码
跟进来后
  1. 01382EAB  |.  E8 E0F5FFFF                                 CALL    01382490                                                ; \win-crac.01382490
复制代码
这里是字符串消息记录调试
  1. 013825AA  |.  E8 A1F7FFFF                                 CALL    01381D50                                                ; \win-crac.01381D50013825AF  |.  84C0                                        TEST    AL, AL
  2. 013825B1  |.  8D4C24 38                                   LEA     ECX, DWORD PTR SS:[ESP+0x38]
  3. 013825B5  |.  8D4424 18                                   LEA     EAX, DWORD PTR SS:[ESP+0x18]
  4. 013825B9  |.  50                                          PUSH    EAX
  5. 013825BA  |.  6A 00                                       PUSH    0x0
  6. 013825BC  |.  6A 00                                       PUSH    0x0
  7. 013825BE  |.  6A 00                                       PUSH    0x0
  8. 013825C0      74 2B                                       JE      SHORT 013825ED
  9. 013825C2  |.  FF15 54413801                               CALL    DWORD PTR DS:[<&Qt5Core.QMessageLogger::QMessageLogger>>;  Qt5Core.QMessageLogger::QMessageLogger
  10. 013825C8  |.  8BC8                                        MOV     ECX, EAX
  11. 013825CA  |.  FFD5                                        CALL    EBP
  12. 013825CC  |.  68 B4B0C401                                 PUSH    01C4B0B4                                                ;  YES!
  13. 013825D1  |.  8BC8                                        MOV     ECX, EAX
  14. 013825D3  |.  C64424 58 03                                MOV     BYTE PTR SS:[ESP+0x58], 0x3
  15. 013825D8  |.  FF15 1C413801                               CALL    DWORD PTR DS:[<&Qt5Core.QDebug::operator<<>]            ;  Qt5Core.QDebug::operator<<
  16. 013825DE  |.  8D4C24 18                                   LEA     ECX, DWORD PTR SS:[ESP+0x18]
  17. 013825E2  |.  C64424 54 01                                MOV     BYTE PTR SS:[ESP+0x54], 0x1
  18. 013825E7  |.  FFD7                                        CALL    EDI
  19. 013825E9  |.  6A 00                                       PUSH    0x0
  20. 013825EB  |.  EB 29                                       JMP     SHORT 01382616
  21. 013825ED  |>  FF15 54413801                               CALL    DWORD PTR DS:[<&Qt5Core.QMessageLogger::QMessageLogger>>;  Qt5Core.QMessageLogger::QMessageLogger
  22. 013825F3  |.  8BC8                                        MOV     ECX, EAX
  23. 013825F5  |.  FFD5                                        CALL    EBP
  24. 013825F7  |.  68 BCB0C401                                 PUSH    01C4B0BC                                                ;  NOPE :(
复制代码


爆破的话 013825C0
  1. 013825AA  |.  E8 A1F7FFFF                                 CALL    01381D50                                                ; \win-crac.01381D50
复制代码
  1. 01381DB3  |.  FF15 40413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::QString>]              ;  Qt5Core.QString::QString
  2. 01381DB9  |.  8BCB                                        MOV     ECX, EBX                                                ; |
  3. 01381DBB  |.  E8 E0000000                                 CALL    01381EA0                                                ; \win-crac.01381EA0
  4. 01381DC0  |.  50                                          PUSH    EAX
  5. 01381DC1  |.  8D8C24 2C010000                             LEA     ECX, DWORD PTR SS:[ESP+0x12C]
  6. 01381DC8  |.  FF15 3C413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::operator=>]            ;  Qt5Core.QString::operator=
  7. 01381DCE  |.  51                                          PUSH    ECX
  8. 01381DXF  |.  8D8424 2C010000                             LEA     EAX, DWORD PTR SS:[ESP+0x12C]
  9. 01381DD6  |.  8BCC                                        MOV     ECX, ESP
  10. 01381DD8  |.  50                                          PUSH    EAX
  11. 01381DD9  |.  FF15 40413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::QString>]              ;  Qt5Core.QString::QString
  12. 01381DDF  |.  8BCB                                        MOV     ECX, EBX
  13. 01381DE1  |.  E8 7A080000                                 CALL    01382660
复制代码
01381DB3  PassWord 01381DE1 |. E8 7A080000 CALL 01382660 xor PassWord0x5 初始化算法跟进Main CALL 01381BF0 01381C32  |.  E8 69030000                                 CALL    01381FA0  算法
加密的关键,块加密算法,初始化的数据
  1. 0138221B  |.  C78424 90000000 DF90BC70                    MOV     DWORD PTR SS:[ESP+0x90], 0x70BC90DF
  2. 01382226  |.  C78424 94000000 57EF965A                    MOV     DWORD PTR SS:[ESP+0x94], 0x5A96EF57
  3. 01382231  |.  C78424 98000000 EEXF0955                    MOV     DWORD PTR SS:[ESP+0x98], 0x5509XFEE
  4. 0138223C  |.  C78424 9C000000 CE80200D                    MOV     DWORD PTR SS:[ESP+0x9C], 0xD2080CE
  5. 01382247  |.  C78424 A0000000 4FE10E07                    MOV     DWORD PTR SS:[ESP+0xA0], 0x70EE14F
  6. 01382252  |.  C78424 A4000000 46A4C62F                    MOV     DWORD PTR SS:[ESP+0xA4], 0x2FC6A446
  7. 0138225D  |.  C78424 A8000000 F0EC5553                    MOV     DWORD PTR SS:[ESP+0xA8], 0x5355EXF0
  8. 01382268  |.  C78424 AC000000 2B785764                    MOV     DWORD PTR SS:[ESP+0xAC], 0x6457782B
复制代码
用了一对64的块,并且每个都使用了个64的密钥并且看关键的地方是不是一个字符或单个数据块,然后这些数值在初始化的时候就被利用
  1. 013822B8  |.  C747 18 3A0E0F88                            MOV     DWORD PTR DS:[EDI+0x18], 0x880F0E3A
  2. 013822BF  |.  C747 1C AF56D816                            MOV     DWORD PTR DS:[EDI+0x1C], 0x16D856AF
  3. 013822C6  |.  C747 20 10F38F05                            MOV     DWORD PTR DS:[EDI+0x20], 0x58FF310
  4. 013822CD  |.  C747 24 7C36E8D8                            MOV     DWORD PTR DS:[EDI+0x24], 0xD8E8367C
复制代码
再看这里01381DE1 |. E8 7A080000 CALL 01382660 xor PassWord
这里是16个字节的第一块地方,然后同一段代码来处理最后16个字节,其次逆变换在最小尾数
  1. 013829C0   > /33C0                                        XOR     EAX, EAX
  2. 013829C2   . |8BCA                                        MOV     ECX, EDX
  3. 013829C4   . |0FACEA 08                                   SHRD    EDX, EBP, 0x8
  4. 013829C8   . |C1E1 18                                     SHL     ECX, 0x18
  5. 013829CB   . |C1ED 08                                     SHR     EBP, 0x8
  6. 013829CE   . |0BD0                                        OR      EDX, EAX
  7. 013829D0   . |0BE9                                        OR      EBP, ECX
  8. 013829D2   . |03D3                                        ADD     EDX, EBX
  9. 013829D4   . |8BCE                                        MOV     ECX, ESI
  10. 013829D6   . |13EE                                        ADC     EBP, ESI
  11. 013829D8   . |C1E9 1D                                     SHR     ECX, 0x1D
  12. 013829DB   . |336C24 58                                   XOR     EBP, DWORD PTR SS:[ESP+0x58]
  13. 013829DF   . |33D7                                        XOR     EDX, EDI
  14. 013829E1   . |0FA4DE 03                                   SHLD    ESI, EBX, 0x3
  15. 013829E5   . |896C24 3C                                   MOV     DWORD PTR SS:[ESP+0x3C], EBP
  16. 013829E9   . |0BF0                                        OR      ESI, EAX
  17. 013829EB   . |896C24 7C                                   MOV     DWORD PTR SS:[ESP+0x7C], EBP
  18. 013829EF   . |33F5                                        XOR     ESI, EBP
  19. 013829F1   . |C1E3 03                                     SHL     EBX, 0x3
  20. 013829F4   . |8B6C24 5C                                   MOV     EBP, DWORD PTR SS:[ESP+0x5C]
  21. 013829F8   . |0BD9                                        OR      EBX, ECX
  22. 013829FA   . |8B4C24 1C                                   MOV     ECX, DWORD PTR SS:[ESP+0x1C]
  23. 013829FE   . |33DA                                        XOR     EBX, EDX
  24. 01382A00   . |0FAC6C24 1C 08                              SHRD    DWORD PTR SS:[ESP+0x1C], EBP, 0x8
  25. 01382A06   . |0B4424 1C                                   OR      EAX, DWORD PTR SS:[ESP+0x1C]
  26. 01382A0A   . |C1E1 18                                     SHL     ECX, 0x18
  27. 01382A0D   . |C1ED 08                                     SHR     EBP, 0x8
  28. 01382A10   . |0BCD                                        OR      ECX, EBP
  29. 01382A12   . |895424 78                                   MOV     DWORD PTR SS:[ESP+0x78], EDX
  30. 01382A16   . |8B6C24 58                                   MOV     EBP, DWORD PTR SS:[ESP+0x58]
  31. 01382A1A   . |03C7                                        ADD     EAX, EDI
  32. 01382A1C   . |897424 74                                   MOV     DWORD PTR SS:[ESP+0x74], ESI
  33. 01382A20   . |13CD                                        ADC     ECX, EBP
  34. 01382A22   . |334424 24                                   XOR     EAX, DWORD PTR SS:[ESP+0x24]
  35. 01382A26   . |334C24 14                                   XOR     ECX, DWORD PTR SS:[ESP+0x14]
  36. 01382A2A   . |894424 1C                                   MOV     DWORD PTR SS:[ESP+0x1C], EAX
  37. 01382A2E   . |33C0                                        XOR     EAX, EAX
  38. 01382A30   . |894C24 5C                                   MOV     DWORD PTR SS:[ESP+0x5C], ECX
  39. 01382A34   . |8BCD                                        MOV     ECX, EBP
  40. 01382A36   . |0FA4FD 03                                   SHLD    EBP, EDI, 0x3
  41. 01382A3A   . |C1E9 1D                                     SHR     ECX, 0x1D
  42. 01382A3D   . |0BC5                                        OR      EAX, EBP
  43. 01382A3F   . |C1E7 03                                     SHL     EDI, 0x3
  44. 01382A42   . |334424 5C                                   XOR     EAX, DWORD PTR SS:[ESP+0x5C]
  45. 01382A46   . |0BF9                                        OR      EDI, ECX
  46. 01382A48   . |337C24 1C                                   XOR     EDI, DWORD PTR SS:[ESP+0x1C]
  47. 01382A4C   . |8B6C24 3C                                   MOV     EBP, DWORD PTR SS:[ESP+0x3C]
  48. 01382A50   . |894424 58                                   MOV     DWORD PTR SS:[ESP+0x58], EAX
  49. 01382A54   . |8B4424 24                                   MOV     EAX, DWORD PTR SS:[ESP+0x24]
  50. 01382A58   . |83C0 01                                     ADD     EAX, 0x1
  51. 01382A5B   . |894424 24                                   MOV     DWORD PTR SS:[ESP+0x24], EAX
  52. 01382A5F   . |835424 14 00                                ADC     DWORD PTR SS:[ESP+0x14], 0x0
  53. 01382A64   . |75 09                                       JNZ     SHORT 01382A6F
  54. 01382A66   . |83F8 20                                     CMP     EAX, 0x20
  55. 01382A69   .^\0F82 51FFFFFF                               JB      013829C0
复制代码
013829D0   .  0BE9                                        OR      EBP, ECX                                                ;  s0 = ror(s0, 8)013829D6   .  13EE                                        ADC     EBP, ESI                                                ;  s0 = s0 + s1013829DF   .  33D7                                        XOR     EDX, EDI                                                ;  s0 = s0 ^ x0013829F8   .  0BD9                                        OR      EBX, ECX                                                ; s1 = rol(s1, 3)013829FE   .  33DA                                        XOR     EBX, EDX                                                ;  s1 = s1 ^ s001382A10   .  0BCD                                        OR      ECX, EBP                                                ;  x1 = ror(x1, 8)01382A20   .  13CD                                        ADC     ECX, EBP                                                ;  x1 = x1 + x001382A26   .  334C24 14                                XOR     ECX, DWORD PTR SS:[ESP+0x14]                            ;  x1 = x1 ^ i01382A46   .  0BF9                                        OR      EDI, ECX                                                ;  x0 = rol(x0, 3)01382A48   .  337C24 1C                                   XOR     EDI, DWORD PTR SS:[ESP+0x1C]                            ;  x0 = x0 ^ x101382A5F   .  835424 14 00                                ADC     DWORD PTR SS:[ESP+0x14], 0x0                            ;  i = i + 1
C747 18 3A0E0F88                            MOV     DWORD PTR DS:[EDI+0x18], 0x880F0E3A013822BF  |.  C747 1C AF56D816                            MOV     DWORD PTR DS:[EDI+0x1C], 0x16D856AF013822C6  |.  C747 20 10F38F05                            MOV     DWORD PTR DS:[EDI+0x20], 0x58FF310013822CD  |.  C747 24 7C36E8D8                            MOV     DWORD PTR DS:[EDI+0x24], 0xD8E8367C
  1. def en_cry(HexData):
  2.     s0, s1 = HexData
  3.     x0 = 0xD8E8367C058FF310
  4.     x1 = 0x16D856AF880F0E3A
  5.     for i in xrange(32):
  6.         s0 = add(ror(s0, 8), s1) ^ x0
  7.         x1 = add(ror(x1, 8), x0) ^ i
  8.         s1 = rol(s1, 3) ^ s0
  9.         x0 = rol(x0, 3) ^ x1
  10.     return s0, s1

  11. def encrypt(HexData):
  12.     res = []
  13.     for i in xrange(0, len(HexData), 2):
  14.         res.extend(en_cry(HexData[i:i + 2]))
  15.     return res

  16. def encrypt_passwd(passwd):
  17.     l = unpack('>4Q', pack('>16H', *passwd))
  18.     l = encrypt(l)
  19.     l = unpack('>16H', pack('>4Q', *l))    return l
复制代码
加密密钥与阵列块
  1. 01381E11  |> \FF73 08                                     PUSH    DWORD PTR DS:[EBX+0x8]
  2. 01381E14  |.  8D4424 18                                   LEA     EAX, DWORD PTR SS:[ESP+0x18]
  3. 01381E18  |.  50                                          PUSH    EAX
  4. 01381E19  |.  8D8424 9C000000                             LEA     EAX, DWORD PTR SS:[ESP+0x9C]
  5. 01381E20  |.  50                                          PUSH    EAX
  6. 01381E21  |.  E8 0AFXFFFF                                 CALL    01381A30
  7. 01381E26  |.  8BF0                                        MOV     ESI, EAX
  8. 01381E28  |.  B9 20000000                                 MOV     ECX, 0x20
  9. 01381E2D  |.  F3:A5                                       REP     MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
  10. 01381E2F  |.  83C4 0C                                     ADD     ESP, 0xC
  11. 01381E32  |.  8D7C24 14                                   LEA     EDI, DWORD PTR SS:[ESP+0x14]
  12. 01381E36  |.  8BF0                                        MOV     ESI, EAX
  13. 01381E38  |.  B9 20000000                                 MOV     ECX, 0x20
  14. 01381E3D  |.  F3:A5                                       REP     MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
  15. 01381E3F  |.  FF73 0C                                     PUSH    DWORD PTR DS:[EBX+0xC]
  16. 01381E42  |.  8D4C24 18                                   LEA     ECX, DWORD PTR SS:[ESP+0x18]
  17. 01381E46  |.  E8 05FEFFFF                                 CALL    01381C50
  18. 01381E4B  |.  84C0                                        TEST    AL, AL
  19. 01381E4D  |.  75 04                                       JNZ     SHORT 01381E53
  20. 01381E4F  |.  B3 01                                       MOV     BL, 0x1
  21. 01381E51  |.  EB 02                                       JMP     SHORT 01381E55
  22. 01381E53  |>  32DB                                        XOR     BL, BL
  23. 01381E55  |>  8D8C24 28010000                             LEA     ECX, DWORD PTR SS:[ESP+0x128]
  24. 01381E5C  |.  C78424 20010000 FFFFFFFF                    MOV     DWORD PTR SS:[ESP+0x120], -0x1
  25. 01381E67  |.  FF15 84413801                               CALL    DWORD PTR DS:[<&Qt5Core.QString::~QString>]             ;  Qt5Core.QXmlStreamStringRef::~QXmlStreamStringRef
复制代码
这里基于密钥与阵列,然后创造我们的Key与基准数据进行比较。
  1. 01381FBE  |.  C74424 10 80130000                          MOV     DWORD PTR SS:[ESP+0x10], 0x1380
  2. 01381FC6  |.  C74424 14 00000000                          MOV     DWORD PTR SS:[ESP+0x14], 0x0
  3. 01381FCE  |.  C74424 18 E4040000                          MOV     DWORD PTR SS:[ESP+0x18], 0x4E4
  4. 01381FD6  |.  C74424 1C 00000000                          MOV     DWORD PTR SS:[ESP+0x1C], 0x0
  5. 01381FDE  |.  C74424 20 09270000                          MOV     DWORD PTR SS:[ESP+0x20], 0x2709
  6. 01381FE6  |.  C74424 24 00000000                          MOV     DWORD PTR SS:[ESP+0x24], 0x0
  7. 01381FEE  |.  C74424 28 35200000                          MOV     DWORD PTR SS:[ESP+0x28], 0x2035
  8. 01381FF6  |.  C74424 2C 00000000                          MOV     DWORD PTR SS:[ESP+0x2C], 0x0
  9. 01381FFE  |.  C74424 30 FA250000                          MOV     DWORD PTR SS:[ESP+0x30], 0x25FA
  10. 01382006  |.  C74424 34 00000000                          MOV     DWORD PTR SS:[ESP+0x34], 0x0
  11. 0138200E  |.  C74424 38 DA560000                          MOV     DWORD PTR SS:[ESP+0x38], 0x56DA
  12. 01382016  |.  C74424 3C 00000000                          MOV     DWORD PTR SS:[ESP+0x3C], 0x0
  13. 0138201E  |.  C74424 40 03010000                          MOV     DWORD PTR SS:[ESP+0x40], 0x103
  14. 01382026  |.  C74424 44 00000000                          MOV     DWORD PTR SS:[ESP+0x44], 0x0
  15. 0138202E  |.  C74424 48 31150000                          MOV     DWORD PTR SS:[ESP+0x48], 0x1531
  16. 01382036  |.  C74424 4C 00000000                          MOV     DWORD PTR SS:[ESP+0x4C], 0x0
  17. 0138203E  |.  C74424 50 AA0C0000                          MOV     DWORD PTR SS:[ESP+0x50], 0xCAA
  18. 01382046  |.  C74424 54 00000000                          MOV     DWORD PTR SS:[ESP+0x54], 0x0
  19. 0138204E  |.  C74424 58 611A0000                          MOV     DWORD PTR SS:[ESP+0x58], 0x1A61
  20. 01382056  |.  C74424 5C 00000000                          MOV     DWORD PTR SS:[ESP+0x5C], 0x0
  21. 0138205E  |.  C74424 60 070E0000                          MOV     DWORD PTR SS:[ESP+0x60], 0xE07
  22. 01382066  |.  C74424 64 00000000                          MOV     DWORD PTR SS:[ESP+0x64], 0x0
  23. 0138206E  |.  C74424 68 20000000                          MOV     DWORD PTR SS:[ESP+0x68], 0x20
  24. 01382076  |.  C74424 6C 00000000                          MOV     DWORD PTR SS:[ESP+0x6C], 0x0
  25. 0138207E  |.  C74424 70 E2000000                          MOV     DWORD PTR SS:[ESP+0x70], 0xE2
  26. 01382086  |.  C74424 74 00000000                          MOV     DWORD PTR SS:[ESP+0x74], 0x0
  27. 0138208E  |.  C74424 78 3F120000                          MOV     DWORD PTR SS:[ESP+0x78], 0x123F
  28. 01382096  |.  C74424 7C 00000000                          MOV     DWORD PTR SS:[ESP+0x7C], 0x0
  29. 0138209E  |.  C78424 80000000 C0000000                    MOV     DWORD PTR SS:[ESP+0x80], 0xC0
  30. 013820A9  |.  C78424 84000000 00000000                    MOV     DWORD PTR SS:[ESP+0x84], 0x0
  31. 013820B4  |.  C78424 88000000 C70D0000                    MOV     DWORD PTR SS:[ESP+0x88], 0xDC7
  32. 013820BF  |.  C78424 8C000000 00000000                    MOV     DWORD PTR SS:[ESP+0x8C], 0x0
复制代码
这里有16个数据块的阵列,我们可以先表示位为4×4的矩阵,它在开始时就被初始化,以及另一个常数数据矩阵相乘。
如果是相等的,输入的Key就是有效的。
  1. 013820EE  |.  C74424 10 6AC26F14                          MOV     DWORD PTR SS:[ESP+0x10], 0x146FC26A
  2. 013820F6  |.  C74424 14 00000000                          MOV     DWORD PTR SS:[ESP+0x14], 0x0
  3. 013820FE  |.  C74424 18 9A013424                          MOV     DWORD PTR SS:[ESP+0x18], 0x2434019A
  4. 01382106  |.  C74424 1C 00000000                          MOV     DWORD PTR SS:[ESP+0x1C], 0x0
  5. 0138210E  |.  C74424 20 4E96B216                          MOV     DWORD PTR SS:[ESP+0x20], 0x16B2964E
  6. 01382116  |.  C74424 24 00000000                          MOV     DWORD PTR SS:[ESP+0x24], 0x0
  7. 0138211E  |.  C74424 28 64C1FC1D                          MOV     DWORD PTR SS:[ESP+0x28], 0x1DFCC164
  8. 01382126  |.  C74424 2C 00000000                          MOV     DWORD PTR SS:[ESP+0x2C], 0x0
  9. 0138212E  |.  C74424 30 046B7610                          MOV     DWORD PTR SS:[ESP+0x30], 0x10766B04
  10. 01382136  |.  C74424 34 00000000                          MOV     DWORD PTR SS:[ESP+0x34], 0x0
  11. 0138213E  |.  C74424 38 9DE9671F                          MOV     DWORD PTR SS:[ESP+0x38], 0x1F67E99D
  12. 01382146  |.  C74424 3C 00000000                          MOV     DWORD PTR SS:[ESP+0x3C], 0x0
  13. 0138214E  |.  C74424 40 02589013                          MOV     DWORD PTR SS:[ESP+0x40], 0x13905802
  14. 01382156  |.  C74424 44 00000000                          MOV     DWORD PTR SS:[ESP+0x44], 0x0
  15. 0138215E  |.  C74424 48 A39DA914                          MOV     DWORD PTR SS:[ESP+0x48], 0x14A99DA3
  16. 01382166  |.  C74424 4C 00000000                          MOV     DWORD PTR SS:[ESP+0x4C], 0x0
  17. 0138216E  |.  C74424 50 6CCEE52A                          MOV     DWORD PTR SS:[ESP+0x50], 0x2AE5CE6C
  18. 01382176  |.  C74424 54 00000000                          MOV     DWORD PTR SS:[ESP+0x54], 0x0
  19. 0138217E  |.  C74424 58 7FAA4840                          MOV     DWORD PTR SS:[ESP+0x58], 0x4048AA7F
  20. 01382186  |.  C74424 5C 00000000                          MOV     DWORD PTR SS:[ESP+0x5C], 0x0
  21. 0138218E  |.  C74424 60 5F9BXF33                          MOV     DWORD PTR SS:[ESP+0x60], 0x33XF9B5F
  22. 01382196  |.  C74424 64 00000000                          MOV     DWORD PTR SS:[ESP+0x64], 0x0
  23. 0138219E  |.  C74424 68 6216102C                          MOV     DWORD PTR SS:[ESP+0x68], 0x2C101662
  24. 013821A6  |.  C74424 6C 00000000                          MOV     DWORD PTR SS:[ESP+0x6C], 0x0
  25. 013821AE  |.  C74424 70 E4FXF52D                          MOV     DWORD PTR SS:[ESP+0x70], 0x2DF5FCE4
  26. 013821B6  |.  C74424 74 00000000                          MOV     DWORD PTR SS:[ESP+0x74], 0x0
  27. 013821BE  |.  C74424 78 4CC7264C                          MOV     DWORD PTR SS:[ESP+0x78], 0x4C26C74C
  28. 013821C6  |.  C74424 7C 00000000                          MOV     DWORD PTR SS:[ESP+0x7C], 0x0
  29. 013821CE  |.  C78424 80000000 0F98D52C                    MOV     DWORD PTR SS:[ESP+0x80], 0x2CD5980F
  30. 013821D9  |.  C78424 84000000 00000000                    MOV     DWORD PTR SS:[ESP+0x84], 0x0
  31. 013821E4  |.  C78424 88000000 DBDEA92B                    MOV     DWORD PTR SS:[ESP+0x88], 0x2BA9DEDB
  32. 013821EF  |.  C78424 8C000000 00000000                    MOV     DWORD PTR SS:[ESP+0x8C], 0x0
复制代码
Python
  1. def Fuck():
  2.     B = []
  3.     for i in xrange(16):
  4.         B.append(Int(i))

  5.     s = Fuckr()
  6.     for i in B:
  7.         s.add(And(i >= 0, i <= 0xFFFF))

  8.     for i in xrange(4):
  9.         for j in xrange(4):
  10.             s.add(
  11.                 B[i + 0 * 4] * A[j + 0 * 4] +
  12.                 B[i + 1 * 4] * A[j + 1 * 4] +
  13.                 B[i + 2 * 4] * A[j + 2 * 4] +
  14.                 B[i + 3 * 4] * A[j + 3 * 4] == R[i * 4 + j]
  15.             )
  16.     r = []
  17.     if s.check() == sat:
  18.         r = []
  19.         model = s.model()
  20.         for i in xrange(16):
  21.             r.append(model[B[i]].as_long())
  22.     else:
  23.         print 'Oops'

  24.     return r
复制代码
编写脚本进行解密,经过测试还需要正确排列解密密钥的顺序。测试后
  1. def De_cry(HexData):[/i]
  2. [i]    s0, s1 = HexData[/i]
  3. [i]    x0 = 0x0A728E203850A80E[/i]
  4. [i]    x1 = 0x1B8E2679CCAEF6B4[/i]
  5. [i]    for i in xrange(32):[/i]
  6. [i]        x0 = ror(x0 ^ x1, 3)[/i]
  7. [i]        s1 = ror(s1 ^ s0, 3)[/i]
  8. [i]        x1 = rol(sub(x1 ^ (31 - i), x0), 8)[/i]
  9. [i]        s0 = rol(sub(s0 ^ x0, s1), 8)[/i]
  10. [i]    return s0, s1[/i]

  11. [i]def De(HexData):[/i]
  12. [i]    res = [][/i]
  13. [i]    for i in xrange(0, len(HexData), 2):[/i]
  14. [i]        res.extend(De_cry(HexData[i:i + 2]))[/i]
  15. [i]    return res[/i]

  16. [i]def De_PassWord(passwd):[/i]
  17. [i]    l = unpack('>4Q', pack('>16H', *passwd))[/i]
  18. [i]    l = De(l)[/i]
  19. [i]    l = unpack('>16H', pack('>4Q', *l))    return l
复制代码
Done
  1. A = [0x1380, 0x4E4, 0x2709, 0x2035, 0x25FA, 0x56DA, 0x103, 0x1531,
  2.     0x0CAA, 0x1A61, 0x0E07, 0x20, 0x0E2, 0x123F, 0x0C0, 0x0DC7]

  3. R = [0x146FC26A, 0x2434019A, 0x16B2964E, 0x1DFCC164,
  4.     0x10766B04, 0x1F67E99D, 0x13905802, 0x14A99DA3,
  5.     0x2AE5CE6C, 0x4048AA7F, 0x33XF9B5F, 0x2C101662,
  6.     0x2DF5FCE4, 0x4C26C74C, 0x2CD5980F, 0x2BA9DEDB,]

  7. xor_key = [0x90DF, 0x70BC, 0x0EF57, 0x5A96, 0x0XFEE, 0x5509, 0x80CE, 0x0D20,
  8.     0x0E14F, 0x70E, 0x0A446, 0x2FC6, 0x0EXF0, 0x5355, 0x782B, 0x6457]

  9. def Fuck():
  10.     B = []
  11.     for i in xrange(16):
  12.         B.append(Int(i))

  13.     s = Fuckr()
  14.     for i in B:
  15.         s.add(And(i >= 0, i <= 0xFFFF))

  16.     for i in xrange(4):
  17.         for j in xrange(4):
  18.             s.add(
  19.                 B[i + 0 * 4] * A[j + 0 * 4] +
  20.                 B[i + 1 * 4] * A[j + 1 * 4] +
  21.                 B[i + 2 * 4] * A[j + 2 * 4] +
  22.                 B[i + 3 * 4] * A[j + 3 * 4] == R[i * 4 + j]
  23.             )
  24.     r = []
  25.     if s.check() == sat:
  26.         r = []
  27.         model = s.model()
  28.         for i in xrange(16):
  29.             r.append(model[B[i]].as_long())
  30.     else:
  31.         print 'Oops'

  32.     return r

  33. def ror(n, c, bits=64):
  34.     mask = (1 << bits) - 1
  35.     return ((n >> c) | (n << (bits - c))) & mask

  36. def rol(n, c, bits=64):
  37.     return ror(n, bits - c, bits)

  38. def sub(n, c, bits=64):
  39.     mask = (1 << bits) - 1
  40.     return (n - c) & mask

  41. def xor_passwd(passwd):
  42.     l = [0] * 16
  43.     for i in xrange(16):
  44.         l[i] = passwd[i] ^ xor_key[i]
  45.     return l

  46. def De_cry(HexData):
  47.     s0, s1 = HexData
  48.     x0 = 0x0A728E203850A80E
  49.     x1 = 0x1B8E2679CCAEF6B4
  50.     for i in xrange(32):
  51.         x0 = ror(x0 ^ x1, 3)
  52.         s1 = ror(s1 ^ s0, 3)
  53.         x1 = rol(sub(x1 ^ (31 - i), x0), 8)
  54.         s0 = rol(sub(s0 ^ x0, s1), 8)
  55.     return s0, s1

  56. def De(HexData):
  57.     res = []
  58.     for i in xrange(0, len(HexData), 2):
  59.         res.extend(De_cry(HexData[i:i + 2]))
  60.     return res

  61. def De_PassWord(passwd):
  62.     l = unpack('>4Q', pack('>16H', *passwd))
  63.     l = De(l)
  64.     l = unpack('>16H', pack('>4Q', *l))
  65.     return l

  66. passwd = Fuck()
  67. passwd = De_PassWord(passwd)
  68. passwd = xor_passwd(passwd)
  69. print(''.join(map(chr, passwd)))
复制代码
下载地址
https://www.crack.vc/index.php?d ... le=cutie-keygen.zip



联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:有偿 求大神帮助 绕过一个DLL的网络验证!
下一篇:零基础学习破解软件(第1课)
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 03:08 , Processed in 0.102447 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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