飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

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

[原创] 简单脱双层壳+注册机编写CrackMe分析(高手路过)

[复制链接]

该用户从未签到

发表于 2008-2-25 21:41:02 | 显示全部楼层
学习

菜鸟,请教

我我用自动脱壳机 脱掉 Armadillo  3.78-4.xx 的 说成功后 请问下步如何办?
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-22 09:44:18 | 显示全部楼层

回复 1# 的帖子

高..实在是高!!!/:012
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-23 13:20:09 | 显示全部楼层
我追到注册码了
哈哈,用户名:unpack
注册码:630999170928464232629205790

算法我是这么认为的,分为四部分,中间直接相连,不要用其他什么符号。
像我的就是63099--第二次算的,作为注册码的第一部分;9170928---第三次算的,作为注册码的第二部分;4642326---第一次算的,作为注册码的第三部分;9205790--第四次算的,作为注册码的第四部分。但是我在跟第四算法是还是没有搞明白,把我的不完全算法发上:
  1. 004015A6    53              push    ebx
  2. 004015A7    55              push    ebp
  3. 004015A8    56              push    esi
  4. 004015A9    57              push    edi
  5. 004015AA    8BD9            mov     ebx, ecx
  6. 004015AC    6A 01           push    1
  7. 004015AE    895C24 18       mov     [esp+18], ebx
  8. 004015B2    E8 59040000     call    <jmp.&mfc42.#6334>
  9. 004015B7    8B53 60         mov     edx, [ebx+60]
  10. 004015BA    83C9 FF         or      ecx, FFFFFFFF
  11. 004015BD    8BFA            mov     edi, edx
  12. 004015BF    33C0            xor     eax, eax
  13. 004015C1    F2:AE           repne   scas byte ptr es:[edi]
  14. 004015C3    F7D1            not     ecx
  15. 004015C5    2BF9            sub     edi, ecx
  16. 004015C7    8DAC24 44010000 lea     ebp, [esp+144]
  17. 004015CE    8BC1            mov     eax, ecx
  18. 004015D0    8BF7            mov     esi, edi
  19. 004015D2    8BFD            mov     edi, ebp
  20. 004015D4    8B52 F8         mov     edx, [edx-8]                     ; 用户名长度等于edx
  21. 004015D7    C1E9 02         shr     ecx, 2
  22. 004015DA    F3:A5           rep     movs dword ptr es:[edi], dword p>
  23. 004015DC    8BC8            mov     ecx, eax
  24. 004015DE    83E1 03         and     ecx, 3
  25. 004015E1    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
  26. 004015E3    0FBEB424 440100>movsx   esi, byte ptr [esp+144]          ; 用户名的第一位的十六进制给esi
  27. 004015EB    85D2            test    edx, edx
  28. 004015ED    75 1D           jnz     short 0040160C
  29. 004015EF    52              push    edx
  30. 004015F0    68 44304000     push    00403044                         ; 提示
  31. 004015F5    68 34304000     push    00403034                         ; 请输入完整信息!
  32. 004015FA    8BCB            mov     ecx, ebx
  33. 004015FC    E8 09040000     call    <jmp.&mfc42.#4224>
  34. 00401601    5F              pop     edi
  35. 00401602    5E              pop     esi
  36. 00401603    5D              pop     ebp
  37. 00401604    5B              pop     ebx
  38. 00401605    81C4 FC010000   add     esp, 1FC
  39. 0040160B    C3              retn
  40. 0040160C    8BC2            mov     eax, edx                         ; 把用户名长度edx给eax
  41. 0040160E    6A 0A           push    0A
  42. 00401610    0FAFC6          imul    eax, esi                         ; 用户名第一位与长度相乘(75(u)*6=2BE)
  43. 00401613    8BC8            mov     ecx, eax                         ; ecx=eax=2BE
  44. 00401615    8B3D D0214000   mov     edi, [<&msvcrt.#353>]            ; msvcrt._itoa
  45. 0040161B    C1E1 04         shl     ecx, 4                           ; ecx左移四个字符,相当于十六进制左移一位,也就是乘以十,即2BE左移得到2BE0
  46. 0040161E    03C8            add     ecx, eax                         ; ecx=ecx+eax=2BE0+2BE=2E9E
  47. 00401620    8D0C88          lea     ecx, [eax+ecx*4]                 ; ecx=ecx+ecx*4=BD36
  48. 00401623    C1E1 03         shl     ecx, 3                           ; ecx*8=5E9B0
  49. 00401626    2BC8            sub     ecx, eax                         ; ecx=ecx-eax=5E9B0-2BE=5E6F2
  50. 00401628    8D0C49          lea     ecx, [ecx+ecx*2]                 ; ecx=ecx+ecx*2=ecx*3=11B4D6
  51. 0040162B    8D1C88          lea     ebx, [eax+ecx*4]                 ; ebx=eax+ecx*4=46D616(到后面用作注册码第三部分相连)
  52. 注明:这是第一次算的的ebx,但是没有压栈,后面压栈的时候就做为注册码的第三部分。
  53. --------------------------------------------------------------------------------------------------------
  54. 0040162E    8D8424 AC010000 lea     eax, [esp+1AC]                   ; eax=esp+1AC=13F6A8+1AC=13F854
  55. 00401635    50              push    eax
  56. 00401636    8D0492          lea     eax, [edx+edx*4]                 ; eax=edx*5=6*5=1E
  57. 00401639    C1E0 04         shl     eax, 4                           ; eax*10=1E0
  58. 0040163C    2BC2            sub     eax, edx                         ; eax=eax-edx=1E0-6=1DA
  59. 0040163E    8D0C46          lea     ecx, [esi+eax*2]                 ; ecx=(u)75+eax*2=429
  60. 00401641    03C1            add     eax, ecx                         ; eax=eax+ecx=1DA+429=603
  61. 00401643    8D1480          lea     edx, [eax+eax*4]                 ; edx=eax*5=603*5=1E0F
  62. 00401646    8D04D0          lea     eax, [eax+edx*8]                 ; eax=eax+edx*8=eax*(1+5*8)=eax*(1+28)=F67B(二进制为63099做注册码的起始)
  63. 这是第二次算的,作为注册码的第一部分
  64. --------------------------------------------------------------------------------------------------------

  65. 00401649    50              push    eax
  66. 0040164A    FFD7            call    edi
  67. 0040164C    8D04B6          lea     eax, [esi+esi*4]                 ; eax=esi*5=249
  68. 0040164F    8D8C24 EC000000 lea     ecx, [esp+EC]                    ; ecx=esp+EC=13F6A0+EC=13F78C
  69. 00401656    6A 0A           push    0A
  70. 00401658    51              push    ecx
  71. 00401659    8D1480          lea     edx, [eax+eax*4]                 ; edx=eax*5=249*5=B6D
  72. 0040165C    8D0456          lea     eax, [esi+edx*2]                 ; eax=esi+edx*2=(u)75+B6D*2=174F
  73. 0040165F    C1E0 05         shl     eax, 5                           ; eax=eax*20=2E9E0
  74. 00401662    03C6            add     eax, esi                         ; eax=eax+75=2E9E0+(u)75=2EA55
  75. 00401664    8D0440          lea     eax, [eax+eax*2]                 ; eax=eax+eax*2=eax*3=8BEFF
  76. 00401667    C1E0 04         shl     eax, 4                           ; eax=eax*10=8BEFF0(二进制为9170928连在上面的注册码之后)
  77. 这是第三次算的,作为注册码的第二部分!
  78. --------------------------------------------------------------------------------------------------------
  79. 0040166A    50              push    eax
  80. 0040166B    FFD7            call    edi
  81. 0040166D    8D8C24 94000000 lea     ecx, [esp+94]                    ; ecx=esp+94=13F694+94=13F728
  82. 00401674    6A 0A           push    0A
  83. 00401676    51              push    ecx
  84. 00401677    53              push    ebx                              ; ebx的值的二进制作为注册码的第三部分压栈(46D616=二进制4642326)
  85. 这个地方才把ebx压栈,作为注册码的第三部分!
  86. ------------------------------------------------------------------------------------------
  87. 00401678    FFD7            call    edi
  88. 0040167A    81C3 20170000   add     ebx, 1720                        ; ebx=ebx+1720=46D616+1720=46ED36
  89. 00401680    8D5424 3C       lea     edx, [esp+3C]                    ; edx=esp+3C=13F688+3C=13F6C4
  90. 00401684    895C24 34       mov     [esp+34], ebx
  91. 00401688    6A 0A           push    0A
  92. 0040168A    DB4424 38       fild    dword ptr [esp+38]               ; 装入整数到st(0)
  93. 0040168E    52              push    edx
  94. 0040168F    DC0D 38254000   fmul    qword ptr [402538]               ; 乘上一个实数
  95. 00401695    E8 D6030000     call    <jmp.&msvcrt.#281>               //这个跟进去后,然后出来,eax变成下面的1BDA51E,这个地方很是不懂!!!!!
  96. 0040169A    50              push    eax                              ; 把eax=1BDA51E压栈

  97. 这个地方把eax压栈,作为注册码的第四部分,但是没有搞清楚怎么得到的!
  98. -------------------------------------------------------------------------------------
  99. 0040169B    FFD7            call    edi
  100. 0040169D    8D7C24 48       lea     edi, [esp+48]
  101. 004016A1    83C9 FF         or      ecx, FFFFFFFF                    ; ecx值不变为13F6C7
  102. 004016A4    33C0            xor     eax, eax                         ; eax清零
  103. 004016A6    8D9424 AC000000 lea     edx, [esp+AC]
  104. 004016AD    F2:AE           repne   scas byte ptr es:[edi]
  105. 004016AF    F7D1            not     ecx
  106. 004016B1    2BF9            sub     edi, ecx
  107. 004016B3    8BF7            mov     esi, edi
  108. 004016B5    8BD9            mov     ebx, ecx
  109. 004016B7    8BFA            mov     edi, edx
  110. 004016B9    83C9 FF         or      ecx, FFFFFFFF
  111. 004016BC    F2:AE           repne   scas byte ptr es:[edi]
  112. 004016BE    8BCB            mov     ecx, ebx
  113. 004016C0    4F              dec     edi
  114. 004016C1    C1E9 02         shr     ecx, 2
  115. 004016C4    F3:A5           rep     movs dword ptr es:[edi], dword p>
  116. 004016C6    8BCB            mov     ecx, ebx
  117. 004016C8    8D9C24 D8010000 lea     ebx, [esp+1D8]
  118. 004016CF    83E1 03         and     ecx, 3
  119. 004016D2    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
  120. 004016D4    8DBC24 10010000 lea     edi, [esp+110]
  121. 004016DB    83C9 FF         or      ecx, FFFFFFFF
  122. 004016DE    F2:AE           repne   scas byte ptr es:[edi]
  123. 004016E0    F7D1            not     ecx
  124. 004016E2    2BF9            sub     edi, ecx
  125. 004016E4    8BF7            mov     esi, edi
  126. 004016E6    8BE9            mov     ebp, ecx
  127. 004016E8    8BFB            mov     edi, ebx
  128. 004016EA    83C9 FF         or      ecx, FFFFFFFF
  129. 004016ED    F2:AE           repne   scas byte ptr es:[edi]
  130. 004016EF    4F              dec     edi
  131. 004016F0    8BCD            mov     ecx, ebp
  132. 004016F2    C1E9 02         shr     ecx, 2
  133. 004016F5    F3:A5           rep     movs dword ptr es:[edi], dword p>
  134. 004016F7    8BCD            mov     ecx, ebp
  135. 004016F9    83E1 03         and     ecx, 3
  136. 004016FC    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
  137. 004016FE    8BFA            mov     edi, edx
  138. 00401700    83C9 FF         or      ecx, FFFFFFFF
  139. 00401703    F2:AE           repne   scas byte ptr es:[edi]
  140. 00401705    F7D1            not     ecx
  141. 00401707    2BF9            sub     edi, ecx
  142. 00401709    8BF7            mov     esi, edi
  143. 0040170B    8BFB            mov     edi, ebx
  144. 0040170D    8BE9            mov     ebp, ecx
  145. 0040170F    8BD7            mov     edx, edi
  146. 00401711    83C9 FF         or      ecx, FFFFFFFF
  147. 00401714    52              push    edx
  148. 00401715    F2:AE           repne   scas byte ptr es:[edi]
  149. 00401717    8BCD            mov     ecx, ebp
  150. 00401719    4F              dec     edi
  151. 0040171A    C1E9 02         shr     ecx, 2
  152. 0040171D    F3:A5           rep     movs dword ptr es:[edi], dword p>
  153. 0040171F    8BCD            mov     ecx, ebp
  154. 00401721    83E1 03         and     ecx, 3
  155. 00401724    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
  156. 00401726    8B7424 48       mov     esi, [esp+48]
  157. 0040172A    8B46 64         mov     eax, [esi+64]
  158. 0040172D    50              push    eax
  159. 0040172E    FF15 C4214000   call    [<&msvcrt.#391>]                 ; (initial cpu selection)
  160. 00401734    83C4 38         add     esp, 38
  161. 00401737    85C0            test    eax, eax
  162. 00401739    75 12           jnz     short 0040174D
  163. 0040173B    50              push    eax
  164. 0040173C    68 2C304000     push    0040302C                         ; 恭喜
  165. 00401741    68 20304000     push    00403020                         ; 注册成功!
  166. 00401746    8BCE            mov     ecx, esi
  167. 00401748    E8 BD020000     call    <jmp.&mfc42.#4224>
  168. 0040174D    6A 00           push    0
  169. 0040174F    8BCE            mov     ecx, esi
  170. 00401751    E8 BA020000     call    <jmp.&mfc42.#6334>
  171. 00401756    5F              pop     edi
  172. 00401757    5E              pop     esi
  173. 00401758    5D              pop     ebp
  174. 00401759    5B              pop     ebx
  175. 0040175A    81C4 FC010000   add     esp, 1FC
  176. 00401760    C3              retn
复制代码
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-23 13:34:23 | 显示全部楼层
00401739    75 12           jnz     short 0040174D
这个地方我以为可以爆破,改成jz
但是当我再次输入用户名:unpack,假码:123456时,却注册不了,用真码当然不能注册成功了,但奇怪的是我把假码换成654321居然成功了,而且与真正的注册成功的样子不一样
截图如下:
改过的用反过来的假码注册的样子



没有改,追码注册得到的:

本帖子中包含更多资源

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

x
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-8 16:54:57 | 显示全部楼层
????这是怎么回事 啊  我和楼上兄弟一样状况
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-1-15 13:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-4-30 10:31:10 | 显示全部楼层
    OD载入
    查找字符串。注册成功。
    来到这里
    0040172E    FF15 C4214000   call    dword ptr [<&msvcrt._mbscmp>] ; msvcrt._mbscmp 进行比较
    00401734    83C4 38         add     esp, 38
    00401737    85C0            test    eax, eax
    00401739    75 12           jnz     short 0040174D
    0040173B    50              push    eax
    0040173C    68 2C304000     push    0040302C                         ; 恭喜
    00401741    68 20304000     push    00403020                         ; 注册成功!
    00401746    8BCE            mov     ecx, esi
    分析
    0040172E    FF15 C4214000   call    dword ptr [<&msvcrt._mbscmp>] ; msvcrt._mbscmp 这里进行字符串比较。在这里下断即可拦截。
    于是输入假码。出现
    0012F670   00000000
    0012F674   00383AC0 |s1 = "123456"
    0012F678   0012F854 \s2 = "429687838400264520016657477"-----------真码
    测试注册成功。
    0040172E    FF15 C4214000   call    这里进行内存注册机的CALL

    退出时候有个提示窗口。去掉它

    004017C0    56              push    esi
    004017C1    6A FF           push    0    ---------------------0改-1即可去掉
    004017C3    68 60304000     push    00403060                         ; 55555
    004017C8    8BF1            mov     esi, ecx
    004017CA    68 4C304000     push    0040304C                         ; 不想玩还是没耐心?
    004017CF    E8 36020000     call    <jmp.&mfc42.#4224>
    可惜算法不会
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-5-3 15:00:39 | 显示全部楼层
    下载下来好好研究一下。
    PYG19周年生日快乐!
  • TA的每日心情

    2021-7-27 16:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-5-15 12:38:14 | 显示全部楼层
    学习中,关于网络验证的希望有多一点教程啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-3 20:05:16 | 显示全部楼层
    下载来研究下 嘿嘿 一起学习!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-10 23:40:09 | 显示全部楼层
    kelvar
    626898387088424554626712748
    脱壳也比较好脱
    运行一步F8后看到
    popfd
    popad
    直接查找
    popad
    popfd
    找到后直接在popfd上F2下断,断下来后F8一步直接到达
    Upx壳的入口点
    然后ESP定律
    很快找到脱壳点
    接下来破解
    明码比较比较方便破解
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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