飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: yangbing1990

[原创] 我也发个自己写的CM

[复制链接]

该用户从未签到

发表于 2010-12-27 13:02:10 | 显示全部楼层
Stack address=0012F8B0, (ASCII "yangbing1990")
ECX=00000005
Jump from 004015B9

0040162B     /74 07         JnE SHORT CrackMe.00401634

004015B9     /75 2B         JZ SHORT CrackMe.004015E6
现在还没入门,正在学习如何下断点,,谢谢楼主提供的练习题!
PYG19周年生日快乐!

该用户从未签到

发表于 2011-1-11 11:55:20 | 显示全部楼层
LZ

能把CM的源码贴出来吗?

学习一下,谢谢
PYG19周年生日快乐!
  • TA的每日心情
    难过
    7 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2011-1-11 14:18:11 | 显示全部楼层
    老贴子又顶上来了....
    1. 00401480  SUB ESP,2C
    2. 00401483  PUSH EBX
    3. 00401484  PUSH EBP
    4. 00401485  PUSH ESI
    5. 00401486  PUSH EDI
    6. 00401487  MOV EDI,ECX
    7. 00401489  PUSH 64
    8. 0040148B  MOV DWORD PTR SS:[ESP+1C],EDI
    9. 0040148F  CALL <JMP.&MFC42.#??2@YAPAXI@Z_823>
    10. 00401494  PUSH 64
    11. 00401496  MOV EBX,EAX
    12. 00401498  CALL <JMP.&MFC42.#??2@YAPAXI@Z_823>
    13. 0040149D  ADD ESP,8
    14. 004014A0  MOV ESI,EAX
    15. 004014A2  MOV ECX,EDI
    16. 004014A4  MOV DWORD PTR SS:[ESP+1C],ESI
    17. 004014A8  PUSH 64
    18. 004014AA  PUSH EBX
    19. 004014AB  PUSH 3EA
    20. 004014B0  CALL <JMP.&MFC42.#?GetDlgItem@CWnd@@QBEPAV1@H@Z_3092>
    21. 004014B5  MOV ECX,EAX
    22. 004014B7  CALL <JMP.&MFC42.#?GetWindowTextA@CWnd@@QBEHPADH@Z_38>
    23. 004014BC  PUSH 64
    24. 004014BE  PUSH ESI
    25. 004014BF  PUSH 3EB
    26. 004014C4  MOV ECX,EDI
    27. 004014C6  CALL <JMP.&MFC42.#?GetDlgItem@CWnd@@QBEPAV1@H@Z_3092>
    28. 004014CB  MOV ECX,EAX
    29. 004014CD  CALL <JMP.&MFC42.#?GetWindowTextA@CWnd@@QBEHPADH@Z_38>
    30. 004014D2  MOV EDI,EBX
    31. 004014D4  OR ECX,FFFFFFFF
    32. 004014D7  XOR EAX,EAX
    33. 004014D9  REPNE SCAS BYTE PTR ES:[EDI]
    34. 004014DB  NOT ECX
    35. 004014DD  PUSH ECX
    36. 004014DE  CALL <JMP.&MFC42.#??2@YAPAXI@Z_823>
    37. 004014E3  MOV EBP,EAX
    38. 004014E5  MOV EDI,ESI
    39. 004014E7  OR ECX,FFFFFFFF
    40. 004014EA  XOR EAX,EAX
    41. 004014EC  REPNE SCAS BYTE PTR ES:[EDI]
    42. 004014EE  NOT ECX
    43. 004014F0  PUSH ECX
    44. 004014F1  CALL <JMP.&MFC42.#??2@YAPAXI@Z_823>
    45. 004014F6  MOV ECX,DWORD PTR DS:[403024]
    46. 004014FC  MOV EDX,EAX
    47. 004014FE  MOV EAX,DWORD PTR DS:[403020]                         ;  常量:"yangbing1990"
    48. 00401503  MOV DWORD PTR SS:[ESP+38],ECX
    49. 00401507  MOV CL,BYTE PTR DS:[40302C]
    50. 0040150D  MOV DWORD PTR SS:[ESP+34],EAX
    51. 00401511  MOV EAX,DWORD PTR DS:[403028]
    52. 00401516  MOV BYTE PTR SS:[ESP+40],CL
    53. 0040151A  MOV DWORD PTR SS:[ESP+3C],EAX
    54. 0040151E  MOV EDI,EBX                                           ;  name
    55. 00401520  OR ECX,FFFFFFFF
    56. 00401523  XOR EAX,EAX
    57. 00401525  MOV BYTE PTR SS:[ESP+18],57                           ;  "win"
    58. 0040152A  MOV BYTE PTR SS:[ESP+19],69
    59. 0040152F  MOV BYTE PTR SS:[ESP+1A],6E
    60. 00401534  MOV BYTE PTR SS:[ESP+1B],0
    61. 00401539  MOV BYTE PTR SS:[ESP+2C],4C                           ;  "lost"
    62. 0040153E  MOV BYTE PTR SS:[ESP+2D],6F
    63. 00401543  MOV BYTE PTR SS:[ESP+2E],73
    64. 00401548  MOV BYTE PTR SS:[ESP+2F],74
    65. 0040154D  MOV BYTE PTR SS:[ESP+30],0
    66. 00401552  MOV DWORD PTR SS:[ESP+28],EDX
    67. 00401556  REPNE SCAS BYTE PTR ES:[EDI]
    68. 00401558  NOT ECX
    69. 0040155A  SUB EDI,ECX
    70. 0040155C  MOV DWORD PTR SS:[ESP+1C],0
    71. 00401564  MOV EAX,ECX
    72. 00401566  MOV ESI,EDI
    73. 00401568  MOV EDI,EBP
    74. 0040156A  SHR ECX,2
    75. 0040156D  REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
    76. 0040156F  MOV ECX,EAX
    77. 00401571  XOR EAX,EAX
    78. 00401573  AND ECX,3
    79. 00401576  REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
    80. 00401578  MOV EDI,DWORD PTR SS:[ESP+24]
    81. 0040157C  OR ECX,FFFFFFFF
    82. 0040157F  REPNE SCAS BYTE PTR ES:[EDI]
    83. 00401581  NOT ECX
    84. 00401583  SUB EDI,ECX
    85. 00401585  PUSH EBX                                              ; /block
    86. 00401586  MOV EAX,ECX                                           ; |
    87. 00401588  MOV ESI,EDI                                           ; |
    88. 0040158A  MOV EDI,EDX                                           ; |
    89. 0040158C  SHR ECX,2                                             ; |
    90. 0040158F  REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]        ; |
    91. 00401591  MOV ECX,EAX                                           ; |
    92. 00401593  AND ECX,3                                             ; |
    93. 00401596  REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]          ; |
    94. 00401598  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    95. 0040159D  MOV ECX,DWORD PTR SS:[ESP+28]
    96. 004015A1  PUSH ECX                                              ; /block
    97. 004015A2  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    98. 004015A7  MOV EDI,EBP
    99. 004015A9  OR ECX,FFFFFFFF
    100. 004015AC  XOR EAX,EAX
    101. 004015AE  ADD ESP,10
    102. 004015B1  REPNE SCAS BYTE PTR ES:[EDI]
    103. 004015B3  NOT ECX
    104. 004015B5  DEC ECX
    105. 004015B6  CMP ECX,0C                                            ;  用户名长度为 0xC
    106. 004015B9  JE SHORT CrackMe.004015E6
    107. 004015BB  MOV ECX,DWORD PTR SS:[ESP+18]
    108. 004015BF  PUSH EAX
    109. 004015C0  LEA EDX,DWORD PTR SS:[ESP+28]
    110. 004015C4  PUSH EAX
    111. 004015C5  PUSH EDX
    112. 004015C6  CALL <JMP.&MFC42.#?MessageBoxA@CWnd@@QAEHPBD0I@Z_4224>
    113. 004015CB  PUSH EBP                                              ; /block
    114. 004015CC  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    115. 004015D1  MOV EAX,DWORD PTR SS:[ESP+24]
    116. 004015D5  PUSH EAX                                              ; /block
    117. 004015D6  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    118. 004015DB  ADD ESP,8
    119. 004015DE  POP EDI
    120. 004015DF  POP ESI
    121. 004015E0  POP EBP
    122. 004015E1  POP EBX
    123. 004015E2  ADD ESP,2C
    124. 004015E5  RETN
    125. 004015E6  LEA ECX,DWORD PTR SS:[ESP+2C]                         ;   T = (ASCII "yangbing1990")
    126. 004015EA  MOV EAX,EBP                                           ;  用户名
    127. 004015EC  SUB ECX,EBP
    128. 004015EE  MOV ESI,0C                                            ;  循环次数
    129. 004015F3  MOV DL,BYTE PTR DS:[ECX+EAX]                          ;  T[i]
    130. 004015F6  MOV BL,BYTE PTR DS:[EAX]                              ;  Name[i]
    131. 004015F8  ADD BL,DL                                             ;  T[i] + Name[i]
    132. 004015FA  MOV BYTE PTR DS:[EAX],BL                              ;  写回去
    133. 004015FC  INC EAX                                               ;  用户名下一位
    134. 004015FD  DEC ESI                                               ;  循环次数递减
    135. 004015FE  JNZ SHORT CrackMe.004015F3                            ;  是否循环完毕?
    136. 00401600  MOV EDI,DWORD PTR SS:[ESP+20]                         ;  循环完后得到key
    137. 00401604  MOV EAX,EBP                                           ;  key
    138. 00401606  MOV ECX,EDI                                           ;  sn(输入的假码)
    139. 00401608  MOV ESI,0C                                            ;  循环次数
    140. 0040160D  SUB ECX,EBP
    141. 0040160F  MOV DL,BYTE PTR DS:[EAX]                              ;  key[i]
    142. 00401611  MOV BL,BYTE PTR DS:[ECX+EAX]                          ;  sn[i]
    143. 00401614  CMP DL,BL                                             ;  逐字节比较
    144. 00401616  JNZ SHORT CrackMe.0040161C                            ;  game over!爆破点A!
    145. 00401618  INC DWORD PTR SS:[ESP+14]                             ;  成功则计数器+1
    146. 0040161C  INC EAX                                               ;  下一位
    147. 0040161D  DEC ESI                                               ;  循环次数递减
    148. 0040161E  JNZ SHORT CrackMe.0040160F                            ;  是否循环完毕?
    149. 00401620  MOV EAX,DWORD PTR SS:[ESP+14]                         ;  取计数器的值
    150. 00401624  PUSH 0
    151. 00401626  CMP EAX,0C                                            ;  如果计数器不等于0xC 则验证不成功~
    152. 00401629  PUSH 0
    153. 0040162B  JNZ SHORT CrackMe.00401634                            ;  game over! 爆破点B!
    154. 0040162D  LEA EAX,DWORD PTR SS:[ESP+18]                         ;  "Win"
    155. 00401631  PUSH EAX
    156. 00401632  JMP SHORT CrackMe.00401639
    157. 00401634  LEA ECX,DWORD PTR SS:[ESP+2C]                         ;  "Lost"
    158. 00401638  PUSH ECX
    159. 00401639  MOV ECX,DWORD PTR SS:[ESP+24]
    160. 0040163D  CALL <JMP.&MFC42.#?MessageBoxA@CWnd@@QAEHPBD0I@Z_4224>;  MessageBoxA
    161. 00401642  PUSH EBP                                              ; /block
    162. 00401643  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    163. 00401648  PUSH EDI                                              ; /block
    164. 00401649  CALL <JMP.&MFC42.#??3@YAXPAX@Z_825>                   ; \free
    165. 0040164E  ADD ESP,8
    166. 00401651  POP EDI
    167. 00401652  POP ESI
    168. 00401653  POP EBP
    169. 00401654  POP EBX
    170. 00401655  ADD ESP,2C
    171. 00401658  RETN
    复制代码
    注册机代码:
    1. //////////////////////////////////////////////////////////////////////////
    2. /************************************************************************/
    3. /* KeyGen.cpp                                                           */
    4. /* Code By PiaoYun[P.Y.G]                                               */
    5. /* WWW.CHINAPYG.COM                                                     */
    6. /* 2011-1-11                                                            */
    7. /************************************************************************/

    8. #include <windows.h>
    9. #include <iostream.h>

    10. void main()
    11. {
    12.         char szT[] = "yangbing1990";       
    13.         char szName[50] = {0};
    14.         char szKey[50] = {0};
    15.         cout<<"**************************\n";
    16.         cout<<"* Code By PiaoYun[P.Y.G] *\n";
    17.         cout<<"* web:www.chinapyg.com   *\n";
    18.         cout<<"* date:2011-1-11         *\n";
    19.         cout<<"**************************\n";
    20.         cout<<"请输入12位长度的用户名:\n";
    21.         cin>>szName;
    22.         int len = int(strlen(szName));
    23.         if(len!=0 && len==0xC)
    24.         {
    25.                 for(int i=0;i<len;i++)
    26.                 {
    27.                         szKey[i] = char(szName[i] + szT[i]);
    28.                 }
    29.                 cout<<"注册码为:"<<szKey<<endl;
    30.         }else
    31.         {
    32.                 cout<<"用户名长度不符合规则!"<<endl;
    33.         }
    34.         cout<<"***********************\n";
    35. }
    复制代码
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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