飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

楼主: 飘云

[推荐]今天写的一个CrackMe,很适合初学者!

[复制链接]
  • TA的每日心情

    2021-9-20 23:20
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-9-15 14:27:18 | 显示全部楼层
    哇。我师傅的是老大。东西。一定要看看。呵呵
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-23 16:34:54 | 显示全部楼层
     晕,逐位用户名ASCII码相加即是注册码~~老大,学习了~

    kine36
    528
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-26 22:20:28 | 显示全部楼层
    好久没来了,看看
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-27 23:18:25 | 显示全部楼层
    追码很容易,因为是明码,算法也很简单,貌似我以前做过类似的...
    很久么写破文都不会写了....
    玩了一会就出来了...


    1. qxtianlong
    2. 1093

    3. 载入OD,隐藏OD
    4. 设断点bp __vbaLenBstr、__vbaStrCmp、rtcMsgBox
    5. F9运行,输入qxtianlong,78787878后中断在

    6. 733B49CE MS>  8B4424 04         mov eax,dword ptr ss:[esp+4]

    7. 下方提示信息为

    8. 堆栈 ss:[0012F384]=00150C84, (UNICODE "qxtianlong")
    9. eax=00150C84, (UNICODE "qxtianlong")

    10. 然后F8继续跟进,注意这里

    11. 733B49D6      8B40 FC           mov eax,dword ptr ds:[eax-4]
    12. 733B49D9      D1E8              shr eax,1

    13. 他的功能是计算qxtianlong的长度(A)也就是10

    14. F8继续跟进到这里

    15. 004045F5      83F8 05           cmp eax,5
    16. 004045F8     /0F8D 85000000     jge crackme1.00404683

    17. 他的功能估计是看输入的为数是否大于5,大于就继续..(跳到00404683)否则-_-!

    18. 00404683      8B45 E4           mov eax,dword ptr ss:[ebp-1C]
    19. 00404686      50                push eax

    20. 在00404583看到ebp=0012F468、[ebp-1c]=0012F4FC中数值为00150C84
    21. 可以看到和前面的一样,也就是存放qxtianlong的地址
    22. push eax把00150C84压入堆栈0012F384

    23. 继续在这里看到

    24. 00404687      FFD6              call esi                                         ; MSVBVM60.__vbaLenBstr

    25. 这里应该也是计算字符串长度的..

    26. 00404689      8BC8              mov ecx,eax

    27. 把EAX中的值送到ECX中(ECX=A)

    28. 0040468B      FF15 50104000     call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]        ; MSVBVM60.__vbaI2I4
    29. 00404691      8B1D 14104000     mov ebx,dword ptr ds:[<&MSVBVM60.__vbaFreeVarLis>; MSVBVM60.__vbaFreeVarList

    30. 这里估计就该那用户名做手脚了,跟进CALL看看,free根据字眼来看应该是释放东西用的...

    31. 跟进后到

    32. 733B49DE MS>  56                push esi
    33. 733B49DF      8BF1              mov esi,ecx
    34. 733B49E1      0FBFC6            movsx eax,si
    35. 733B49E4      3BC6              cmp eax,esi
    36. 733B49E6      0F85 3D1F0200     jnz MSVBVM60.733D6929
    37. 733B49EC      66:8BC6           mov ax,si
    38. 733B49EF      5E                pop esi
    39. 733B49F0      C3                retn

    40. push esi 函数地址压栈
    41. 0012F380   733B49CE        MSVBVM60.__vbaLenBstr
    42. mov esi,ecx
    43. 是把ECX中的值送到ESI(A)也就是10
    44. movsx eax,si
    45. cmp eax,esi
    46. 比较eax,esi,不等则跳..
    47. mov ax,si
    48. pop esi从堆栈弹出函数地址到ESI

    49. 返回后把ds:[00401014]=73491073 (MSVBVM60.__vbaFreeVarList)送到ebx(ebx=73491073)

    50. 00404697      8985 3CFFFFFF     mov dword ptr ss:[ebp-C4],eax
    51. eax中的值放到ebp-c4(12f3c4)值为(A)
    52. 0040469D      BE 01000000       mov esi,1
    53. 004046A2      66:3BB5 3CFFFFFF  cmp si,word ptr ss:[ebp-C4]
    54. si和ebp-c4比较
    55. 004046A9     /0F8F 82000000     jg crackme1.00404731
    56. 大于就跳
    57. 004046AF      8D4D E4           lea ecx,dword ptr ss:[ebp-1C]
    58. 004046B2      8D55 C0           lea edx,dword ptr ss:[ebp-40]
    59. ecx=0012f44c edx=0012f428
    60. 004046B5      0FBFC6            movsx eax,si
    61. eax=1
    62. 004046B8      894D 88           mov dword ptr ss:[ebp-78],ecx
    63. ecx送到ebp-78
    64. 0012F3F0  0012F44C

    65. 004046BB      52                push edx
    66. 004046BC      8D4D 80           lea ecx,dword ptr ss:[ebp-80]
    67. ecx=0012f3e8
    68. 004046BF      50                push eax
    69. 004046C0      8D55 B0           lea edx,dword ptr ss:[ebp-50]
    70. edx=0012f418
    71. 004046C3      51                push ecx
    72. 004046C4      52                push edx

    73. 004046C5      C745 C8 04000280  mov dword ptr ss:[ebp-38],80020004
    74. 004046CC      C745 C0 0A000000  mov dword ptr ss:[ebp-40],0A
    75. 004046D3      C745 80 08400000  mov dword ptr ss:[ebp-80],4008

    76. ebp-38  0012F430  80020004
    77. ebp-40  0012F428  0000000A
    78. ebp-80  0012F3E8  00004008

    79. 004046DA      FF15 40104000     call dword ptr ds:[<&MSVBVM60.#632>]             ; MSVBVM60.rtcMidCharVar

    80. 跟进

    81. 7347B403 MS>  55                push ebp
    82. 7347B404      8BEC              mov ebp,esp
    83. 7347B406      83EC 10           sub esp,10
    84. 7347B409      56                push esi    1
    85. 7347B40A      57                push edi    0
    86. 7347B40B      FF35 C00E4A73     push dword ptr ds:[734A0EC0]    10
    87. 7347B411      FF15 B8103973     call dword ptr ds:[<&KERNEL32.TlsGetValue>]      ; kernel32.TlsGetValue
    88. 7347B417      8D70 50           lea esi,dword ptr ds:[eax+50]
    89. 7347B41A      56                push esi
    90. 7347B41B      FF75 0C           push dword ptr ss:[ebp+C]
    91. 7347B41E      E8 5096F3FF       call MSVBVM60.733B4A73
    92. 7347B423      83F8 FF           cmp eax,-1
    93. 7347B426      74 3A             je short MSVBVM60.7347B462
    94. 7347B428      FF75 14           push dword ptr ss:[ebp+14]
    95. 7347B42B      FF75 10           push dword ptr ss:[ebp+10]
    96. 7347B42E      50                push eax
    97. 7347B42F      E8 AB94F3FF       call MSVBVM60.rtcMidCharBstr

    98. ...................................
    99. ...................................
    100. ...................................
    101. ...................................

    102. 004046E8      FF15 74104000     call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ; MSVBVM60.__vbaStrVarVal
    103. 004046EE      50                push eax
    104. 004046EF      FF15 0C104000     call dword ptr ds:[<&MSVBVM60.#693>]             ; MSVBVM60.rtcByteValueBstr  
    105. 取第一个字母的ASC码值71
    106. 004046F5      25 FF000000       and eax,0FF
    107. 004046FA      8D4D D8           lea ecx,dword ptr ss:[ebp-28]
    108. 004046FD      03C7              add eax,edi
    109. 004046FF     /0F80 04020000     jo crackme1.00404909
    110. 00404705      8BF8              mov edi,eax
    111. edi=71
    112. 00404707      FF15 B8104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ; MSVBVM60.__vbaFreeStr
    113. ...............
    114. ...............
    115. ...............
    116. 00404719      B8 01000000       mov eax,1
    117. 0040471E      83C4 0C           add esp,0C
    118. 00404721      66:03C6           add ax,si
    119. SI作为计数器
    120. ..........................
    121. ..........................
    122. ..........................

    123. 以下这段是循环以上功能

    124. 004046A2      66:3BB5 3CFFFFFF  cmp si,word ptr ss:[ebp-C4]
    125. 004046A9      0F8F 82000000     jg crackme1.00404731
    126. 004046AF      8D4D E4           lea ecx,dword ptr ss:[ebp-1C]
    127. 004046B2      8D55 C0           lea edx,dword ptr ss:[ebp-40]
    128. 004046B5      0FBFC6            movsx eax,si
    129. 004046B8      894D 88           mov dword ptr ss:[ebp-78],ecx
    130. 004046BB      52                push edx
    131. 004046BC      8D4D 80           lea ecx,dword ptr ss:[ebp-80]
    132. 004046BF      50                push eax
    133. 004046C0      8D55 B0           lea edx,dword ptr ss:[ebp-50]
    134. 004046C3      51                push ecx
    135. 004046C4      52                push edx
    136. 004046C5      C745 C8 04000280  mov dword ptr ss:[ebp-38],80020004
    137. 004046CC      C745 C0 0A000000  mov dword ptr ss:[ebp-40],0A
    138. 004046D3      C745 80 08400000  mov dword ptr ss:[ebp-80],4008
    139. 004046DA      FF15 40104000     call dword ptr ds:[<&MSVBVM60.#632>]             ; MSVBVM60.rtcMidCharVar
    140. 004046E0      8D45 B0           lea eax,dword ptr ss:[ebp-50]
    141. 004046E3      8D4D D8           lea ecx,dword ptr ss:[ebp-28]
    142. 004046E6      50                push eax
    143. 004046E7      51                push ecx
    144. 004046E8      FF15 74104000     call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ; MSVBVM60.__vbaStrVarVal
    145. 004046EE      50                push eax
    146. 004046EF      FF15 0C104000     call dword ptr ds:[<&MSVBVM60.#693>]             ; MSVBVM60.rtcByteValueBstr
    147. 004046F5      25 FF000000       and eax,0FF
    148. 004046FA      8D4D D8           lea ecx,dword ptr ss:[ebp-28]
    149. 004046FD      03C7              add eax,edi
    150. 004046FF      0F80 04020000     jo crackme1.00404909
    151. 00404705      8BF8              mov edi,eax
    152. 00404707      FF15 B8104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ; MSVBVM60.__vbaFreeStr
    153. 0040470D      8D55 B0           lea edx,dword ptr ss:[ebp-50]
    154. 00404710      8D45 C0           lea eax,dword ptr ss:[ebp-40]
    155. 00404713      52                push edx
    156. 00404714      50                push eax
    157. 00404715      6A 02             push 2
    158. 00404717      FFD3              call ebx
    159. 00404719      B8 01000000       mov eax,1
    160. 0040471E      83C4 0C           add esp,0C
    161. 00404721      66:03C6           add ax,si
    162. 00404724      0F80 DF010000     jo crackme1.00404909
    163. 0040472A      8BF0              mov esi,eax
    164. 0040472C    ^ E9 71FFFFFF       jmp crackme1.004046A2

    165. 当条件成立时,调到

    166. 00404731      8B45 08           mov eax,dword ptr ss:[ebp+8]

    167. 此时EDI为445

    168. 00404768      50                push eax
    169. 00404769      FF15 24104000     call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>; MSVBVM60.__vbaHresultCheckObj
    170. 0040476F      57                push edi
    171. 00404770      FF15 08104000     call dword ptr ds:[<&MSVBVM60.__vbaStrI4>]       ; MSVBVM60.__vbaStrI4
    172. 这里注意一下
    173. 00404776      8BD0              mov edx,eax

    174. 在00404770时已经可以看到注册码了

    175. 00404776      8BD0              mov edx,eax
    176. 00404778      8D4D D4           lea ecx,dword ptr ss:[ebp-2C]
    177. 0040477B      FF15 A4104000     call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]     ; MSVBVM60.__vbaStrMove
    178. 00404781      8B55 D8           mov edx,dword ptr ss:[ebp-28]
    179. 00404784      50                push eax    正确注册码
    180. 00404785      52                push edx    试练码
    181. 00404786      FF15 4C104000     call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]      ; MSVBVM60.__vbaStrCmp
    182. 比较

    183.                                                                                           完结  于2006/09/27
    复制代码
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-27 23:46:47 | 显示全部楼层
    楼上的,有那么长吗,程序是把你输入的用户名累加为结果 ,看下面代码

    004046EF    FF15 0C104000   CALL DWORD PTR DS:[<&MSVBVM60.#693>]       ; 这个 CALL 每次抽取用户名字符送入 EAX
    004046F5    25 FF000000     AND EAX,0FF
    004046FA    8D4D D8         LEA ECX,DWORD PTR SS:[EBP-28]
    004046FD    03C7            ADD EAX,EDI                                ; 累加
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-28 08:30:32 | 显示全部楼层
    呵呵,楼上的,你那个只是用户名的16进制相加后的数,如果你向后追,虽然也能直接看到10进制的值,但是具体怎么换算的,你就没有追了,如果你追一下,会发现很有意思的....
    我只是看了看他是如何换算成10进制的而已...;)
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-4-19 21:06
  • 签到天数: 61 天

    [LV.6]常住居民II

    发表于 2006-10-4 22:01:02 | 显示全部楼层
    学习一下,谢谢
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-12-31 20:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-10-7 07:35:53 | 显示全部楼层
    呵呵,正好俺是初学者,谢谢坛主啊!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-27 15:18
  • 签到天数: 205 天

    [LV.7]常住居民III

    发表于 2006-10-7 19:57:52 | 显示全部楼层
    老办法破的,算法不太懂,呵呵

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-10-25 22:34:09 | 显示全部楼层
    我只会爆,哎!


    明码比较也能跟出来:
      iceknife         830




    可惜不会分析!哪个老大来点容易懂的教程!

    [ 本帖最后由 正在堕落 于 2006-10-25 22:37 编辑 ]
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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