飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11659|回复: 33

[讨论] 【小游戏】简单的软件练手(9楼、15楼已给出算法分析)

[复制链接]

该用户从未签到

发表于 2008-9-10 15:37:49 | 显示全部楼层 |阅读模式
.

小日本的软件 官网早已关闭 无壳 明码比较的 让大家练练手

文件夹透明程序
下载:https://www.chinapyg.com/viewthread.php?tid=38267


游戏时间及要求:

今明两天时间,初级的追码,有时间兴趣可分析下算法。在会帖中给出分析即可,不需要重新开帖。

先放个简单的 回头再送些复杂点的 ~~

注意:邮箱请输入以下格式 论坛名称@PYG.COM

奖励:

跟帖给出符合自己邮箱的注册码 奖励 5PYB
跟帖给出算法分析的朋友 奖励 30~50PYB(既然都OD了 不如算法分析一下 ^_^ )
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-4 22:08
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2008-9-10 16:06:16 | 显示全部楼层
    bhcjl
    bhcjl@PYG.COM

    b5b9bmave1pq


    先来坐下.不懂算法,汗

    [ 本帖最后由 bhcjl 于 2008-9-10 16:24 编辑 ]

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-10 16:18:02 | 显示全部楼层
    只能说,先看看.....
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2022-3-21 08:52
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2008-9-10 16:35:41 | 显示全部楼层
    用户名:crystalsnail
    邮箱:crystalsnail@pyg.com
    密码:j6517u4eafjw
    123.jpg
    321.jpg

    [ 本帖最后由 crystalsnail 于 2008-9-11 20:41 编辑 ]

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 多谢您的参与!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-10 17:34:17 | 显示全部楼层
    /:001 /:001 /:001

    先贴组注册码占个位,稍后给出分析过程.....
    用户名:hflywolf
    邮箱:hflywolf@PYG.COM
    密码:dz0n4ka1wt5u

    注册表的关键地方
    [HKEY_CURRENT_USER\Software\KoaSoft\TransWindows]
    "DefaultFlags"=hex:13,00,00,00
    "UserName"="hflywolf"
    "Reg0"="hflywolf@pyg.com"
    "Reg1"="dz0n4ka1wt5u"

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-8-12 00:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-9-10 17:36:51 | 显示全部楼层
    帐号:小生我怕怕
    邮箱:4586631@PYG.COM
    SN:gadk541gjbc6

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-9-9 20:17
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2008-9-10 21:26:04 | 显示全部楼层
    用户名:cdygr
    邮箱:cdygr@pyg.com
    密码:xj3j52p2kz16
    注册成功!算法搞不来!

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-10 21:52:42 | 显示全部楼层
    用户名:孤漂江湖狼
      邮箱:孤漂江湖狼@PYG.COM
      注册码:yk911hkvppbf
      水平有限,算法就现不搞了,以后在搞吧

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-10 08:52
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-9-11 01:15:33 | 显示全部楼层
    姓名:nietsme
    电邮:nietsme@PYG.COM
    密码:bcagbpw7xr9u

    截个图

    截个图



    水平有限,搞了很久才搞到密码。
    从没搞过算法,就拿这个试试……先占个位

    终于搞出来点眉目

    以下为不完全算法分析:
    一,描述:
    此注册码跟姓名无关,是由E-mail地址计算得出,设Email为str,经过几次变换最终得到注册码ser,流程如下:
    1,str1=去除str中的'-'及'空'符号;
    //'空'符号包括空格、回车、换行和Tab,因为这里是在文本框中输入,所以只能有'-'和空格
    //因为有这步,所以在Email地址中可以随意添加'-'和空格。比如nietsme@gmail.com和n-i e--t -sme@--gmail.com是一样的

    9-11-2008 6-30-04 PM.gif 9-11-2008 7-11-29 PM.gif
    9-11-2008 7-20-06 PM.gif

    2,str2=将str1处理得到一个int64型值;  (此处为猜测,因为下面所用函数_ui64tow中传入的参数为int64型)
    3,str3=用_ui64tow()将str2转化为字串;
    4,str4=对字串str3前两位进行分析处理,得到str4
    5,ser=将str4中的'i''l''o'分别转化为'x''y''z',得到最终注册码ser;

    二,代码:
    用OD载入程序并运行,打开注册对话框输入相关信息,在OD命令行中输入bp GetDlgItemTextW下断,回到注册窗口点确定,程序断在
    7E424305 >  8BFF            mov     edi, edi
    取消断点
    F8几步后到达
    0040C838  |.  8D9424 240400>lea     edx, dword ptr [esp+424]
    往上几行找到此段代码开头0040C810  /$  81EC 1C080000 sub     esp, 81C
    下断,重新载入进行分析
    ====代码1====
    1. 0040C810  /$  81EC 1C080000 sub     esp, 81C
    2. 0040C816  |.  53            push    ebx
    3. 0040C817  |.  55            push    ebp
    4. 0040C818  |.  8B2D 20824100 mov     ebp, dword ptr [<&USER32.GetDlgI>;  USER32.GetDlgItemTextW
    5. 0040C81E  |.  68 00020000   push    200                              ; /Count = 200 (512.)
    6. 0040C823  |.  8D8424 280400>lea     eax, dword ptr [esp+428]         ; |
    7. 0040C82A  |.  50            push    eax                              ; |Buffer
    8. 0040C82B  |.  8BD9          mov     ebx, ecx                         ; |
    9. 0040C82D  |.  8B4B 0C       mov     ecx, dword ptr [ebx+C]           ; |
    10. 0040C830  |.  68 07040000   push    407                              ; |ControlID = 407 (1031.)
    11. 0040C835  |.  51            push    ecx                              ; |hWnd
    12. 0040C836  |.  FFD5          call    ebp                              ; \GetDlgItemTextW
    13. 0040C838  |.  8D9424 240400>lea     edx, dword ptr [esp+424]         ;  //取邮箱地址放入edx
    14. 0040C83F  |.  52            push    edx                              ; /s
    15. 0040C840  |.  FF15 44814100 call    dword ptr [<&MSVCRT.wcslen>]     ; \wcslen
    16. 0040C846  |.  83C4 04       add     esp, 4
    17. 0040C849  |.  83F8 04       cmp     eax, 4                           ;  //邮箱长度如果>=4则继续,否则跳出“电邮错误”的警告
    18. 0040C84C  |.  7D 1A         jge     short 0040C868
    19. 0040C84E  |.  68 D4070000   push    7D4
    20. 0040C853  |.  68 07040000   push    407
    21. 0040C858  |.  8BCB          mov     ecx, ebx
    22. 0040C85A  |.  E8 51FFFFFF   call    0040C7B0                         ;  //警告“电邮错误”
    23. 0040C85F  |.  5D            pop     ebp
    24. 0040C860  |.  5B            pop     ebx
    25. 0040C861  |.  81C4 1C080000 add     esp, 81C
    26. 0040C867  |.  C3            retn
    27. 0040C868  |>  56            push    esi
    28. 0040C869  |.  57            push    edi
    29. 0040C86A  |.  8D4424 10     lea     eax, dword ptr [esp+10]
    30. 0040C86E  |.  50            push    eax
    31. 0040C86F  |.  8D8C24 300400>lea     ecx, dword ptr [esp+430]
    32. 0040C876  |.  51            push    ecx
    33. 0040C877  |.  E8 849BFFFF   call    00406400                         ;//对邮箱串进行处理得出注册码,见代码2
    34. 0040C87C  |.  8B43 0C       mov     eax, dword ptr [ebx+C]
    35. 0040C87F  |.  83C4 08       add     esp, 8
    36. 0040C882  |.  68 00020000   push    200
    37. 0040C887  |.  8D5424 30     lea     edx, dword ptr [esp+30]
    38. 0040C88B  |.  52            push    edx
    39. 0040C88C  |.  68 F6030000   push    3F6
    40. 0040C891  |.  50            push    eax
    41. 0040C892  |.  FFD5          call    ebp
    42. 0040C894  |.  66:837C24 2C >cmp     word ptr [esp+2C], 0             ;  //以下对输入的注册码进行处理
    43. 0040C89A  |.  8D7424 2C     lea     esi, dword ptr [esp+2C]
    44. 0040C89E  |.  8D7C24 2C     lea     edi, dword ptr [esp+2C]
    45. 0040C8A2  |.  74 48         je      short 0040C8EC
    46. 0040C8A4  |.  66:833E 00    cmp     word ptr [esi], 0
    47. 0040C8A8  |.  8B2D 88814100 mov     ebp, dword ptr [<&MSVCRT.iswspac>;  msvcrt.iswspace
    48. 0040C8AE  |.  74 36         je      short 0040C8E6
    49. 0040C8B0  |>  33C0          /xor     eax, eax
    50. 0040C8B2  |.  66:8B06       |mov     ax, word ptr [esi]
    51. 0040C8B5  |.  66:3D 2D00    |cmp     ax, 2D                          ;  //'-'
    52. 0040C8B9  |.  74 0A         |je      short 0040C8C5
    53. 0040C8BB  |.  50            |push    eax
    54. 0040C8BC  |.  FFD5          |call    ebp                             ;  //'空'字符
    55. 0040C8BE  |.  83C4 04       |add     esp, 4
    56. 0040C8C1  |.  85C0          |test    eax, eax
    57. 0040C8C3  |.  74 0B         |je      short 0040C8D0
    58. 0040C8C5  |>  83C6 02       |add     esi, 2
    59. 0040C8C8  |.  66:833E 00    |cmp     word ptr [esi], 0
    60. 0040C8CC  |.  74 18         |je      short 0040C8E6
    61. 0040C8CE  |.^ EB E0         |jmp     short 0040C8B0
    62. 0040C8D0  |>  85F6          |test    esi, esi
    63. 0040C8D2  |.  74 12         |je      short 0040C8E6
    64. 0040C8D4  |.  66:8B0E       |mov     cx, word ptr [esi]
    65. 0040C8D7  |.  66:890F       |mov     word ptr [edi], cx
    66. 0040C8DA  |.  83C6 02       |add     esi, 2
    67. 0040C8DD  |.  83C7 02       |add     edi, 2
    68. 0040C8E0  |.  66:833E 00    |cmp     word ptr [esi], 0
    69. 0040C8E4  |.^ 75 CA         \jnz     short 0040C8B0
    70. 0040C8E6  |>  8B2D 20824100 mov     ebp, dword ptr [<&USER32.GetDlgI>;  USER32.GetDlgItemTextW
    71. 0040C8EC  |>  8D5424 10     lea     edx, dword ptr [esp+10]          ;  //以下为真假注册码比较
    72. 0040C8F0  |.  52            push    edx                              ; /String2
    73. 0040C8F1  |.  8D4424 30     lea     eax, dword ptr [esp+30]          ; |
    74. 0040C8F5  |.  50            push    eax                              ; |String1
    75. 0040C8F6  |.  66:C707 0000  mov     word ptr [edi], 0                ; |
    76. 0040C8FB  |.  FF15 E0804100 call    dword ptr [<&KERNEL32.lstrcmpiW>>; \lstrcmpiW
    77. 0040C901  |.  85C0          test    eax, eax
    78. 0040C903  |.  5F            pop     edi
    79. 0040C904  |.  5E            pop     esi
    80. 0040C905  |.  74 1A         je      short 0040C921                  ;//注册码为真则跳至0040C921
    81. 0040C907  |.  68 D2070000   push    7D2
    82. 0040C90C  |.  68 F6030000   push    3F6
    83. 0040C911  |.  8BCB          mov     ecx, ebx
    84. 0040C913  |.  E8 98FEFFFF   call    0040C7B0                         ;//警告“密码错误”
    85. 0040C918  |.  5D            pop     ebp
    86. 0040C919  |.  5B            pop     ebx
    87. 0040C91A  |.  81C4 1C080000 add     esp, 81C
    88. 0040C920  |.  C3            retn
    89. 0040C921  |>  8B53 0C       mov     edx, dword ptr [ebx+C]           ;//注册成功
    90. 0040C924  |.  68 00020000   push    200
    91. 0040C929  |.  8D4C24 28     lea     ecx, dword ptr [esp+28]
    92. 0040C92D  |.  51            push    ecx
    93. 0040C92E  |.  68 EA030000   push    3EA
    94. 0040C933  |.  52            push    edx
    复制代码
    ====代码2====
    //注册码算法
    1. 00406400  /$  55            push    ebp                              ;  USER32.GetDlgItemTextW
    2. 00406401  |.  8BEC          mov     ebp, esp
    3. 00406403  |.  83EC 50       sub     esp, 50
    4. 00406406  |.  53            push    ebx
    5. 00406407  |.  56            push    esi
    6. 00406408  |.  57            push    edi
    7. 00406409  |.  8B7D 08       mov     edi, dword ptr [ebp+8]
    8. 0040640C  |.  57            push    edi                              ; /s
    9. 0040640D  |.  FF15 44814100 call    dword ptr [<&MSVCRT.wcslen>]     ; \wcslen
    10. 00406413  |.  8BF0          mov     esi, eax
    11. 00406415  |.  83C4 04       add     esp, 4
    12. 00406418  |.  46            inc     esi
    13. 00406419  |.  8BC6          mov     eax, esi
    14. 0040641B  |.  83C0 03       add     eax, 3
    15. 0040641E  |.  83E0 FC       and     eax, FFFFFFFC
    16. 00406421  |.  E8 9AFD0000   call    004161C0
    17. 00406426  |.  8BDC          mov     ebx, esp
    18. 00406428  |.  6A 00         push    0                                ; /pDefaultCharUsed = NULL
    19. 0040642A  |.  6A 00         push    0                                ; |pDefaultChar = NULL
    20. 0040642C  |.  56            push    esi                              ; |MultiByteCount
    21. 0040642D  |.  53            push    ebx                              ; |MultiByteStr
    22. 0040642E  |.  6A FF         push    -1                               ; |WideCharCount = FFFFFFFF (-1.)
    23. 00406430  |.  57            push    edi                              ; |WideCharStr
    24. 00406431  |.  6A 00         push    0                                ; |Options = 0
    25. 00406433  |.  6A 00         push    0                                ; |CodePage = CP_ACP
    26. 00406435  |.  FF15 80804100 call    dword ptr [<&KERNEL32.WideCharTo>; \WideCharToMultiByte
    27. 0040643B  |.  803B 00       cmp     byte ptr [ebx], 0
    28. 0040643E  |.  8BF3          mov     esi, ebx
    29. 00406440  |.  8BFB          mov     edi, ebx
    30. 00406442  |.  74 37         je      short 0040647B
    31. 00406444  |.  803E 00       cmp     byte ptr [esi], 0
    32. 00406447  |.  74 32         je      short 0040647B
    33. 00406449  |>  8A06          /mov     al, byte ptr [esi]              ;  //挨个取邮箱字符
    34. 0040644B  |.  3C 2D         |cmp     al, 2D                          ;  //如果是'-'则跳过取下一字符
    35. 0040644D  |.  74 11         |je      short 00406460
    36. 0040644F  |.  0FBEC0        |movsx   eax, al
    37. 00406452  |.  50            |push    eax
    38. 00406453  |.  FF15 6C814100 |call    dword ptr [<&MSVCRT.isspace>]   ; //判断如果是'空'字符则跳过取下一字符
    39. 00406459  |.  83C4 04       |add     esp, 4
    40. 0040645C  |.  85C0          |test    eax, eax
    41. 0040645E  |.  74 0A         |je      short 0040646A
    42. 00406460  |>  8A46 01       |mov     al, byte ptr [esi+1]
    43. 00406463  |.  46            |inc     esi
    44. 00406464  |.  84C0          |test    al, al                          ;  //邮箱字串是否结束
    45. 00406466  |.  74 13         |je      short 0040647B
    46. 00406468  |.^ EB DF         |jmp     short 00406449
    47. 0040646A  |>  85F6          |test    esi, esi                        ;  //是否取完
    48. 0040646C  |.  74 0D         |je      short 0040647B
    49. 0040646E  |.  8A0E          |mov     cl, byte ptr [esi]
    50. 00406470  |.  880F          |mov     byte ptr [edi], cl
    51. 00406472  |.  8A46 01       |mov     al, byte ptr [esi+1]
    52. 00406475  |.  47            |inc     edi                             ;  //指向下一字符
    53. 00406476  |.  46            |inc     esi
    54. 00406477  |.  84C0          |test    al, al                          ;  //邮箱字串是否结束
    55. 00406479  |.^ 75 CE         \jnz     short 00406449
    56. 0040647B  |>  53            push    ebx
    57. 0040647C  |.  C607 00       mov     byte ptr [edi], 0                ; |//添加字符串结束标记'/0'
    58. 0040647F  |.  FF15 68814100 call    dword ptr [<&MSVCRT._strlwr>]    ; \_strlwr
    59. 00406485  |.  83C9 FF       or      ecx, FFFFFFFF
    60. 00406488  |.  33C0          xor     eax, eax
    61. 0040648A  |.  8BFB          mov     edi, ebx
    62. 0040648C  |.  F2:AE         repne   scas byte ptr es:[edi]
    63. 0040648E  |.  F7D1          not     ecx
    64. 00406490  |.  49            dec     ecx
    65. 00406491  |.  51            push    ecx
    66. 00406492  |.  53            push    ebx
    67. 00406493  |.  E8 58FCFFFF   call    004060F0                         //关键Call,太菜我看不太懂~
    68. 00406498  |.  8BDA          mov     ebx, edx
    69. 0040649A  |.  6A 21         push    21
    70. 0040649C  |.  8D55 B0       lea     edx, dword ptr [ebp-50]
    71. 0040649F  |.  52            push    edx
    72. 004064A0  |.  8BF8          mov     edi, eax
    73. 004064A2  |.  53            push    ebx
    74. 004064A3  |.  57            push    edi
    75. 004064A4  |.  FF15 64814100 call    dword ptr [<&MSVCRT._ui64tow>]   ;  //关键Call 调用_ui64tow
    76. 004064AA  |.  8D45 B0       lea     eax, dword ptr [ebp-50]
    77. 004064AD  |.  50            push    eax
    78. 004064AE  |.  E8 6D000000   call    00406520                         ;  //关键Call,对字串前两位进行分析处理,见代码3
    79. 004064B3  |.  33D2          xor     edx, edx
    80. 004064B5  |.  66:8B10       mov     dx, word ptr [eax]
    81. 004064B8  |.  83C4 20       add     esp, 20
    82. 004064BB  |.  66:85D2       test    dx, dx
    83. 004064BE  |.  8BF0          mov     esi, eax
    84. 004064C0  |.  74 39         je      short 004064FB                   ;  //以下循环将注册码中的'i''l''o'分别转化为'x''y''z'
    85. 004064C2  |>  8BCA          /mov     ecx, edx
    86. 004064C4  |.  81E1 FFFF0000 |and     ecx, 0FFFF
    87. 004064CA  |.  83F9 69       |cmp     ecx, 69                         ;  //如果是'i',则变为'x'
    88. 004064CD  |.  74 18         |je      short 004064E7
    89. 004064CF  |.  83F9 6C       |cmp     ecx, 6C                         ;  //如果是'l',则变为'y'
    90. 004064D2  |.  74 0C         |je      short 004064E0
    91. 004064D4  |.  83F9 6F       |cmp     ecx, 6F                         ;  //如果是'o',则变为'z'
    92. 004064D7  |.  75 13         |jnz     short 004064EC
    93. 004064D9  |.  BA 7A000000   |mov     edx, 7A                         ;  变为'z'
    94. 004064DE  |.  EB 0C         |jmp     short 004064EC
    95. 004064E0  |>  BA 79000000   |mov     edx, 79                         ;  变为'y'
    96. 004064E5  |.  EB 05         |jmp     short 004064EC
    97. 004064E7  |>  BA 78000000   |mov     edx, 78                         ;  变为'x'
    98. 004064EC  |>  66:8916       |mov     word ptr [esi], dx              ;  Default case of switch 004064CA
    99. 004064EF  |.  66:8B56 02    |mov     dx, word ptr [esi+2]
    100. 004064F3  |.  83C6 02       |add     esi, 2
    101. 004064F6  |.  66:85D2       |test    dx, dx
    102. 004064F9  |.^ 75 C7         \jnz     short 004064C2
    103. 004064FB  |>  8B4D 0C       mov     ecx, dword ptr [ebp+C]
    104. 004064FE  |.  50            push    eax                              ; /src
    105. 004064FF  |.  51            push    ecx                              ; |dest
    106. 00406500  |.  FF15 60814100 call    dword ptr [<&MSVCRT.wcscpy>]     ; \wcscpy
    107. 00406506  |.  83C4 08       add     esp, 8
    108. 00406509  |.  8D65 A4       lea     esp, dword ptr [ebp-5C]
    109. 0040650C  |.  8BC7          mov     eax, edi
    110. 0040650E  |.  5F            pop     edi
    111. 0040650F  |.  5E            pop     esi
    112. 00406510  |.  8BD3          mov     edx, ebx
    113. 00406512  |.  5B            pop     ebx
    114. 00406513  |.  8BE5          mov     esp, ebp
    115. 00406515  |.  5D            pop     ebp
    116. 00406516  \.  C3            retn
    复制代码
    ====代码3====
    //关键Call,对字串前两位分析进行处理
    1. 00406520  /$  56            push    esi
    2. 00406521  |.  8B7424 08     mov     esi, dword ptr [esp+8]
    3. 00406525  |.  66:8B06       mov     ax, word ptr [esi]
    4. 00406528  |.  66:3D 3000    cmp     ax, 30                           ;  //数字
    5. 0040652C  |.  72 10         jb      short 0040653E
    6. 0040652E  |.  66:3D 3900    cmp     ax, 39
    7. 00406532  |.  77 0A         ja      short 0040653E
    8. 00406534  |.  25 FFFF0000   and     eax, 0FFFF
    9. 00406539  |.  83E8 30       sub     eax, 30
    10. 0040653C  |.  EB 12         jmp     short 00406550
    11. 0040653E  |>  50            push    eax                              ; /w
    12. 0040653F  |.  FF15 70814100 call    dword ptr [<&MSVCRT.towlower>]   ; \//转化为小写
    13. 00406545  |.  83C4 04       add     esp, 4
    14. 00406548  |.  25 FFFF0000   and     eax, 0FFFF
    15. 0040654D  |.  83E8 57       sub     eax, 57
    16. 00406550  |>  83F8 0B       cmp     eax, 0B
    17. 00406553  |.  7F 1D         jg      short 00406572
    18. 00406555  |.  66:8B56 02    mov     dx, word ptr [esi+2]             ;  //取下一字符
    19. 00406559  |.  66:83FA 30    cmp     dx, 30                           ;  //是否为数字
    20. 0040655D  |.  8D4E 02       lea     ecx, dword ptr [esi+2]
    21. 00406560  |.  72 0C         jb      short 0040656E
    22. 00406562  |.  66:83FA 39    cmp     dx, 39
    23. 00406566  |.  77 06         ja      short 0040656E
    24. 00406568  |.  83C0 61       add     eax, 61
    25. 0040656B  |.  66:8901       mov     word ptr [ecx], ax
    26. 0040656E  |>  8BC1          mov     eax, ecx
    27. 00406570  |.  5E            pop     esi
    28. 00406571  |.  C3            retn
    29. 00406572  |>  8BC6          mov     eax, esi
    30. 00406574  |.  5E            pop     esi
    31. 00406575  \.  C3            retn
    复制代码
    代码3作用为
        if(str3首位为字母)
        {
           str3[0]变小写;
            str4=str3;
        }
        if(str3首位为数字,二位为字母)
            str4=str3去首位数字;
        if(str3前两位都为数字)
        {
            str4[0]=str3[0]+0x31;    //去掉第二位数字并将第一位数字ascii码加上0x31做为str4首位,
            str4[n]=str3[n+1];       //其余copy。
        }


    三,总结:
    由于是第一次跟算法,加上有些方面知识不够所以未能给出完全算法,流程基本是这样的,哪处如有错误请大侠们不吝指点。
    以前从来不敢跟算法,当然跟基础差有关,更是因为自己的畏惧,一到算法那块就想,我是菜鸟我不行,以后牛B了再搞。这就给自己加了道心理坎,实在是不利于对加解密的学习。
    这次花了很长时间做这个,虽然没有完成,但是学到了不少相关的知识,更学到了一种放弃前再努力一下的精神,愿与大家共勉!

    加油了!

    [ 本帖最后由 nietsme 于 2008-9-20 23:21 编辑 ]

    评分

    参与人数 1威望 +80 飘云币 +200 收起 理由
    Nisy + 80 + 200 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-11 01:47:35 | 显示全部楼层
    "UserName"="koko"
    "Reg0"="qplchen@163.com"
    "Reg1"="qppqh90pmpwt"

    ----------------------------------------
    对算法概念还比较模糊/:010

    评分

    参与人数 1飘云币 +20 收起 理由
    Nisy + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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