飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 10139|回复: 17

[原创] 石子店铺帐本(记账软件)算法分析

  [复制链接]
  • TA的每日心情
    开心
    2015-8-2 16:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-9-17 21:34:34 | 显示全部楼层 |阅读模式
    本帖最后由 F8LEFT 于 2014-9-18 23:33 编辑

    【破文标题】石子店铺帐本(记账软件)算法分析
    【破文作者】F8LEFT
    【破文邮箱】[email protected]
    【作者主页】就快有的了
    破解工具】OllyDbg
    【破解平台】WinXp32
    【软件名称】石子店铺帐本
    【软件大小】17.6
    【来源地址】自行搜索下载
    【保护方式】注册码
    【软件简介】
       这是一款小型店铺记帐软件。功能简单、实用!只需要您动动鼠标,敲几个数字就可以轻松完成账务的录入、查询和统计。
        适用于有进销存需求的店铺记帐。
    主要功能:
        1、进销记录:对进销商品的数量、金额进行添加、修改、删除、查询。
        2、库存余量:对同一商品在某时间段内的进货数量、销售数量以及库存量进行统计。
        3、盈利情况:对同一商品在某时间段内的销售金额、进货金额以及盈利金额进行统计。
        4、图表分析:对某时间段内所有商品的销售金额,按月或年以直方图或曲线图的方式直观的显示出来。
        5、通讯录:可记录联系人的详尽联系方式。
    ~8WF]0N2J97H8Z2NAWHTFNL.jpg

    ----------------------------------------------
    【破解声明】    仅供学习与交流之用,请不要用于商业用途。
    ----------------------------------------------

    【破解过程】
        该软件失败有MessageBoxA的错误提示,所以直接从bp MessageBoxA就可以插入了。

    1. 00410DC0   .  6A FF         PUSH    -0x1                                            ;  注册开始
    2. 00410DC2   .  68 28784300   PUSH    石子店铺.00437828                               ;  SE 处理程
    3. 00410DC7   .  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
    4. 00410DCD   .  50            PUSH    EAX
    5. ......中间省略取注册框信息的代码。
    6. 00410EBB   .  51            PUSH    ECX                                                 ;  框4
    7. 00410EBC   .  8B0D DC214500 MOV     ECX, DWORD PTR DS:[0x4521DC]
    8. 00410EC2   .  52            PUSH    EDX                                                 ;  框3
    9. 00410EC3   .  50            PUSH    EAX                                                 ;  框2
    10. 00410EC4   .  51            PUSH    ECX                                                 ;  框1
    11. 00410EC5   .  8D5424 28     LEA     EDX, DWORD PTR SS:[ESP+0x28]
    12. 00410EC9   .  68 68EC4400   PUSH    石子店铺.0044EC68                                       ;  ASCII "%s%s%s%s"
    13. 00410ECE   .  52            PUSH    EDX                                                 ;  Buffer
    14. 00410ECF   .  C74424 68 010>MOV     DWORD PTR SS:[ESP+0x68], 0x1
    15. 00410ED7   .  E8 B22C0200   CALL    <JMP.&MFC42.#CString::Format_2818>                  ;  链接注册码
    16. 00410EDC   .  83C4 14       ADD     ESP, 0x14
    17. 00410EDF   .  8D4424 1C     LEA     EAX, DWORD PTR SS:[ESP+0x1C]
    18. 00410EE3   .  8BCC          MOV     ECX, ESP
    19. 00410EE5   .  896424 20     MOV     DWORD PTR SS:[ESP+0x20], ESP
    20. 00410EE9   .  50            PUSH    EAX                                                 ;  CString Code
    21. 00410EEA   .  E8 AB2C0200   CALL    <JMP.&MFC42.#CString::CString_535>
    22. 00410EEF   .  E8 ACF6FFFF   CALL    <石子店铺.Verify_Key>                                   ;  验证注册码的正确性
    23. 00410EF4   .  83C4 04       ADD     ESP, 0x4
    24. 00410EF7   .  85C0          TEST    EAX, EAX
    25. 00410EF9      0F84 B5010000 JE      石子店铺.004110B4                                       ;  判断
    复制代码




         非常典型的注册判断地址,跟进关键的call Verify_Key去看
    1. 004105A0 >    6A FF         PUSH    -0x1
    2. 004105A2      68 EF764300   PUSH    石子店铺.004376EF                                       ;  入口地址
    3. 004105A7  |.  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
    4. 004105AD  |.  50            PUSH    EAX
    5. 004105AE  |.  64:8925 00000>MOV     DWORD PTR FS:[0], ESP
    6. 004105B5  |.  81EC 4C030000 SUB     ESP, 0x34C
    7. 004105BB  |.  56            PUSH    ESI
    8. 004105BC  |.  57            PUSH    EDI
    9. 004105BD  |.  8D4C24 08     LEA     ECX, DWORD PTR SS:[ESP+0x8]
    10. 004105C1  |.  C78424 5C0300>MOV     DWORD PTR SS:[ESP+0x35C], 0x0
    11. 004105CC  |.  E8 33350200   CALL    <JMP.&MFC42.#CString::CString_540>                  ;  new CString
    12. 004105D1  |.  8D8C24 5C0100>LEA     ECX, DWORD PTR SS:[ESP+0x15C]
    13. 004105D8  |.  C68424 5C0300>MOV     BYTE PTR SS:[ESP+0x35C], 0x1
    14. 004105E0  |.  E8 2B47FFFF   CALL    <石子店铺.C_InitBuf>                                    ;  初始化存放大数的buff(1)
    15. 004105E5  |.  8D8C24 B40000>LEA     ECX, DWORD PTR SS:[ESP+0xB4]
    16. 004105EC  |.  C68424 5C0300>MOV     BYTE PTR SS:[ESP+0x35C], 0x2
    17. 004105F4  |.  E8 1747FFFF   CALL    <石子店铺.C_InitBuf>                                    ;  初始化Buffer(2)
    18. 004105F9  |.  8D4C24 0C     LEA     ECX, DWORD PTR SS:[ESP+0xC]
    19. 004105FD  |.  C68424 5C0300>MOV     BYTE PTR SS:[ESP+0x35C], 0x3
    20. 00410605  |.  E8 0647FFFF   CALL    <石子店铺.C_InitBuf>                                    ;  初始化Buffer(3)
    21. 0041060A  |.  8D8C24 040200>LEA     ECX, DWORD PTR SS:[ESP+0x204]
    22. 00410611  |.  C68424 5C0300>MOV     BYTE PTR SS:[ESP+0x35C], 0x4
    23. 00410619  |.  E8 F246FFFF   CALL    <石子店铺.C_InitBuf>                                    ;  初始化Buffer(4)
    24. 0041061E  |.  8D8424 640300>LEA     EAX, DWORD PTR SS:[ESP+0x364]
    25. 00410625  |.  6A 0A         PUSH    0xA
    26. 00410627  |.  50            PUSH    EAX                                                 ;  push Pass
    27. 00410628  |.  8D4C24 14     LEA     ECX, DWORD PTR SS:[ESP+0x14]                        ;  存放大数的 Buffer(0)
    28. 0041062C  |.  C68424 640300>MOV     BYTE PTR SS:[ESP+0x364], 0x5
    29. 00410634  |.  E8 0753FFFF   CALL    <石子店铺.DecToHex>                                     ;  注册码 十进制转十六进制
    30. 00410639  |.  68 E8EB4400   PUSH    石子店铺.0044EBE8                                       ;  ASCII "1433"  循环次数
    31. 0041063E  |.  8D4C24 0C     LEA     ECX, DWORD PTR SS:[ESP+0xC]
    32. 00410642  |.  68 34E94400   PUSH    石子店铺.0044E934                                       ;  ASCII "%s"
    33. 00410647  |.  51            PUSH    ECX
    34. 00410648  |.  E8 41350200   CALL    <JMP.&MFC42.#CString::Format_2818>                  ;  format 1433
    35. 0041064D  |.  83C4 0C       ADD     ESP, 0xC
    36. 00410650  |.  8D5424 08     LEA     EDX, DWORD PTR SS:[ESP+0x8]                         ;  Str 1433
    37. 00410654  |.  8D8C24 5C0100>LEA     ECX, DWORD PTR SS:[ESP+0x15C]                       ;  存放大数的 Buffer(1)
    38. 0041065B  |.  6A 0A         PUSH    0xA
    39. 0041065D  |.  52            PUSH    EDX
    40. 0041065E  |.  E8 DD52FFFF   CALL    <石子店铺.DecToHex>                                     ;  1433 转16进制
    41. 00410663  |.  68 C4EB4400   PUSH    石子店铺.0044EBC4                                       ;  ASCII "14739049012400727199316597861741" StaticKey
    42. 00410668  |.  8D4424 0C     LEA     EAX, DWORD PTR SS:[ESP+0xC]
    43. 0041066C  |.  68 34E94400   PUSH    石子店铺.0044E934                                       ;  ASCII "%s"
    44. 00410671  |.  50            PUSH    EAX
    45. 00410672  |.  E8 17350200   CALL    <JMP.&MFC42.#CString::Format_2818>
    46. 00410677  |.  83C4 0C       ADD     ESP, 0xC
    47. 0041067A  |.  8D4C24 08     LEA     ECX, DWORD PTR SS:[ESP+0x8]
    48. 0041067E  |.  6A 0A         PUSH    0xA
    49. 00410680  |.  51            PUSH    ECX
    50. 00410681  |.  8D8C24 BC0000>LEA     ECX, DWORD PTR SS:[ESP+0xBC]                        ;  存放大数的 Buffer(2)
    51. 00410688  |.  E8 B352FFFF   CALL    <石子店铺.DecToHex>                                     ;  147。。。转16进制
    52. 0041068D  |.  8D9424 B40000>LEA     EDX, DWORD PTR SS:[ESP+0xB4]
    53. 00410694  |.  8D8424 5C0100>LEA     EAX, DWORD PTR SS:[ESP+0x15C]
    54. 0041069B  |.  52            PUSH    EDX                                                 ;  Hex(14739049012400727199316597861741)
    55. 0041069C  |.  8D8C24 B00200>LEA     ECX, DWORD PTR SS:[ESP+0x2B0]
    56. 004106A3  |.  50            PUSH    EAX                                                 ;  Hex(1433)
    57. 004106A4  |.  51            PUSH    ECX                                                 ;  ??14
    58. 004106A5  |.  8D4C24 18     LEA     ECX, DWORD PTR SS:[ESP+0x18]                        ;  Hex(Pass)
    59. 004106A9  |.  E8 0254FFFF   CALL    <石子店铺.End_Data>                                     ;  计算出最终结果
    60. 004106AE  |.  B9 2A000000   MOV     ECX, 0x2A
    61. 004106B3  |.  8BF0          MOV     ESI, EAX
    62. 004106B5  |.  8DBC24 040200>LEA     EDI, DWORD PTR SS:[ESP+0x204]
    63. 004106BC  |.  F3:A5         REP     MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]         ;  复制数据
    64. 004106BE  |.  8D8C24 AC0200>LEA     ECX, DWORD PTR SS:[ESP+0x2AC]
    65. 004106C5  |.  E8 666D0000   CALL    <石子店铺.nop>
    66. 004106CA  |.  8D5424 08     LEA     EDX, DWORD PTR SS:[ESP+0x8]
    67. 004106CE  |.  6A 0A         PUSH    0xA
    68. 004106D0  |.  52            PUSH    EDX
    69. 004106D1  |.  8D8C24 0C0200>LEA     ECX, DWORD PTR SS:[ESP+0x20C]
    70. 004106D8  |.  E8 F352FFFF   CALL    <石子店铺.HexToDec>                                     ;  把上面计算的结果翻译为10进制字符串
    71. 004106DD  |.  A1 CC214500   MOV     EAX, DWORD PTR DS:[0x4521CC]
    72. 004106E2  |.  50            PUSH    EAX                                                 ; /s2 => "70799146"
    73. 004106E3  |.  8B4424 0C     MOV     EAX, DWORD PTR SS:[ESP+0xC]                         ; |
    74. 004106E7  |.  50            PUSH    EAX                                                 ; |s1
    75. 004106E8  |.  FF15 C4D64300 CALL    NEAR DWORD PTR DS:[<&MSVCRT._mbscmp>]               ; \与 70799146 比较 (软件编号)
    76. 004106EE  |.  83C4 08       ADD     ESP, 0x8
    77. 004106F1  |.  C68424 5C0300>MOV     BYTE PTR SS:[ESP+0x35C], 0x4
    78. 004106F9  |.  85C0          TEST    EAX, EAX
    79. 004106FB  |.  5F            POP     EDI
    80. 004106FC  |.  5E            POP     ESI
    81. 004106FD  |.  8D8C24 FC0100>LEA     ECX, DWORD PTR SS:[ESP+0x1FC]
    82. 00410704  |.  0F85 80000000 JNZ     石子店铺.0041078A
    复制代码




        一层层深入,这里它进行了3个大数的初始化,分别是我输入的Pass,1433,以及 14739049012400727199316597861741。然后就进入下一轮的计算。计算得到的结果再与 70799146 进行比较,相等的话就是注册成功。

        下面给出End_Data的主要计算代码:
    1. 00405B3E  |> /8B4424 14     /MOV     EAX, DWORD PTR SS:[ESP+0x14]
    2. 00405B42  |. |3BC3          |CMP     EAX, EBX
    3. 00405B44  |. |8B4424 18     |MOV     EAX, DWORD PTR SS:[ESP+0x18]                       ;  Hex(1433) LoopTime
    4. 00405B48  |. |75 08         |JNZ     SHORT 石子店铺.00405B52
    5. 00405B4A  |. |3BC7          |CMP     EAX, EDI
    6. 00405B4C  |. |0F84 29010000 |JE      石子店铺.00405C7B
    7. 00405B52  |> |84C3          |TEST    BL, AL                                             ;  检查LoopTime是否为奇数
    8. 00405B54  |. |0F84 90000000 |JE      石子店铺.00405BEA
    9. 00405B5A  |. |8D8C24 080200>|LEA     ECX, DWORD PTR SS:[ESP+0x208]
    10. 00405B61  |. |53            |PUSH    EBX
    11. 00405B62  |. |51            |PUSH    ECX
    12. 00405B63  |. |8D4C24 18     |LEA     ECX, DWORD PTR SS:[ESP+0x18]
    13. 00405B67  |. |E8 54F6FFFF   |CALL    <石子店铺.BigNum::-->                                  ;   --->  LoopTime--
    14. 00405B6C  |. |50            |PUSH    EAX
    15. 00405B6D  |. |8D4C24 14     |LEA     ECX, DWORD PTR SS:[ESP+0x14]
    16. 00405B71  |. |E8 0AF2FFFF   |CALL    <石子店铺.BufCpy>
    17. 00405B76  |. |8D8C24 080200>|LEA     ECX, DWORD PTR SS:[ESP+0x208]
    18. 00405B7D  |. |E8 AE180100   |CALL    <石子店铺.nop>
    19. 00405B82  |. |8D9424 B80000>|LEA     EDX, DWORD PTR SS:[ESP+0xB8]
    20. 00405B89  |. |8D8424 580300>|LEA     EAX, DWORD PTR SS:[ESP+0x358]
    21. 00405B90  |. |52            |PUSH    EDX                                                ;  Hex(Pass)
    22. 00405B91  |. |50            |PUSH    EAX                                                ;  ResultBuf
    23. 00405B92  |. |8D8C24 680100>|LEA     ECX, DWORD PTR SS:[ESP+0x168]                      ;  Hex(Result)
    24. 00405B99  |. |E8 42F7FFFF   |CALL    <石子店铺.BigNum::*>                                   ;   --->  Result1 *= Pass
    25. 00405B9E  |. |50            |PUSH    EAX                                                ;  Hex(Result)
    26. 00405B9F  |. |8D8C24 640100>|LEA     ECX, DWORD PTR SS:[ESP+0x164]
    27. 00405BA6  |. |E8 D5F1FFFF   |CALL    <石子店铺.BufCpy>
    28. 00405BAB  |. |8D8C24 580300>|LEA     ECX, DWORD PTR SS:[ESP+0x358]
    29. 00405BB2  |. |E8 79180100   |CALL    <石子店铺.nop>
    30. 00405BB7  |. |8D8C24 A80400>|LEA     ECX, DWORD PTR SS:[ESP+0x4A8]
    31. 00405BBE  |. |56            |PUSH    ESI                                                ;  Hex(14739049012400727199316597861741)
    32. 00405BBF  |. |51            |PUSH    ECX                                                ;  ResultBuf
    33. 00405BC0  |. |8D8C24 680100>|LEA     ECX, DWORD PTR SS:[ESP+0x168]                      ;  Hex(Result)
    34. 00405BC7  |. |E8 C4FAFFFF   |CALL    <石子店铺.BigNum::%>                                   ;    ---》 Result %= StaticKey
    35. 00405BCC  |. |50            |PUSH    EAX
    36. 00405BCD  |. |8D8C24 640100>|LEA     ECX, DWORD PTR SS:[ESP+0x164]
    37. 00405BD4  |. |E8 A7F1FFFF   |CALL    <石子店铺.BufCpy>
    38. 00405BD9  |. |8D8C24 A80400>|LEA     ECX, DWORD PTR SS:[ESP+0x4A8]
    39. 00405BE0  |. |E8 4B180100   |CALL    <石子店铺.nop>
    40. 00405BE5  |.^ E9 54FFFFFF   |JMP     石子店铺.00405B3E
    41. 00405BEA  |> |8D9424 B00200>|LEA     EDX, DWORD PTR SS:[ESP+0x2B0]
    42. 00405BF1  |. |6A 02         |PUSH    0x2                                                ;  2
    43. 00405BF3  |. |52            |PUSH    EDX                                                ;  ResultBuf
    44. 00405BF4  |. |8D4C24 18     |LEA     ECX, DWORD PTR SS:[ESP+0x18]                       ;  Hex(LoopTime)
    45. 00405BF8  |. |E8 A3F9FFFF   |CALL    <石子店铺.BigNum::/>                                   ;   --->  Loop Time /= 2
    46. 00405BFD  |. |50            |PUSH    EAX
    47. 00405BFE  |. |8D4C24 14     |LEA     ECX, DWORD PTR SS:[ESP+0x14]
    48. 00405C02  |. |E8 79F1FFFF   |CALL    <石子店铺.BufCpy>
    49. 00405C07  |. |8D8C24 B00200>|LEA     ECX, DWORD PTR SS:[ESP+0x2B0]
    50. 00405C0E  |. |E8 1D180100   |CALL    <石子店铺.nop>
    51. 00405C13  |. |8D8424 B80000>|LEA     EAX, DWORD PTR SS:[ESP+0xB8]
    52. 00405C1A  |. |8D8C24 000400>|LEA     ECX, DWORD PTR SS:[ESP+0x400]
    53. 00405C21  |. |50            |PUSH    EAX                                                ;  Hex(Pass)
    54. 00405C22  |. |51            |PUSH    ECX                                                ;  ResultBuf
    55. 00405C23  |. |8D8C24 C00000>|LEA     ECX, DWORD PTR SS:[ESP+0xC0]                       ;  Hex(Pass)
    56. 00405C2A  |. |E8 B1F6FFFF   |CALL    <石子店铺.BigNum::*>                                   ;    ---》 Pass *= Pass
    57. 00405C2F  |. |50            |PUSH    EAX
    58. 00405C30  |. |8D8C24 BC0000>|LEA     ECX, DWORD PTR SS:[ESP+0xBC]                       ;  更新Pass
    59. 00405C37  |. |E8 44F1FFFF   |CALL    <石子店铺.BufCpy>
    60. 00405C3C  |. |8D8C24 000400>|LEA     ECX, DWORD PTR SS:[ESP+0x400]
    61. 00405C43  |. |E8 E8170100   |CALL    <石子店铺.nop>
    62. 00405C48  |. |8D9424 500500>|LEA     EDX, DWORD PTR SS:[ESP+0x550]
    63. 00405C4F  |. |56            |PUSH    ESI                                                ;  Hex(14739049012400727199316597861741)
    64. 00405C50  |. |52            |PUSH    EDX
    65. 00405C51  |. |8D8C24 C00000>|LEA     ECX, DWORD PTR SS:[ESP+0xC0]                       ;  Hes(Pass)
    66. 00405C58  |. |E8 33FAFFFF   |CALL    <石子店铺.BigNum::%>                                   ;   ---》 Pass %= Key
    67. 00405C5D  |. |50            |PUSH    EAX
    68. 00405C5E  |. |8D8C24 BC0000>|LEA     ECX, DWORD PTR SS:[ESP+0xBC]
    69. 00405C65  |. |E8 16F1FFFF   |CALL    <石子店铺.BufCpy>
    70. 00405C6A  |. |8D8C24 500500>|LEA     ECX, DWORD PTR SS:[ESP+0x550]
    71. 00405C71  |. |E8 BA170100   |CALL    <石子店铺.nop>
    72. 00405C76  |.^\E9 C3FEFFFF   \JMP     石子店铺.00405B3E
    复制代码




         看起来很长,实际上翻译为C代码就只有几行:
    1. BigNum StaticKey = 14739049012400727199316597861741; (奇数)
    2. BigNum LoopTime = 1433;
    3. BigNum Pass;
    4. BigNum Result1 = 1;
    5. BigNum VolumnInfo;                                //机器码
    6. while (LoopTime) {
    7.    if(LoopTime % 2 != 0) {                //奇数
    8.               LoopTime--;
    9.         Result *= Pass;
    10.         Result %= StaticKey;              ==偶数
    11.    } else {                               //偶数
    12.         LoopTime /= 2;
    13.         Pass *= Pass;
    14.         Pass %= StaticKey;
    15.    }
    16. }
    17. if(Result == VolumnInfo)
    18.     success;
    复制代码








         代码这样就出来了,该干啥的就干啥。破解的方法多得去了,这里就不提及了。

    【破解总结】
        本来想找一个软件来练练手,保持一下手感的。结果打开一看,瞬时蒙了。大家别喷,我是第一次遇到有大数运算的程序,所以一时间不知道它在干啥。有兴趣的还请来玩玩吧。

    【版权声明】      本文有F8LEFT原创于PYG,转载请注明作者与出处。




    评分

    参与人数 2威望 +12 飘云币 +12 收起 理由
    theend + 4 + 4 只爆破过,还真没分析过算法
    Dxer + 8 + 8 感谢出算法分析教程

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-7-31 08:47
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2014-9-17 21:59:48 | 显示全部楼层
    不错,提醒楼主最好不要明文自己的Q EMAIL,感谢。

    点评

    哦,感谢提醒  详情 回复 发表于 2014-9-18 00:21
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-2 16:07
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2014-9-18 00:21:23 | 显示全部楼层
    左岸麦田 发表于 2014-9-17 21:59
    不错,提醒楼主最好不要明文自己的Q EMAIL,感谢。

    哦,感谢提醒
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2024-1-10 02:57
  • 签到天数: 75 天

    [LV.6]常住居民II

    发表于 2014-9-18 02:43:57 | 显示全部楼层
    s虽然看不懂  但还是支持一下
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2014-9-18 08:44:12 | 显示全部楼层
    不错支持分析
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2014-9-18 10:30:45 | 显示全部楼层
    谢谢您的分析算法文章
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-4-1 09:59
  • 签到天数: 76 天

    [LV.6]常住居民II

    发表于 2014-9-18 11:04:11 | 显示全部楼层
    感谢F8大婶,学习了,有时间自己实践一下
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2024-6-28 20:47
  • 签到天数: 2048 天

    [LV.Master]伴坛终老

    发表于 2014-9-18 14:13:25 | 显示全部楼层
    ,谢谢楼主分享呀。学习了呀。呵呵。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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