飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5754|回复: 17

[原创] 抢先过萧老大发个算法分析

[复制链接]
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2009-3-29 23:17:47 | 显示全部楼层 |阅读模式
    标 题: 【原创】抢先过萧老大发个算法分析
    作 者: as3852711
    时 间: 2009-03-29,22:05
    链 接: https://www.chinapyg.com/viewthr ... &extra=page%3D1
    ―――――――――――――――――――――――――――――――――――――
    【文章标题】: 抢先过萧老大发个算法分析
    【文章作者】: xiaojiam
    【程序名称】: XXX RM 转换大师  
    【程序大小】: 955 KB
    【下载地址】: 自己搜索
    【保护方式】: 注册码
    【编写语言】: Delphi
    【使用工具】: PEID,OD
    【操作平台】: D-Windows XP3
    【程序介绍】: 用来转换 RM 文件的
    【作者声明】: 我只是一只小菜鸟,失误之处难免,敬望诸位大侠赐教!
    --------------------------------------------------------------------------------

    【分析前闲谈】
    --------------------------------------------------------------------------------
       今天无意中看到萧老大小发了个XXX RM 转换大师注册机,于是用心跟跟发现算法比较适
    合我们这些菜菜学习。就没等萧总发个分析,我就先来做个小人发份算法分析了。
    --------------------------------------------------------------------------------

    【详细过程】
    --------------------------------------------------------------------------------
      一、用PEID对程序进行查壳 → Borland Delphi 6.0 - 7.0
      
          Delphi写得,一看到是Delphi写的心就不由的爽起来。正所谓:

          易语言的浮点多,
          delphi的好看多。
          VB写的代码超长,
          VC写的最正常啊!
      
      二、用OD载入程序进行分析。
      
      载入OD后运行程序,字符串插件查找一下一大堆提示,用脑子想想来到这里。

    ------------------------------(第一部分))---------------------------------------------------------

    1. 004BD698  /.  55            push    ebp                              ;  程序按钮入口:
    2. 004BD699  |.  8BEC          mov     ebp, esp
    3. 004BD69B  |.  6A 00         push    0
    4. 004BD69D  |.  6A 00         push    0
    5. 004BD69F  |.  53            push    ebx
    6. 004BD6A0  |.  8BD8          mov     ebx, eax
    7. 004BD6A2  |.  33C0          xor     eax, eax
    8. 004BD6A4  |.  55            push    ebp
    9. 004BD6A5  |.  68 58D74B00   push    004BD758
    10. 004BD6AA  |.  64:FF30       push    dword ptr fs:[eax]
    11. 004BD6AD  |.  64:8920       mov     dword ptr fs:[eax], esp
    12. 004BD6B0  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
    13. 004BD6B3  |.  8B83 20030000 mov     eax, dword ptr [ebx+320]
    14. 004BD6B9  |.  E8 CE6DFAFF   call    0046448C
    15. 004BD6BE  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  取用户名:"hanyu"的长度;
    16. 004BD6C1  |.  E8 C66EF4FF   call    0040458C
    17. 004BD6C6  |.  85C0          test    eax, eax                         ;  为"0"就不跳转了提示输入用户明;
    18. 004BD6C8  |.  75 29         jnz     short 004BD6F3
    19. 004BD6CA  |.  6A 40         push    40
    20. 004BD6CC  |.  68 64D74B00   push    004BD764                         ;  警告
    21. 004BD6D1  |.  68 6CD74B00   push    004BD76C                         ;  请输入用户名!
    22. 004BD6D6  |.  8BC3          mov     eax, ebx
    23. 004BD6D8  |.  E8 97D5FAFF   call    0046AC74
    24. 004BD6DD  |.  50            push    eax                              ; |hOwner
    25. 004BD6DE  |.  E8 7199F4FF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
    26. 004BD6E3  |.  8B83 20030000 mov     eax, dword ptr [ebx+320]
    27. 004BD6E9  |.  8B10          mov     edx, dword ptr [eax]
    28. 004BD6EB  |.  FF92 C4000000 call    dword ptr [edx+C4]
    29. 004BD6F1  |.  EB 4A         jmp     short 004BD73D
    30. 004BD6F3  |>  8D55 F8       lea     edx, dword ptr [ebp-8]
    31. 004BD6F6  |.  8B83 24030000 mov     eax, dword ptr [ebx+324]
    32. 004BD6FC  |.  E8 8B6DFAFF   call    0046448C
    33. 004BD701  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  取注册码"RMCo-5797nv268-E616"的长度;
    34. 004BD704  |.  E8 836EF4FF   call    0040458C
    35. 004BD709  |.  85C0          test    eax, eax                         ;  同上;
    36. 004BD70B  |.  75 29         jnz     short 004BD736
    37. 004BD70D  |.  6A 40         push    40
    38. 004BD70F  |.  68 64D74B00   push    004BD764                         ;  警告
    39. 004BD714  |.  68 7CD74B00   push    004BD77C                         ;  请输入注册码!
    40. 004BD719  |.  8BC3          mov     eax, ebx
    41. 004BD71B  |.  E8 54D5FAFF   call    0046AC74
    42. 004BD720  |.  50            push    eax                              ; |hOwner
    43. 004BD721  |.  E8 2E99F4FF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
    44. 004BD726  |.  8B83 24030000 mov     eax, dword ptr [ebx+324]
    45. 004BD72C  |.  8B10          mov     edx, dword ptr [eax]
    46. 004BD72E  |.  FF92 C4000000 call    dword ptr [edx+C4]
    47. 004BD734  |.  EB 07         jmp     short 004BD73D
    48. 004BD736  |>  8BC3          mov     eax, ebx
    49. 004BD738  |.  E8 47F9FFFF   call    004BD084                         ;  写注册表CALL(F7跟进);
    复制代码
    ------------------------------(第二部分)-----------------------------------------------------------

    1. 004BD084   $  55            push    ebp
    2. 004BD085   .  8BEC          mov     ebp, esp
    3. 004BD087   .  33C9          xor     ecx, ecx
    4. 004BD089   .  51            push    ecx
    5. 004BD08A   .  51            push    ecx
    6. 004BD08B   .  51            push    ecx
    7. 004BD08C   .  51            push    ecx
    8. 004BD08D   .  51            push    ecx
    9. 004BD08E   .  53            push    ebx
    10. 004BD08F   .  56            push    esi
    11. 004BD090   .  57            push    edi
    12. 004BD091   .  8945 FC       mov     dword ptr [ebp-4], eax
    13. 004BD094   .  33C0          xor     eax, eax
    14. 004BD096   .  55            push    ebp
    15. 004BD097   .  68 D5D14B00   push    004BD1D5
    16. 004BD09C   .  64:FF30       push    dword ptr fs:[eax]
    17. 004BD09F   .  64:8920       mov     dword ptr fs:[eax], esp
    18. 004BD0A2   .  8B45 FC       mov     eax, dword ptr [ebp-4]
    19. 004BD0A5   .  E8 92020000   call    004BD33C                         ;  比较CALL(F7跟进);
    复制代码
    ------------------------------(第三部分)-----------------------------------------------------------

    1. 004BD33C  /$  55            push    ebp
    2. 004BD33D  |.  8BEC          mov     ebp, esp
    3. 004BD33F  |.  B9 04000000   mov     ecx, 4
    4. 004BD344  |>  6A 00         /push    0
    5. 004BD346  |.  6A 00         |push    0
    6. 004BD348  |.  49            |dec     ecx
    7. 004BD349  |.^ 75 F9         \jnz     short 004BD344
    8. 004BD34B  |.  51            push    ecx
    9. 004BD34C  |.  53            push    ebx
    10. 004BD34D  |.  56            push    esi
    11. 004BD34E  |.  8BF0          mov     esi, eax
    12. 004BD350  |.  33C0          xor     eax, eax
    13. 004BD352  |.  55            push    ebp
    14. 004BD353  |.  68 51D44B00   push    004BD451
    15. 004BD358  |.  64:FF30       push    dword ptr fs:[eax]
    16. 004BD35B  |.  64:8920       mov     dword ptr fs:[eax], esp
    17. 004BD35E  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
    18. 004BD361  |.  8B86 24030000 mov     eax, dword ptr [esi+324]
    19. 004BD367  |.  E8 2071FAFF   call    0046448C
    20. 004BD36C  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  注册码:"RMCo-5797nv268-E616"
    21. 004BD36F  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
    22. 004BD372  |.  E8 CDB3F4FF   call    00408744
    23. 004BD377  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    24. 004BD37A  |.  50            push    eax
    25. 004BD37B  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
    26. 004BD37E  |.  8B86 20030000 mov     eax, dword ptr [esi+320]
    27. 004BD384  |.  E8 0371FAFF   call    0046448C
    28. 004BD389  |.  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  用户名:hanyu
    29. 004BD38C  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
    30. 004BD38F  |.  E8 B0B3F4FF   call    00408744
    31. 004BD394  |.  8B55 F0       mov     edx, dword ptr [ebp-10]
    32. 004BD397  |.  8D4D F4       lea     ecx, dword ptr [ebp-C]
    33. 004BD39A  |.  8BC6          mov     eax, esi
    34. 004BD39C  |.  E8 03010000   call    004BD4A4                         ;  算法CALL(F7跟进);
    复制代码
    由于作者的算法隐藏的比较深,所以我们事先要一点弯路。找到后下好断就可以了:

    ------------------------------(第四部分)-----------------------------------------------------------

    1. 004BD4A4  /$  55            push    ebp                              ;  算法函数入口;
    2. 004BD4A5  |.  8BEC          mov     ebp, esp
    3. 004BD4A7  |.  51            push    ecx
    4. 004BD4A8  |.  B9 04000000   mov     ecx, 4
    5. 004BD4AD  |>  6A 00         /push    0
    6. 004BD4AF  |.  6A 00         |push    0
    7. 004BD4B1  |.  49            |dec     ecx
    8. 004BD4B2  |.^ 75 F9         \jnz     short 004BD4AD
    9. 004BD4B4  |.  51            push    ecx
    10. 004BD4B5  |.  874D FC       xchg    dword ptr [ebp-4], ecx
    11. 004BD4B8  |.  53            push    ebx
    12. 004BD4B9  |.  56            push    esi
    13. 004BD4BA  |.  57            push    edi
    14. 004BD4BB  |.  8BF9          mov     edi, ecx
    15. 004BD4BD  |.  8955 FC       mov     dword ptr [ebp-4], edx           ;  用户明:"hanyu";
    16. 004BD4C0  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    17. 004BD4C3  |.  E8 B472F4FF   call    0040477C
    18. 004BD4C8  |.  33C0          xor     eax, eax
    19. 004BD4CA  |.  55            push    ebp
    20. 004BD4CB  |.  68 65D64B00   push    004BD665
    21. 004BD4D0  |.  64:FF30       push    dword ptr fs:[eax]
    22. 004BD4D3  |.  64:8920       mov     dword ptr fs:[eax], esp
    23. 004BD4D6  |.  8BC7          mov     eax, edi
    24. 004BD4D8  |.  E8 EF6DF4FF   call    004042CC
    25. 004BD4DD  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  把"hanyu"值给EAX;
    26. 004BD4E0  |.  E8 A770F4FF   call    0040458C                         ;  //取用户名ASCII十六进制循环:
    27. 004BD4E5  |.  8BF0          mov     esi, eax                         ;  把用户名长度:5给ESI;
    28. 004BD4E7  |.  85F6          test    esi, esi
    29. 004BD4E9  |.  7E 26         jle     short 004BD511                   ;  开始循环;
    30. 004BD4EB  |.  BB 01000000   mov     ebx, 1
    31. 004BD4F0  |>  8D4D EC       /lea     ecx, dword ptr [ebp-14]
    32. 004BD4F3  |.  8B45 FC       |mov     eax, dword ptr [ebp-4]
    33. 004BD4F6  |.  0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]       ;  每位ASCII码;
    34. 004BD4FB  |.  33D2          |xor     edx, edx
    35. 004BD4FD  |.  E8 BEB5F4FF   |call    00408AC0
    36. 004BD502  |.  8B55 EC       |mov     edx, dword ptr [ebp-14]         ;  每位ASCII码的十六进制值;
    37. 004BD505  |.  8D45 F8       |lea     eax, dword ptr [ebp-8]          ;  转化为字符;
    38. 004BD508  |.  E8 8770F4FF   |call    00404594
    39. 004BD50D  |.  43            |inc     ebx                             ;  加1;
    40. 004BD50E  |.  4E            |dec     esi                             ;  减1;
    41. 004BD50F  |.^ 75 DF         \jnz     short 004BD4F0
    42. 004BD511  |>  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  循环后得到的字符串:"68616E7975"
    43. 004BD514  |.  E8 7370F4FF   call    0040458C                         ;  //以下是倒序循环:
    44. 004BD519  |.  8BF0          mov     esi, eax
    45. 004BD51B  |.  85F6          test    esi, esi
    46. 004BD51D  |.  7E 2C         jle     short 004BD54B
    47. 004BD51F  |.  BB 01000000   mov     ebx, 1                           ;  给EBX赋值为1;
    48. 004BD524  |>  8B45 F8       /mov     eax, dword ptr [ebp-8]          ;  二次循环开始了:"68616E7975"
    49. 004BD527  |.  E8 6070F4FF   |call    0040458C
    50. 004BD52C  |.  2BC3          |sub     eax, ebx                        ;  EAX-EBX;
    51. 004BD52E  |.  8B55 F8       |mov     edx, dword ptr [ebp-8]          ;  把字符传递到EBX:"68616E7975"
    52. 004BD531  |.  8A1402        |mov     dl, byte ptr [edx+eax]          ;  倒顺序开始:
    53. 004BD534  |.  8D45 E8       |lea     eax, dword ptr [ebp-18]         ;  把i位的值给EAX;
    54. 004BD537  |.  E8 786FF4FF   |call    004044B4
    55. 004BD53C  |.  8B55 E8       |mov     edx, dword ptr [ebp-18]
    56. 004BD53F  |.  8D45 F4       |lea     eax, dword ptr [ebp-C]
    57. 004BD542  |.  E8 4D70F4FF   |call    00404594
    58. 004BD547  |.  43            |inc     ebx                             ;  EBX加1;
    59. 004BD548  |.  4E            |dec     esi                             ;  ESI减1;
    60. 004BD549  |.^ 75 D9         \jnz     short 004BD524
    61. 004BD54B  |>  8D45 F8       lea     eax, dword ptr [ebp-8]
    62. 004BD54E  |.  50            push    eax
    63. 004BD54F  |.  B9 04000000   mov     ecx, 4
    64. 004BD554  |.  BA 01000000   mov     edx, 1
    65. 004BD559  |.  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  通过以上倒序循环得到的字符串:"5797E61686"
    66. 004BD55C  |.  E8 8B72F4FF   call    004047EC
    67. 004BD561  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
    68. 004BD564  |.  50            push    eax
    69. 004BD565  |.  B9 04000000   mov     ecx, 4
    70. 004BD56A  |.  BA 05000000   mov     edx, 5
    71. 004BD56F  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
    72. 004BD572  |.  E8 7572F4FF   call    004047EC
    73. 004BD577  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  首位选4个: "5797"
    74. 004BD57A  |.  E8 0D70F4FF   call    0040458C
    75. 004BD57F  |.  83F8 04       cmp     eax, 4                           ;  判断大不大于4
    76. 004BD582  |.  7D 2F         jge     short 004BD5B3                   ;  小于就进入循环;
    77. 004BD584  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  取头四位:"5797"  //[EBP-8]
    78. 004BD587  |.  E8 0070F4FF   call    0040458C
    79. 004BD58C  |.  8BD8          mov     ebx, eax                         ;  把长度值给EBX;
    80. 004BD58E  |.  83FB 03       cmp     ebx, 3                           ;  比较大于3么,够就跳;
    81. 004BD591  |.  7F 20         jg      short 004BD5B3
    82. 004BD593  |>  8D4D E4       /lea     ecx, dword ptr [ebp-1C]
    83. 004BD596  |.  8BC3          |mov     eax, ebx                        ;  EBX->EAX;
    84. 004BD598  |.  C1E0 02       |shl     eax, 2                          ;  EAX 向左移动两位,也就是乘于四;
    85. 004BD59B  |.  33D2          |xor     edx, edx
    86. 004BD59D  |.  E8 1EB5F4FF   |call    00408AC0
    87. 004BD5A2  |.  8B55 E4       |mov     edx, dword ptr [ebp-1C]
    88. 004BD5A5  |.  8D45 F8       |lea     eax, dword ptr [ebp-8]          ;  把EAX的地址给[EBP-8];
    89. 004BD5A8  |.  E8 E76FF4FF   |call    00404594
    90. 004BD5AD  |.  43            |inc     ebx
    91. 004BD5AE  |.  83FB 04       |cmp     ebx, 4
    92. 004BD5B1  |.^ 75 E0         \jnz     short 004BD593
    93. 004BD5B3  |>  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  从第五为开始取4位;"E616"
    94. 004BD5B6  |.  E8 D16FF4FF   call    0040458C
    95. 004BD5BB  |.  83F8 04       cmp     eax, 4                           ;  同上
    96. 004BD5BE  |.  7D 2F         jge     short 004BD5EF
    97. 004BD5C0  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
    98. 004BD5C3  |.  E8 C46FF4FF   call    0040458C
    99. 004BD5C8  |.  8BD8          mov     ebx, eax
    100. 004BD5CA  |.  83FB 03       cmp     ebx, 3
    101. 004BD5CD  |.  7F 20         jg      short 004BD5EF
    102. 004BD5CF  |>  8D4D E0       /lea     ecx, dword ptr [ebp-20]
    103. 004BD5D2  |.  8BC3          |mov     eax, ebx
    104. 004BD5D4  |.  C1E0 02       |shl     eax, 2
    105. 004BD5D7  |.  33D2          |xor     edx, edx
    106. 004BD5D9  |.  E8 E2B4F4FF   |call    00408AC0
    107. 004BD5DE  |.  8B55 E0       |mov     edx, dword ptr [ebp-20]
    108. 004BD5E1  |.  8D45 F4       |lea     eax, dword ptr [ebp-C]
    109. 004BD5E4  |.  E8 AB6FF4FF   |call    00404594
    110. 004BD5E9  |.  43            |inc     ebx
    111. 004BD5EA  |.  83FB 04       |cmp     ebx, 4
    112. 004BD5ED  |.^ 75 E0         \jnz     short 004BD5CF
    113. 004BD5EF  |>  8D45 F0       lea     eax, dword ptr [ebp-10]
    114. 004BD5F2  |.  BA 7CD64B00   mov     edx, 004BD67C                    ;  RMConv268d58k:固定字符;
    115. 004BD5F7  |.  E8 686DF4FF   call    00404364
    116. 004BD5FC  |.  8D45 DC       lea     eax, dword ptr [ebp-24]
    117. 004BD5FF  |.  50            push    eax
    118. 004BD600  |.  B9 04000000   mov     ecx, 4
    119. 004BD605  |.  BA 01000000   mov     edx, 1
    120. 004BD60A  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
    121. 004BD60D  |.  E8 DA71F4FF   call    004047EC
    122. 004BD612  |.  FF75 DC       push    dword ptr [ebp-24]               ;  取前4位:"RMCo"
    123. 004BD615  |.  68 94D64B00   push    004BD694                         ;  -:也是固定的;
    124. 004BD61A  |.  FF75 F8       push    dword ptr [ebp-8]                ;  第一次取的:"5797"
    125. 004BD61D  |.  8D45 D8       lea     eax, dword ptr [ebp-28]
    126. 004BD620  |.  50            push    eax
    127. 004BD621  |.  B9 05000000   mov     ecx, 5
    128. 004BD626  |.  BA 05000000   mov     edx, 5
    129. 004BD62B  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
    130. 004BD62E  |.  E8 B971F4FF   call    004047EC
    131. 004BD633  |.  FF75 D8       push    dword ptr [ebp-28]               ;  5位开始取5位:"nv268"
    132. 004BD636  |.  68 94D64B00   push    004BD694                         ;  -:同上;
    133. 004BD63B  |.  FF75 F4       push    dword ptr [ebp-C]                ;  二次取值:"E616"
    134. 004BD63E  |.  8BC7          mov     eax, edi                         ;  全部连接好发到EDI这个地址去;
    135. 004BD640  |.  BA 06000000   mov     edx, 6
    136. 004BD645  |.  E8 0270F4FF   call    0040464C
    137. 004BD64A  |.  33C0          xor     eax, eax
    138. 004BD64C  |.  5A            pop     edx
    139. 004BD64D  |.  59            pop     ecx
    140. 004BD64E  |.  59            pop     ecx
    141. 004BD64F  |.  64:8910       mov     dword ptr fs:[eax], edx
    142. 004BD652  |.  68 6CD64B00   push    004BD66C
    143. 004BD657  |>  8D45 D8       lea     eax, dword ptr [ebp-28]
    144. 004BD65A  |.  BA 0A000000   mov     edx, 0A
    145. 004BD65F  |.  E8 8C6CF4FF   call    004042F0
    146. 004BD664  \.  C3            retn
    147. 004BD665   .^ E9 C265F4FF   jmp     00403C2C
    148. 004BD66A   .^ EB EB         jmp     short 004BD657
    149. 004BD66C   .  5F            pop     edi
    150. 004BD66D   .  5E            pop     esi
    151. 004BD66E   .  5B            pop     ebx
    152. 004BD66F   .  8BE5          mov     esp, ebp
    153. 004BD671   .  5D            pop     ebp
    154. 004BD672   .  C3            retn
    复制代码
    --------------------------------------------------------------------------------

    【经验总结】
    1.把注册码转换成十六进制的ASCII字符;

    2.把得到的字符倒序;

    3.判断倒序后的字符长度够4位么,不够则取位数乘于4取十六进制的ASCII字符;

    4.判断倒序后的字符长度够8位么,不够则取位数乘于4取十六进制的ASCII字符;

    5.写算法注册机:细看汇编代码,然后用Delphi还原算法部分发现相识度高达80%;

    6.只是做学习用途,请勿做非法用途。如做任何非法用途后果自负;

    --------------------------------------------------------------------------------------------------------
    【版权声明】: 本文原创于飘云阁论坛, 转载请注明作者并保持文章的完整, 谢谢!

    [ 本帖最后由 as3852711 于 2009-3-29 23:24 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

     楼主| 发表于 2009-3-29 23:26:17 | 显示全部楼层
    Delphi 注册机源码:
    --------------------------------------------------------------------------------------------------------

    1. procedure TForm1.Button1Click(Sender: TObject);
    2. var
    3. s:string;
    4. code1:string;
    5. code2:string;
    6. gudin:string;
    7. bugou1:string;
    8. bugou2:string;
    9. i,x,y,z:integer;
    10. begin
    11.   s:=edit1.text;
    12.   gudin:='RMConv268d58k';   //固定值;
    13.   code1:='';
    14.   for i:=1 to length(s) do   //第一个循环取ASCII码值;
    15.   begin
    16.      code1:=code1+inttohex(Ord(s[i]),$2);
    17.   end;
    18.   for x:=length(code1) downto 1   do   //第二个循环倒序;
    19.   begin
    20.      code2:=code2 + code1[x];
    21.   end;
    22.   bugou1:=copy(code2,1,4);
    23.   if length(bugou1) < 4 then    //第一段代码不够长时执行的循环;
    24.   begin
    25.       for y:=length(bugou1)  to 3 do
    26.          bugou1:=bugou1 + inttohex(y * 4,$1);
    27.   end;
    28.   bugou2:=copy(code2,5,4);
    29.   if length(bugou2) < 4 then   //同上;
    30.   begin
    31.       for z:=length(bugou2)  to 3 do
    32.          bugou2:=bugou2 + inttohex(z * 4,$1);
    33.   end;
    34.   edit2.Text :=copy(gudin,1,4)+ '-' + bugou1 + copy(gudin,5,5) + '-' + bugou2;
    35. end;

    复制代码

    [ 本帖最后由 as3852711 于 2009-3-30 11:49 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2018-2-11 09:23
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2009-3-29 23:44:59 | 显示全部楼层
    过来学习一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-30 00:21:18 | 显示全部楼层
    /:001 /:001 /:001
    学习一下!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-30 08:46:42 | 显示全部楼层
    我也要认真学习~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-30 09:01:58 | 显示全部楼层
    又死了一个软件/:014
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-31 20:05:56 | 显示全部楼层
    下一个软件下来跟跟看,学习学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-31 22:05:25 | 显示全部楼层
    学习一下了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-4-1 09:58:32 | 显示全部楼层
    :loveliness:   一会我也看看
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-4-1 13:21:46 | 显示全部楼层
    学习了,不是冰糖葫芦的吧, 应该把lz拉到作业区看看/:017
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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