飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4578|回复: 7

[原创] Magic Photo Editor 4.9 算法分析

[复制链接]
  • TA的每日心情
    开心
    2016-5-16 14:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-1-29 00:27:56 | 显示全部楼层 |阅读模式
    【破文标题】Magic Photo Editor 4.9 算法分析
    【破文作者】tianxj
    【作者邮箱】tianxj_2007@126.com
    【作者主页】WwW.ChiNaPYG.CoM
    破解工具】PEiD,OD
    【破解平台】雨林木风Windows XP sp3
    【软件名称】Magic Photo Editor 4.9
    【软件大小】3167KB
    【软件类别】国外软件/图像处理  
    【软件授权】共享版
    【软件语言】英文
    【运行环境】Win9x/Me/NT/2000/XP/2003
    【更新时间】2009-1-12  
    【原版下载】华军软件园
    【保护方式】注册码
    【软件简介】一个图片编辑工具。可以轻松地将一张图片中的某些部份合成到另一张图片中,成为一张有特殊效果的图片。
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------
    【破解内容】
    --------------------------------------------------------------
    **************************************************************
    一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
    **************************************************************
    二、用PEiD对MagicPhoto.exe查壳,为 Borland Delphi 6.0 - 7.0
    **************************************************************
    三、运行OD,打开MagicPhoto.exe,右键—超级字串参考—查找ASCII.
    ==============================================================

    1. 004831B4  /.  55            PUSH EBP
    2. 004831B5  |.  8BEC          MOV EBP,ESP
    3. 004831B7  |.  B9 05000000   MOV ECX,5
    4. 004831BC  |>  6A 00         /PUSH 0
    5. 004831BE  |.  6A 00         |PUSH 0
    6. 004831C0  |.  49            |DEC ECX
    7. 004831C1  |.^ 75 F9         \JNZ SHORT MagicPho.004831BC
    8. 004831C3  |.  51            PUSH ECX
    9. 004831C4  |.  53            PUSH EBX
    10. 004831C5  |.  56            PUSH ESI
    11. 004831C6  |.  8BD8          MOV EBX,EAX
    12. 004831C8  |.  33C0          XOR EAX,EAX
    13. 004831CA  |.  55            PUSH EBP
    14. 004831CB  |.  68 72334800   PUSH MagicPho.00483372
    15. 004831D0  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    16. 004831D3  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    17. 004831D6  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    18. 004831DC  |.  8B10          MOV EDX,DWORD PTR DS:[EAX]
    19. 004831DE  |.  FF52 50       CALL DWORD PTR DS:[EDX+50]
    20. 004831E1  |.  3C 01         CMP AL,1
    21. 004831E3  |.  0F85 18010000 JNZ MagicPho.00483301
    22. 004831E9  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    23. 004831EC  |.  8BB3 00030000 MOV ESI,DWORD PTR DS:[EBX+300]
    24. 004831F2  |.  8BC6          MOV EAX,ESI
    25. 004831F4  |.  E8 8F39FBFF   CALL MagicPho.00436B88
    26. 004831F9  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //假码
    27. 004831FC  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
    28. 004831FF  |.  E8 EC54F8FF   CALL MagicPho.004086F0
    29. 00483204  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  //假码
    30. 00483207  |.  8BC6          MOV EAX,ESI
    31. 00483209  |.  E8 AA39FBFF   CALL MagicPho.00436BB8
    32. 0048320E  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
    33. 00483211  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    34. 00483217  |.  E8 6C39FBFF   CALL MagicPho.00436B88
    35. 0048321C  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0
    36. 00483220  |.  0F84 CF000000 JE MagicPho.004832F5                     ;  //假码为空则跳
    37. 00483226  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
    38. 00483229  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    39. 0048322F  |.  E8 5439FBFF   CALL MagicPho.00436B88
    40. 00483234  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  //假码
    41. 00483237  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
    42. 0048323A  |.  E8 6152F8FF   CALL MagicPho.004084A0
    43. 0048323F  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]            ;  //假码
    44. 00483242  |.  E8 4DA4FFFF   CALL MagicPho.0047D694                   ;  //关键CALL
    45. 00483247  |.  84C0          TEST AL,AL
    46. 00483249  |.  0F84 9A000000 JE MagicPho.004832E9
    47. 0048324F  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
    48. 00483252  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    49. 00483258  |.  E8 2B39FBFF   CALL MagicPho.00436B88
    50. 0048325D  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]            ;  //假码
    51. 00483260  |.  E8 E713F8FF   CALL MagicPho.0040464C                   ;  //取假码长度
    52. 00483265  |.  83F8 0B       CMP EAX,0B
    53. 00483268  |.  75 7F         JNZ SHORT MagicPho.004832E9              ;  //假码长度不等于11则跳
    54. 0048326A  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
    55. 0048326D  |.  50            PUSH EAX
    56. 0048326E  |.  8D55 DC       LEA EDX,DWORD PTR SS:[EBP-24]
    57. 00483271  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    58. 00483277  |.  E8 0C39FBFF   CALL MagicPho.00436B88
    59. 0048327C  |.  8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
    60. 0048327F  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
    61. 00483282  |.  E8 1952F8FF   CALL MagicPho.004084A0
    62. 00483287  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]            ;  //假码
    63. 0048328A  |.  B9 01000000   MOV ECX,1
    64. 0048328F  |.  BA 0B000000   MOV EDX,0B
    65. 00483294  |.  E8 0B16F8FF   CALL MagicPho.004048A4                   ;  //取假码第11位
    66. 00483299  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]            ;  //假码第11位
    67. 0048329C  |.  BA 88334800   MOV EDX,MagicPho.00483388                ;  U
    68. 004832A1  |.  E8 EA14F8FF   CALL MagicPho.00404790
    69. 004832A6  |.  75 41         JNZ SHORT MagicPho.004832E9              ;  //假码第11位不为"U"则跳
    70. 004832A8  |.  8D55 D4       LEA EDX,DWORD PTR SS:[EBP-2C]
    71. 004832AB  |.  8B83 00030000 MOV EAX,DWORD PTR DS:[EBX+300]
    72. 004832B1  |.  E8 D238FBFF   CALL MagicPho.00436B88
    73. 004832B6  |.  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-2C]
    74. 004832B9  |.  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-28]
    75. 004832BC  |.  E8 DF51F8FF   CALL MagicPho.004084A0
    76. 004832C1  |.  8B55 D8       MOV EDX,DWORD PTR SS:[EBP-28]
    77. 004832C4  |.  B8 94334800   MOV EAX,MagicPho.00483394                ;  magic.bin
    78. 004832C9  |.  E8 FEA4FFFF   CALL MagicPho.0047D7CC
    79. 004832CE  |.  A1 149B4800   MOV EAX,DWORD PTR DS:[489B14]
    80. 004832D3  |.  BA A8334800   MOV EDX,MagicPho.004833A8                ;  Y
    81. 004832D8  |.  E8 0B11F8FF   CALL MagicPho.004043E8
    82. 004832DD  |.  B8 B4334800   MOV EAX,MagicPho.004833B4                ;  Successfully Registered!
    83. 004832E2  |.  E8 35D4FAFF   CALL MagicPho.0043071C
    84. 004832E7  |.  EB 22         JMP SHORT MagicPho.0048330B
    85. 004832E9  |>  B8 D8334800   MOV EAX,MagicPho.004833D8                ;  Invalid SerialNumber!
    86. 004832EE  |.  E8 29D4FAFF   CALL MagicPho.0043071C
    87. 004832F3  |.  EB 16         JMP SHORT MagicPho.0048330B
    88. 004832F5  |>  B8 D8334800   MOV EAX,MagicPho.004833D8                ;  Invalid SerialNumber!
    89. 004832FA  |.  E8 1DD4FAFF   CALL MagicPho.0043071C
    90. 004832FF  |.  EB 0A         JMP SHORT MagicPho.0048330B
    91. 00483301  |>  B8 F8334800   MOV EAX,MagicPho.004833F8                ;  Already Registered!
    92. 00483306  |.  E8 11D4FAFF   CALL MagicPho.0043071C
    93. 0048330B  |>  A1 5CAD4800   MOV EAX,DWORD PTR DS:[48AD5C]
    94. 00483310  |.  E8 D708FDFF   CALL MagicPho.00453BEC
    95. 00483315  |.  33C0          XOR EAX,EAX
    96. 00483317  |.  5A            POP EDX
    97. 00483318  |.  59            POP ECX
    98. 00483319  |.  59            POP ECX
    99. 0048331A  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    100. 0048331D  |.  68 79334800   PUSH MagicPho.00483379
    101. 00483322  |>  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
    102. 00483325  |.  E8 6A10F8FF   CALL MagicPho.00404394
    103. 0048332A  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
    104. 0048332D  |.  E8 6210F8FF   CALL MagicPho.00404394
    105. 00483332  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
    106. 00483335  |.  E8 5A10F8FF   CALL MagicPho.00404394
    107. 0048333A  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
    108. 0048333D  |.  BA 02000000   MOV EDX,2
    109. 00483342  |.  E8 7110F8FF   CALL MagicPho.004043B8
    110. 00483347  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
    111. 0048334A  |.  BA 02000000   MOV EDX,2
    112. 0048334F  |.  E8 6410F8FF   CALL MagicPho.004043B8
    113. 00483354  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    114. 00483357  |.  E8 3810F8FF   CALL MagicPho.00404394
    115. 0048335C  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    116. 0048335F  |.  BA 02000000   MOV EDX,2
    117. 00483364  |.  E8 4F10F8FF   CALL MagicPho.004043B8
    118. 00483369  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    119. 0048336C  |.  E8 2310F8FF   CALL MagicPho.00404394
    120. 00483371  \.  C3            RETN
    121. 00483372   .^ E9 450AF8FF   JMP MagicPho.00403DBC
    122. 00483377   .^ EB A9         JMP SHORT MagicPho.00483322
    123. 00483379   .  5E            POP ESI
    124. 0048337A   .  5B            POP EBX
    125. 0048337B   .  8BE5          MOV ESP,EBP
    126. 0048337D   .  5D            POP EBP
    127. 0048337E   .  C3            RETN
    复制代码
    由上可知,注册码为11位,并且第11位为"U"
    ==============================================================

    1. 0047D694  /$  55            PUSH EBP
    2. 0047D695  |.  8BEC          MOV EBP,ESP
    3. 0047D697  |.  B9 04000000   MOV ECX,4
    4. 0047D69C  |>  6A 00         /PUSH 0
    5. 0047D69E  |.  6A 00         |PUSH 0
    6. 0047D6A0  |.  49            |DEC ECX
    7. 0047D6A1  |.^ 75 F9         \JNZ SHORT MagicPho.0047D69C
    8. 0047D6A3  |.  51            PUSH ECX
    9. 0047D6A4  |.  53            PUSH EBX
    10. 0047D6A5  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
    11. 0047D6A8  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //假码
    12. 0047D6AB  |.  E8 8471F8FF   CALL MagicPho.00404834
    13. 0047D6B0  |.  33C0          XOR EAX,EAX
    14. 0047D6B2  |.  55            PUSH EBP
    15. 0047D6B3  |.  68 BDD74700   PUSH MagicPho.0047D7BD
    16. 0047D6B8  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    17. 0047D6BB  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    18. 0047D6BE  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    19. 0047D6C1  |.  E8 B2FDFFFF   CALL MagicPho.0047D478
    20. 0047D6C6  |.  8D4D EC       LEA ECX,DWORD PTR SS:[EBP-14]
    21. 0047D6C9  |.  33D2          XOR EDX,EDX
    22. 0047D6CB  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //用户名
    23. 0047D6CE  |.  E8 1DFBFFFF   CALL MagicPho.0047D1F0                   ;  //将用户名重新排序
    24. 0047D6D3  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]            ;  //重新排序后的用户名
    25. 0047D6D6  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    26. 0047D6D9  |.  E8 4E6DF8FF   CALL MagicPho.0040442C
    27. 0047D6DE  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    28. 0047D6E1  |.  50            PUSH EAX
    29. 0047D6E2  |.  B9 0A000000   MOV ECX,0A
    30. 0047D6E7  |.  BA 01000000   MOV EDX,1
    31. 0047D6EC  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //假码
    32. 0047D6EF  |.  E8 B071F8FF   CALL MagicPho.004048A4                   ;  //取假码第1-10位
    33. 0047D6F4  |.  8D4D E8       LEA ECX,DWORD PTR SS:[EBP-18]
    34. 0047D6F7  |.  66:BA 0001    MOV DX,100                               ;  //DX=100
    35. 0047D6FB  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //假码第1-10位
    36. 0047D6FE  |.  E8 1DFFFFFF   CALL MagicPho.0047D620                   ;  //将假码变形
    37. 0047D703  |.  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]            ;  //变形后的假码
    38. 0047D706  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    39. 0047D709  |.  E8 1E6DF8FF   CALL MagicPho.0040442C
    40. 0047D70E  |.  8D4D E4       LEA ECX,DWORD PTR SS:[EBP-1C]
    41. 0047D711  |.  33D2          XOR EDX,EDX
    42. 0047D713  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //变形后的假码
    43. 0047D716  |.  E8 D5FAFFFF   CALL MagicPho.0047D1F0                   ;  //将变形后的假码重新排序
    44. 0047D71B  |.  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]            ;  //重新排序后的假码
    45. 0047D71E  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    46. 0047D721  |.  E8 066DF8FF   CALL MagicPho.0040442C
    47. 0047D726  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    48. 0047D729  |.  50            PUSH EAX
    49. 0047D72A  |.  B9 04000000   MOV ECX,4
    50. 0047D72F  |.  BA 0A000000   MOV EDX,0A
    51. 0047D734  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //重新排序后的假码
    52. 0047D737  |.  E8 6871F8FF   CALL MagicPho.004048A4                   ;  //取重新排序后的假码第10-13位
    53. 0047D73C  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    54. 0047D73F  |.  50            PUSH EAX
    55. 0047D740  |.  B9 06000000   MOV ECX,6
    56. 0047D745  |.  BA 05000000   MOV EDX,5
    57. 0047D74A  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //重新排序后的假码
    58. 0047D74D  |.  E8 5271F8FF   CALL MagicPho.004048A4                   ;  //取重新排序后的假码第5-10位
    59. 0047D752  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
    60. 0047D755  |.  50            PUSH EAX
    61. 0047D756  |.  B9 04000000   MOV ECX,4
    62. 0047D75B  |.  BA 01000000   MOV EDX,1
    63. 0047D760  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //用户名
    64. 0047D763  |.  E8 3C71F8FF   CALL MagicPho.004048A4                   ;  //取用户名第1-4位
    65. 0047D768  |.  8B55 E0       MOV EDX,DWORD PTR SS:[EBP-20]            ;  //用户名第1-4位
    66. 0047D76B  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  //重新排序后的假码第10-13位
    67. 0047D76E  |.  E8 1572F8FF   CALL MagicPho.00404988
    68. 0047D773  |.  85C0          TEST EAX,EAX
    69. 0047D775  |.  7F 25         JG SHORT MagicPho.0047D79C
    70. 0047D777  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
    71. 0047D77A  |.  50            PUSH EAX
    72. 0047D77B  |.  B9 06000000   MOV ECX,6
    73. 0047D780  |.  BA 05000000   MOV EDX,5
    74. 0047D785  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //用户名
    75. 0047D788  |.  E8 1771F8FF   CALL MagicPho.004048A4                   ;  //取用户名第5-10位
    76. 0047D78D  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]            ;  //用户名第5-10位
    77. 0047D790  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]            ;  //重新排序后的假码第5-10位
    78. 0047D793  |.  E8 F071F8FF   CALL MagicPho.00404988                   ;  //关键比较
    79. 0047D798  |.  85C0          TEST EAX,EAX
    80. 0047D79A  |.  7E 04         JLE SHORT MagicPho.0047D7A0              ;  //关键跳转
    81. 0047D79C  |>  B3 01         MOV BL,1
    82. 0047D79E  |.  EB 02         JMP SHORT MagicPho.0047D7A2
    83. 0047D7A0  |>  33DB          XOR EBX,EBX
    84. 0047D7A2  |>  33C0          XOR EAX,EAX
    85. 0047D7A4  |.  5A            POP EDX
    86. 0047D7A5  |.  59            POP ECX
    87. 0047D7A6  |.  59            POP ECX
    88. 0047D7A7  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    89. 0047D7AA  |.  68 C4D74700   PUSH MagicPho.0047D7C4
    90. 0047D7AF  |>  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
    91. 0047D7B2  |.  BA 09000000   MOV EDX,9
    92. 0047D7B7  |.  E8 FC6BF8FF   CALL MagicPho.004043B8
    93. 0047D7BC  \.  C3            RETN
    94. 0047D7BD   .^ E9 FA65F8FF   JMP MagicPho.00403DBC
    95. 0047D7C2   .^ EB EB         JMP SHORT MagicPho.0047D7AF
    96. 0047D7C4   .  8BC3          MOV EAX,EBX
    97. 0047D7C6   .  5B            POP EBX
    98. 0047D7C7   .  8BE5          MOV ESP,EBP
    99. 0047D7C9   .  5D            POP EBP
    100. 0047D7CA   .  C3            RETN
    复制代码
    由上可知,软件是将注册码与用户名都变形后进行比较的
    ==============================================================

    1. 0047D1F0  /$  55            PUSH EBP
    2. 0047D1F1  |.  8BEC          MOV EBP,ESP
    3. 0047D1F3  |.  51            PUSH ECX
    4. 0047D1F4  |.  B9 0A000000   MOV ECX,0A
    5. 0047D1F9  |>  6A 00         /PUSH 0
    6. 0047D1FB  |.  6A 00         |PUSH 0
    7. 0047D1FD  |.  49            |DEC ECX
    8. 0047D1FE  |.^ 75 F9         \JNZ SHORT MagicPho.0047D1F9
    9. 0047D200  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
    10. 0047D203  |.  53            PUSH EBX
    11. 0047D204  |.  56            PUSH ESI
    12. 0047D205  |.  8BF1          MOV ESI,ECX
    13. 0047D207  |.  8BDA          MOV EBX,EDX
    14. 0047D209  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
    15. 0047D20C  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
    16. 0047D20F  |.  E8 2076F8FF   CALL MagicPho.00404834
    17. 0047D214  |.  33C0          XOR EAX,EAX
    18. 0047D216  |.  55            PUSH EBP
    19. 0047D217  |.  68 6AD44700   PUSH MagicPho.0047D46A
    20. 0047D21C  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    21. 0047D21F  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    22. 0047D222  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
    23. 0047D225  |.  E8 2274F8FF   CALL MagicPho.0040464C                   ;  //取用户名长度
    24. 0047D22A  |.  84DB          TEST BL,BL
    25. 0047D22C  |.  0F84 0C010000 JE MagicPho.0047D33E
    26. 0047D232  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    27. 0047D235  |.  50            PUSH EAX
    28. 0047D236  |.  B9 01000000   MOV ECX,1
    29. 0047D23B  |.  BA 03000000   MOV EDX,3
    30. 0047D240  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    31. 0047D243  |.  E8 5C76F8FF   CALL MagicPho.004048A4
    32. 0047D248  |.  FF75 F8       PUSH DWORD PTR SS:[EBP-8]
    33. 0047D24B  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    34. 0047D24E  |.  50            PUSH EAX
    35. 0047D24F  |.  B9 01000000   MOV ECX,1
    36. 0047D254  |.  BA 09000000   MOV EDX,9
    37. 0047D259  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    38. 0047D25C  |.  E8 4376F8FF   CALL MagicPho.004048A4
    39. 0047D261  |.  FF75 F4       PUSH DWORD PTR SS:[EBP-C]
    40. 0047D264  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    41. 0047D267  |.  50            PUSH EAX
    42. 0047D268  |.  B9 01000000   MOV ECX,1
    43. 0047D26D  |.  BA 04000000   MOV EDX,4
    44. 0047D272  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    45. 0047D275  |.  E8 2A76F8FF   CALL MagicPho.004048A4
    46. 0047D27A  |.  FF75 F0       PUSH DWORD PTR SS:[EBP-10]
    47. 0047D27D  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
    48. 0047D280  |.  50            PUSH EAX
    49. 0047D281  |.  B9 01000000   MOV ECX,1
    50. 0047D286  |.  BA 01000000   MOV EDX,1
    51. 0047D28B  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    52. 0047D28E  |.  E8 1176F8FF   CALL MagicPho.004048A4
    53. 0047D293  |.  FF75 EC       PUSH DWORD PTR SS:[EBP-14]
    54. 0047D296  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
    55. 0047D299  |.  50            PUSH EAX
    56. 0047D29A  |.  B9 01000000   MOV ECX,1
    57. 0047D29F  |.  BA 06000000   MOV EDX,6
    58. 0047D2A4  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    59. 0047D2A7  |.  E8 F875F8FF   CALL MagicPho.004048A4
    60. 0047D2AC  |.  FF75 E8       PUSH DWORD PTR SS:[EBP-18]
    61. 0047D2AF  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
    62. 0047D2B2  |.  50            PUSH EAX
    63. 0047D2B3  |.  B9 01000000   MOV ECX,1
    64. 0047D2B8  |.  BA 08000000   MOV EDX,8
    65. 0047D2BD  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    66. 0047D2C0  |.  E8 DF75F8FF   CALL MagicPho.004048A4
    67. 0047D2C5  |.  FF75 E4       PUSH DWORD PTR SS:[EBP-1C]
    68. 0047D2C8  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
    69. 0047D2CB  |.  50            PUSH EAX
    70. 0047D2CC  |.  B9 01000000   MOV ECX,1
    71. 0047D2D1  |.  BA 05000000   MOV EDX,5
    72. 0047D2D6  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    73. 0047D2D9  |.  E8 C675F8FF   CALL MagicPho.004048A4
    74. 0047D2DE  |.  FF75 E0       PUSH DWORD PTR SS:[EBP-20]
    75. 0047D2E1  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
    76. 0047D2E4  |.  50            PUSH EAX
    77. 0047D2E5  |.  B9 01000000   MOV ECX,1
    78. 0047D2EA  |.  BA 07000000   MOV EDX,7
    79. 0047D2EF  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    80. 0047D2F2  |.  E8 AD75F8FF   CALL MagicPho.004048A4
    81. 0047D2F7  |.  FF75 DC       PUSH DWORD PTR SS:[EBP-24]
    82. 0047D2FA  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
    83. 0047D2FD  |.  50            PUSH EAX
    84. 0047D2FE  |.  B9 01000000   MOV ECX,1
    85. 0047D303  |.  BA 0A000000   MOV EDX,0A
    86. 0047D308  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    87. 0047D30B  |.  E8 9475F8FF   CALL MagicPho.004048A4
    88. 0047D310  |.  FF75 D8       PUSH DWORD PTR SS:[EBP-28]
    89. 0047D313  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
    90. 0047D316  |.  50            PUSH EAX
    91. 0047D317  |.  B9 01000000   MOV ECX,1
    92. 0047D31C  |.  BA 02000000   MOV EDX,2
    93. 0047D321  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    94. 0047D324  |.  E8 7B75F8FF   CALL MagicPho.004048A4
    95. 0047D329  |.  FF75 D4       PUSH DWORD PTR SS:[EBP-2C]
    96. 0047D32C  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    97. 0047D32F  |.  BA 0A000000   MOV EDX,0A
    98. 0047D334  |.  E8 D373F8FF   CALL MagicPho.0040470C
    99. 0047D339  |.  E9 07010000   JMP MagicPho.0047D445
    100. 0047D33E  |>  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
    101. 0047D341  |.  50            PUSH EAX
    102. 0047D342  |.  B9 01000000   MOV ECX,1
    103. 0047D347  |.  BA 04000000   MOV EDX,4
    104. 0047D34C  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
    105. 0047D34F  |.  E8 5075F8FF   CALL MagicPho.004048A4                   ;  //取用户名第4位
    106. 0047D354  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-30]
    107. 0047D357  |.  8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]
    108. 0047D35A  |.  50            PUSH EAX
    109. 0047D35B  |.  B9 01000000   MOV ECX,1
    110. 0047D360  |.  BA 0A000000   MOV EDX,0A
    111. 0047D365  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    112. 0047D368  |.  E8 3775F8FF   CALL MagicPho.004048A4                   ;  //取用户名第10位
    113. 0047D36D  |.  FF75 CC       PUSH DWORD PTR SS:[EBP-34]
    114. 0047D370  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
    115. 0047D373  |.  50            PUSH EAX
    116. 0047D374  |.  B9 01000000   MOV ECX,1
    117. 0047D379  |.  BA 01000000   MOV EDX,1
    118. 0047D37E  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    119. 0047D381  |.  E8 1E75F8FF   CALL MagicPho.004048A4                   ;  //取用户名第1位
    120. 0047D386  |.  FF75 C8       PUSH DWORD PTR SS:[EBP-38]
    121. 0047D389  |.  8D45 C4       LEA EAX,DWORD PTR SS:[EBP-3C]
    122. 0047D38C  |.  50            PUSH EAX
    123. 0047D38D  |.  B9 01000000   MOV ECX,1
    124. 0047D392  |.  BA 03000000   MOV EDX,3
    125. 0047D397  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    126. 0047D39A  |.  E8 0575F8FF   CALL MagicPho.004048A4                   ;  //取用户名第3位
    127. 0047D39F  |.  FF75 C4       PUSH DWORD PTR SS:[EBP-3C]
    128. 0047D3A2  |.  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
    129. 0047D3A5  |.  50            PUSH EAX
    130. 0047D3A6  |.  B9 01000000   MOV ECX,1
    131. 0047D3AB  |.  BA 07000000   MOV EDX,7
    132. 0047D3B0  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    133. 0047D3B3  |.  E8 EC74F8FF   CALL MagicPho.004048A4                   ;  //取用户名第7位
    134. 0047D3B8  |.  FF75 C0       PUSH DWORD PTR SS:[EBP-40]
    135. 0047D3BB  |.  8D45 BC       LEA EAX,DWORD PTR SS:[EBP-44]
    136. 0047D3BE  |.  50            PUSH EAX
    137. 0047D3BF  |.  B9 01000000   MOV ECX,1
    138. 0047D3C4  |.  BA 05000000   MOV EDX,5
    139. 0047D3C9  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    140. 0047D3CC  |.  E8 D374F8FF   CALL MagicPho.004048A4                   ;  //取用户名第5位
    141. 0047D3D1  |.  FF75 BC       PUSH DWORD PTR SS:[EBP-44]
    142. 0047D3D4  |.  8D45 B8       LEA EAX,DWORD PTR SS:[EBP-48]
    143. 0047D3D7  |.  50            PUSH EAX
    144. 0047D3D8  |.  B9 01000000   MOV ECX,1
    145. 0047D3DD  |.  BA 08000000   MOV EDX,8
    146. 0047D3E2  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    147. 0047D3E5  |.  E8 BA74F8FF   CALL MagicPho.004048A4                   ;  //取用户名第8位
    148. 0047D3EA  |.  FF75 B8       PUSH DWORD PTR SS:[EBP-48]
    149. 0047D3ED  |.  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
    150. 0047D3F0  |.  50            PUSH EAX
    151. 0047D3F1  |.  B9 01000000   MOV ECX,1
    152. 0047D3F6  |.  BA 06000000   MOV EDX,6
    153. 0047D3FB  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    154. 0047D3FE  |.  E8 A174F8FF   CALL MagicPho.004048A4                   ;  //取用户名第6位
    155. 0047D403  |.  FF75 B4       PUSH DWORD PTR SS:[EBP-4C]
    156. 0047D406  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
    157. 0047D409  |.  50            PUSH EAX
    158. 0047D40A  |.  B9 01000000   MOV ECX,1
    159. 0047D40F  |.  BA 02000000   MOV EDX,2
    160. 0047D414  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    161. 0047D417  |.  E8 8874F8FF   CALL MagicPho.004048A4                   ;  //取用户名第2位
    162. 0047D41C  |.  FF75 B0       PUSH DWORD PTR SS:[EBP-50]
    163. 0047D41F  |.  8D45 AC       LEA EAX,DWORD PTR SS:[EBP-54]
    164. 0047D422  |.  50            PUSH EAX
    165. 0047D423  |.  B9 01000000   MOV ECX,1
    166. 0047D428  |.  BA 09000000   MOV EDX,9
    167. 0047D42D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    168. 0047D430  |.  E8 6F74F8FF   CALL MagicPho.004048A4                   ;  //取用户名第9位
    169. 0047D435  |.  FF75 AC       PUSH DWORD PTR SS:[EBP-54]
    170. 0047D438  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    171. 0047D43B  |.  BA 0A000000   MOV EDX,0A
    172. 0047D440  |.  E8 C772F8FF   CALL MagicPho.0040470C
    173. 0047D445  |>  8BC6          MOV EAX,ESI
    174. 0047D447  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]             ;  //重新排序后的用户名
    175. 0047D44A  |.  E8 996FF8FF   CALL MagicPho.004043E8
    176. 0047D44F  |.  33C0          XOR EAX,EAX
    177. 0047D451  |.  5A            POP EDX
    178. 0047D452  |.  59            POP ECX
    179. 0047D453  |.  59            POP ECX
    180. 0047D454  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    181. 0047D457  |.  68 71D44700   PUSH MagicPho.0047D471
    182. 0047D45C  |>  8D45 AC       LEA EAX,DWORD PTR SS:[EBP-54]
    183. 0047D45F  |.  BA 15000000   MOV EDX,15
    184. 0047D464  |.  E8 4F6FF8FF   CALL MagicPho.004043B8
    185. 0047D469  \.  C3            RETN
    186. 0047D46A   .^ E9 4D69F8FF   JMP MagicPho.00403DBC
    187. 0047D46F   .^ EB EB         JMP SHORT MagicPho.0047D45C
    188. 0047D471   .  5E            POP ESI
    189. 0047D472   .  5B            POP EBX
    190. 0047D473   .  8BE5          MOV ESP,EBP
    191. 0047D475   .  5D            POP EBP
    192. 0047D476   .  C3            RETN
    复制代码
    由上可知,软件是将用户名和注册码的第4位、第10位、第1位、第3位、第7位、第5位、第8位、第6位、第2位、第9位重新连接
    ==============================================================

    1. 0047D620  /$  53            PUSH EBX
    2. 0047D621  |.  56            PUSH ESI
    3. 0047D622  |.  57            PUSH EDI
    4. 0047D623  |.  55            PUSH EBP
    5. 0047D624  |.  83C4 F8       ADD ESP,-8
    6. 0047D627  |.  8BF9          MOV EDI,ECX
    7. 0047D629  |.  8BEA          MOV EBP,EDX                              ;  //EBP=EDX
    8. 0047D62B  |.  890424        MOV DWORD PTR SS:[ESP],EAX
    9. 0047D62E  |.  8BC7          MOV EAX,EDI
    10. 0047D630  |.  8B1424        MOV EDX,DWORD PTR SS:[ESP]               ;  //假码第1-10位
    11. 0047D633  |.  E8 B06DF8FF   CALL MagicPho.004043E8
    12. 0047D638  |.  8BC7          MOV EAX,EDI
    13. 0047D63A  |.  E8 5D72F8FF   CALL MagicPho.0040489C
    14. 0047D63F  |.  8B1424        MOV EDX,DWORD PTR SS:[ESP]               ;  //假码
    15. 0047D642  |.  8A12          MOV DL,BYTE PTR DS:[EDX]                 ;  //取假码第一位
    16. 0047D644  |.  8810          MOV BYTE PTR DS:[EAX],DL                 ;  //保存
    17. 0047D646  |.  8B0424        MOV EAX,DWORD PTR SS:[ESP]
    18. 0047D649  |.  E8 FE6FF8FF   CALL MagicPho.0040464C                   ;  //取假码长度
    19. 0047D64E  |.  2C 02         SUB AL,2
    20. 0047D650  |.  72 3A         JB SHORT MagicPho.0047D68C
    21. 0047D652  |.  40            INC EAX
    22. 0047D653  |.  884424 04     MOV BYTE PTR SS:[ESP+4],AL               ;  //AL=9
    23. 0047D657  |.  B3 02         MOV BL,2                                 ;  //BL=2
    24. 0047D659  |>  8BC7          /MOV EAX,EDI
    25. 0047D65B  |.  E8 3C72F8FF   |CALL MagicPho.0040489C
    26. 0047D660  |.  8BF3          |MOV ESI,EBX
    27. 0047D662  |.  81E6 FF000000 |AND ESI,0FF
    28. 0047D668  |.  8B1424        |MOV EDX,DWORD PTR SS:[ESP]
    29. 0047D66B  |.  8A5432 FF     |MOV DL,BYTE PTR DS:[EDX+ESI-1]          ;  //从第2位起,依次取假码的ASCII码
    30. 0047D66F  |.  0FB7CD        |MOVZX ECX,BP                            ;  //ECX=BP,BP初始值为100
    31. 0047D672  |.  C1E9 08       |SHR ECX,8                               ;  //ECX右移8位
    32. 0047D675  |.  32D1          |XOR DL,CL                               ;  //DL=DL xor CL
    33. 0047D677  |.  885430 FF     |MOV BYTE PTR DS:[EAX+ESI-1],DL          ;  //保存异或结果
    34. 0047D67B  |.  8B07          |MOV EAX,DWORD PTR DS:[EDI]
    35. 0047D67D  |.  0FB64430 FF   |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]       ;  //取异或结果
    36. 0047D682  |.  66:03E8       |ADD BP,AX                               ;  //BP=BP+AX
    37. 0047D685  |.  43            |INC EBX
    38. 0047D686  |.  FE4C24 04     |DEC BYTE PTR SS:[ESP+4]
    39. 0047D68A  |.^ 75 CD         \JNZ SHORT MagicPho.0047D659             ;  //循环
    40. 0047D68C  |>  59            POP ECX
    41. 0047D68D  |.  5A            POP EDX
    42. 0047D68E  |.  5D            POP EBP
    43. 0047D68F  |.  5F            POP EDI
    44. 0047D690  |.  5E            POP ESI
    45. 0047D691  |.  5B            POP EBX
    46. 0047D692  \.  C3            RETN
    复制代码
    由上可知,软件是注册码进行运算,这个过程即可加密也可解密
    **************************************************************  
    【破解总结】
    本程序将用户名和注册码都变形后比较,是无法作内存注册机的,如果看不懂算法流程只有走爆破之路,如果再设计几个暗桩就比较完美了,值得学习。
    --------------------------------------------------------------
    【算法总结】
    --------------------------------------------------------------
    【算法注册机】
    易语言代码〗
    .版本 2

    .子程序 _按钮1_被单击
    .局部变量 A, 整数型
    .局部变量 B, 整数型
    .局部变量 C, 整数型
    .局部变量 D, 整数型
    .局部变量 X, 文本型
    .局部变量 i, 整数型

    .如果 (取文本长度 (编辑框1.内容) = 0)
        编辑框2.内容 = “请输入用户名!”
    .否则

        X = 编辑框1.内容
        B = 256
        .计次循环首 (取文本长度 (X) - 1, i)
            A = 取代码 (X, i + 1)
            C = 右移 (B, 8)
            D = 位异或 (A, C)
            X = 文本替换 (X, i + 1, 1, 字符 (D))
            B = B + D
        .计次循环尾 ()
        编辑框2.内容 = 文本替换 (X, 11, 1, “U”)

    --------------------------------------------------------------
    感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及徐超等所有帮助过我的论坛兄弟姐妹们!谢谢
    --------------------------------------------------------------
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-11-28 07:16
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-4-6 22:39:33 | 显示全部楼层
    很严谨,很强大!学习ing.../:good
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-4-8 10:07:41 | 显示全部楼层
    恩,慢慢看还是能看懂一部分的。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-4-18 00:10:09 | 显示全部楼层
    算法部分学习,很有点长啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-1 18:38:15 | 显示全部楼层
    很精彩的文章/:good
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-2 11:57:11 | 显示全部楼层
    好文章,学习了!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-14 09:11
  • 签到天数: 479 天

    [LV.9]以坛为家II

    发表于 2014-11-14 10:46:32 | 显示全部楼层
    感谢楼主提供
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-1 20:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-7-6 20:28:19 | 显示全部楼层
    路过必顶,谢谢分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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