飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7116|回复: 10

PYG 5.4 Cracker 小组 课外练习11

[复制链接]

该用户从未签到

发表于 2006-5-22 10:06:14 | 显示全部楼层 |阅读模式
再来个crackme 大家练练手

逍遥大哥看了 请置顶啊


要求
1)爆破
2)追码
3)内存注册机
4)算法分析(选做)
练习的目的只在于巩固学习成果.
希望大家积极相互交流相.互讨论.

本帖子中包含更多资源

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

x
PYG19周年生日快乐!

该用户从未签到

发表于 2006-5-22 15:00:23 | 显示全部楼层
爆破后追码:victory:

本帖子中包含更多资源

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

x
PYG19周年生日快乐!
  • TA的每日心情
    难过
    2016-9-22 16:32
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2006-5-22 20:59:53 | 显示全部楼层
    0040110C    0FBE840D 48FFFF>movsx eax,byte ptr ss:[ebp+ecx-B8]   //依次取用户名 保存在eax
    00401114    41              inc ecx                              //ecx为计数器
    00401115    33C1            xor eax,ecx                          // eax=eax xor ecx
    00401117    03D8            add ebx,eax                           //结果 累加到在ebx 我这里最后是2A5
    00401119    3B4D D8         cmp ecx,dword ptr ss:[ebp-28]         //比较用户名是否取完
    0040111C  ^ 75 EE           jnz short k4n.0040110C               
    0040111E    6BC0 06         imul eax,eax,6                        //最后一次的结果*6 7f*6=2FA
    00401121    C1E3 07         shl ebx,7                             //2a5左移7位 得 15280
    00401124    03C3            add eax,ebx                           //eax=eax+ebx  15280+2fA=1557A
    00401126    8945 C8         mov dword ptr ss:[ebp-38],eax
    00401129    FF75 C8         push dword ptr ss:[ebp-38]
    0040112C    68 38B44000     push k4n.0040B438                    ; %lx
    00401131    8D8D 80FEFFFF   lea ecx,dword ptr ss:[ebp-180]         
    00401137    51              push ecx
    00401138    E8 873D0000     call k4n.00404EC4                      //将计算结果1557A转换位字符串"1557A"
    0040113D    83C4 0C         add esp,0C
    00401140    8D85 80FEFFFF   lea eax,dword ptr ss:[ebp-180]         //取得假码:87654321
    00401146    50              push eax                               //假码入栈
    00401147    8D95 E4FEFFFF   lea edx,dword ptr ss:[ebp-11C]        //取得刚计算得真码 1557A
    0040114D    52              push edx                              //真码入栈  ==>>内存注册机
    0040114E    E8 339C0000     call <jmp.&KERNEL32.lstrcmpA>        //关键比较
    00401153    85C0            test eax,eax
    00401155    75 0D           jnz short k4n.00401164              //75==>>74爆破
    00401157    68 3CB44000     push k4n.0040B43C                    ; congratulations! if this number comes *from your* keygen, write a tutorial dude ;).
    0040115C    56              push esi
    0040115D    E8 289B0000     call <jmp.&USER32.SetWindowTextA>
    00401162    EB 18           jmp short k4n.0040117C
    00401164    68 90B44000     push k4n.0040B490                    ; this serial is *not* valid!! try again... : unregistered
    00401169    56              push esi
    0040116A    E8 1B9B0000     call <jmp.&USER32.SetWindowTextA>
    0040116F    EB 0B           jmp short k4n.0040117C
    00401171    68 C9B44000     push k4n.0040B4C9                    ; name must contain more than 4 chars and less than 50 chars !!
    00401176    56              push esi
    00401177    E8 0E9B0000     call <jmp.&USER32.SetWindowTextA>

    因为用到了左移,而我只会vb(狂汗中.......)

    算法总结:

       1.依次取用户名的asi码 与它所在的位置的序号做xor 运算,累加.并乘以6.记位A
       2.将用户名的最后一个字的asi码 左移7位.记位B
       3.注册码= A+B

    一组可用注册码:

      Name:hczcyy
      Code:1557A
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-5-22 21:16:29 | 显示全部楼层
    原帖由 fantasy 于 2006-5-22 10:06 发表
    再来个crackme 大家练练手

    逍遥大哥看了 请置顶啊


    要求
    1)爆破
    2)追码
    3)内存注册机
    4)算法分析(选做)
    练习的目的只在于巩固学习成果.
    希望大家积极相互交流相.互讨论.


    谢谢fantasy!

    东东好多。进步多多。

    更欢迎大家多多共享一此crackme来玩!
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-5-22 23:42:02 | 显示全部楼层
    分析的不错 ~~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-26 15:05:23 | 显示全部楼层
    内存注册机  见笑了

    [ 本帖最后由 vacant 于 2006-5-26 15:07 编辑 ]

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-11-6 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-6-7 11:22:41 | 显示全部楼层
    xhwxhw        

    15B26
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-7-4 02:39:25 | 显示全部楼层
    又一个哦~~~

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-7-26 03:25:06 | 显示全部楼层
    【文章标题】: 一个适合新手的crackme算法分析
    【文章作者】: 网游难民
    【作者邮箱】: goqq2008
    【软件名称】: k4n
    【软件大小】: 60.0
    【下载地址】: 本地下载
    【加壳方式】: 无
    【保护方式】: 注册码
    【编写语言】: Borland C++ [Overlay]
    【使用工具】: OD
    【操作平台】: winxp
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      一,用PEID查壳为Borland C++ [Overlay]无壳。
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++
      二,运行软件,注册窗口进行注册,输入错误的注册信息进行检测!软件有尾巴!
       提示说:“This serial is *NOT* Valid!! Try again... : UNREGISTERED”
      用OD载入,右键超级字串查找,找到"This serial is *NOT* Valid!! Try again... : UNREGISTERED",双击进入程序代码段,往上查找,在一个合适的地方下断。
      然后运行程序,输入注册名和注册码,程序成功被断了下来,断在这里:
      00401108  |.  90            NOP-------------------------------------程序被断在这里。
      00401109  |.  90            NOP
      0040110A  |.  90            NOP
      0040110B  |.  90            NOP
      0040110C  |>  0FBE840D 48FF>/MOVSX EAX,BYTE PTR SS:[EBP+ECX-B8]-----把用户名的第一位ASCII码送入EAX
      00401114  |.  41            |INC ECX--------------------------------ECX加1,初值为0。
      00401115  |.  33C1          |XOR EAX,ECX----------------------------EAX和ECX进行逻辑异或运算。值保存在EAX中。
      00401117  |.  03D8          |ADD EBX,EAX----------------------------EAX和EBX相加,值放在EBX中。
      00401119  |.  3B4D D8       |CMP ECX,DWORD PTR SS:[EBP-28]----------SS:[EBP-28]里的值和ECX相比较。
      0040111C  |.^ 75 EE         \JNZ SHORT k4n.0040110C-----------------这里是一个循环,求的用户名第一位ASCII码XOR1,第二位用户名ASCII码XOR2~~~~~~~一直到最后一位的和放入EBX,记为A,
      0040111E  |.  6BC0 06       IMUL EAX,EAX,6--------------------------EAX*6,也就是说 最后一位用户名XOR用户名位数 的值乘6,值记为B。
      00401121  |.  C1E3 07       SHL EBX,7-------------------------------EBX左移7位,也就是A左移7位。值放入EBX,值记为C。
      00401124  |.  03C3          ADD EAX,EBX-----------------------------EAX和EBX相加,即A+C,值放入EAX中,记为D。
      00401126  |.  8945 C8       MOV DWORD PTR SS:[EBP-38],EAX
      00401129  |.  FF75 C8       PUSH DWORD PTR SS:[EBP-38]               ; /Arg3
      0040112C  |.  68 38B44000   PUSH k4n.0040B438                        ; |%lx
      00401131  |.  8D8D 80FEFFFF LEA ECX,DWORD PTR SS:[EBP-180]           ; |
      00401137  |.  51            PUSH ECX                                 ; |Arg1
      00401138  |.  E8 873D0000   CALL k4n.00404EC4                        ; \k4n.00404EC4
      0040113D  |.  83C4 0C       ADD ESP,0C
      00401140  |.  8D85 80FEFFFF LEA EAX,DWORD PTR SS:[EBP-180]
      00401146  |.  50            PUSH EAX                                 ; /String2
      00401147  |.  8D95 E4FEFFFF LEA EDX,DWORD PTR SS:[EBP-11C]-----------我们的注册码放入EDX
      0040114D  |.  52            PUSH EDX                                 ; |String1
      0040114E  |.  E8 339C0000   CALL <JMP.&KERNEL32.lstrcmpA> -----------关键CALL,我们的注册码和D相比较,相等返回0,不相等返回1,值放入EAX中,即D即为真码。
      00401153  |.  85C0          TEST EAX,EAX
      00401155  |.  75 0D         JNZ SHORT k4n.00401164-------------------关键跳转,可以在此爆破。
      00401157  |.  68 3CB44000   PUSH k4n.0040B43C                        ; /congratulations! if this number comes *from your* keygen, write a tutorial dude ;).
      0040115C  |.  56            PUSH ESI                                 ; |hWnd
      0040115D  |.  E8 289B0000   CALL <JMP.&USER32.SetWindowTextA>        ; \SetWindowTextA
      00401162  |.  EB 18         JMP SHORT k4n.0040117C
      00401164  |>  68 90B44000   PUSH k4n.0040B490                        ; /this serial is *not* valid!! try again... : unregistered
      00401169  |.  56            PUSH ESI                                 ; |hWnd
      0040116A  |.  E8 1B9B0000   CALL <JMP.&USER32.SetWindowTextA>        ; \SetWindowTextA
      0040116F  |.  EB 0B         JMP SHORT k4n.0040117C
      00401171  |>  68 C9B44000   PUSH k4n.0040B4C9                        ; /name must contain more than 4 chars and less than 50 chars !!
      00401176  |.  56            PUSH ESI                                 ; |hWnd
      
      
    --------------------------------------------------------------------------------
    【经验总结】
      它的算法是:
      第一位用户名与1异或,第二位用户名与2异或依次类推,把它们的值放入EBX中,记为A。
      用户名最后一位与用户名位数异或的值乘以6,值记为B。
      A的值左移7位(2进制)。值记为C。
      A和C的值相加,记为D。D即为真码。
      次crackme比较简单,适合新手学习~~~

    [ 本帖最后由 caterpilla 于 2006-7-26 09:57 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-7-30 15:39:44 | 显示全部楼层
    呵呵!谢谢fantasy为大家提供这些好的练习机会
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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