首页
社区
课程
招聘
初入樵新手 crackme 博物馆
发表于: 2005-3-17 14:45 467880

初入樵新手 crackme 博物馆

2005-3-17 14:45
467880
收藏
免费 0
支持
分享
最新回复 (267)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
176
跟到一组SN

huowu
FQRPD



上传的附件:
2008-9-22 13:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
177
下载下来实习一下先
2008-10-1 09:55
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
178
可能我的素质低,没看明白,后悔当初没好好读书
2008-10-8 09:48
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
179
活活。。。终于搞定了。问题是注册码找出来我还不知道怎么找的。只知道用 bp __vbaStrCmp
下断后F7见call就进估计走了不少弯路。。。

name:paulhou
sn:M_@Lmqx

name:xxoo
sn:Owhp
2008-10-29 00:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
180
对于这样简单的软件
我也只会爆破 汗``
00401072   . /75 1B         jnz     short 0040108F

把75改74或者nop掉!
2008-11-1 16:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
181
太感谢楼主了.
为菜鸟着想..
2008-11-9 09:41
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
182
支持一下,学习一下!
2008-11-9 19:15
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
183
命令行总是去不掉怎么办?
2008-11-25 06:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
far
184
我很菜,不知怎么就下载不了了
2008-11-27 09:29
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
185
顶下LZ  哈哈
2008-11-29 13:51
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
186
感谢,  不知道我能不能学好!
2008-12-2 21:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
187
我写的CrackMe
用vc6写的,没有壳,没有修改IAT,有Anti-Debug代码
算法不难
http://bbs.pediy.com/showthread.php?threadid=12375

有Anti-Debug代码  的该如何跟入???
2009-1-20 10:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
188
很喜欢有技术含量的啊
2009-2-17 21:36
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
189
多发点
各位老大些
2009-2-18 18:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
190
感觉学习很枯燥。希望能够挺过这段时期啊
2009-2-23 16:38
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
191
这个....我要开始学学..发现一个人没意思的时候找。.学程序吧好象太费劲了..几年也不成学到什么,还容易忘..我这样想的。.
2009-2-25 21:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
192
感谢楼主  我感觉还是从函数返回值往上找 思路比较清晰 (个人观点)
我刚刚初学问个简单问题注册按钮下面的Locked Function按钮是干啥用的啊?
2009-3-7 13:49
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
193
经过两次脱壳,终于找到了注册码

第一个壳yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h) *
不知道是不是壳,以前没见过,
第二个壳是upx最简单的壳

两个壳用esp定律都可以脱掉

用户名:keheng
注册码:626898387088424554626712748

高兴ing........................
2009-4-17 15:44
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
194
找到注册码:

用户名:keheng
注册码:HNT-3121-0551-0729-CZ

注册码要获取本机的计算机名称参与计算,对研究代码还不熟悉,所以暂时无法写出注册机
2009-4-17 15:51
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
195
真晕哦,这个一运行就退出。
GetStartupInfoA也不知道这个函数是做什么的,怎么样才可以让它不退出呢。。。。。。。。。。

我觉得对我们这些小菜是有点难度的。
2009-4-17 16:22
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
196
好东西大家分享,练习一下.
2009-5-6 23:29
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
197
我补充一些最基本地东西!
我也是新人哈
第一次尝试!因为我碰到一个问题:
我按照楼主的第一步
bp MessageBoxA 下断点的时候呢,根本没有断掉,直接跑飞了[现在还不知道根本的原因]

然后我们重新加载要破解的文件。

1:加载文件;
2:Ctrl+N  -->我们查看该PE文件中用到得API, 找到 USER32.MessageBoxA
     点击右键:--->Conditional breakpoint on import
     输入: --> bp MessageBoxA, 确定
3:F9运行程序, 然后输入 name , code, 确定提交

77D507AA >    8BFF          mov     edi, edi
77D507AC  /.  55            push    ebp                ;注册失败的,提示框入口
77D507AD  |.  8BEC          mov     ebp, esp
77D507AF  |.  833D BC14D777>cmp     dword ptr [77D714BC], 0
77D507B6  |.  74 24         je      short 77D507DC
77D507B8  |.  64:A1 1800000>mov     eax, dword ptr fs:[18]
77D507BE  |.  6A 00         push    0
77D507C0  |.  FF70 24       push    dword ptr [eax+24]
77D507C3  |.  68 241BD777   push    77D71B24
77D507C8  |.  FF15 C412D177 call    dword ptr [<&KERNEL32.Interlocke>;  kernel32.InterlockedCompareExchange
77D507CE  |.  85C0          test    eax, eax
77D507D0  |.  75 0A         jnz     short 77D507DC
77D507D2  |.  C705 201BD777>mov     dword ptr [77D71B20], 1
77D507DC  |>  6A 00         push    0                                ; /LanguageID = 0 (LANG_NEUTRAL)
77D507DE  |.  FF75 14       push    dword ptr [ebp+14]               ; |Style
77D507E1  |.  FF75 10       push    dword ptr [ebp+10]               ; |Title
77D507E4  |.  FF75 0C       push    dword ptr [ebp+C]                ; |Text
77D507E7  |.  FF75 08       push    dword ptr [ebp+8]                ; |hOwner
77D507EA  |.  E8 2D000000   call    MessageBoxExA                    ; \MessageBoxExA
77D507EF  |.  5D            pop     ebp
77D507F0  \.  C2 1000       retn    10                                        ;这里是返回点,返回到失败前的判断位置

因此我们要一路F7,直到
77D507EA  |.  E8 2D000000   call    MessageBoxExA                    ; \MessageBoxExA
然后F8, 在继续F7 直到返回到,比较我们的输入的注册码的位置[下面]

00401069   .  85C0          test    eax, eax
0040106B   .  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
0040106D   .  68 80504000   push    00405080                         ; |Title = "ncrackme"
00401072      74 1B         jnz      short 0040108F    ;jnz 修改为 je [爆破]               ;  
00401074   .  A1 B8564000   mov     eax, dword ptr [4056B8]          ; |
00401079   .  68 64504000   push    00405064                         ; |Text = "Registration successful."
0040107E   .  50            push    eax                              ; |hOwner => 000E0628 ('Newbie smallsize crackme - v1',class='myWindowClass')
0040107F   .  FF15 C0404000 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
00401085   .  E8 A6020000   call    00401330
0040108A   .  33C0          xor     eax, eax
0040108C   .  C2 1000       retn    10
0040108F   >  8B0D B8564000 mov     ecx, dword ptr [4056B8]          ; |
00401095   .  68 50504000   push    00405050                         ; |Text = "Registration fail."
0040109A   .  51            push    ecx                              ; |hOwner => 000E0628 ('Newbie smallsize crackme - v1',class='myWindowClass')
0040109B   .  FF15 C0404000 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA
004010A1   .  33C0          xor     eax, eax
004010A3   .  C2 1000       retn    10

大概就是这些要补充的,因为有的新人会碰到,断点不被执行的问题!
因此我就根据我碰到的问题,补充一下。

后面接着继续学习楼主的注册算法:)

谢谢大家的分享
2009-5-9 13:29
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
198
这个比较简单啊,版主能否找些无提示信息的cm,有写技巧的cm啊。我现在就是遇到些难得破解时,不知道下什么断点。请搞手指点一下
2009-5-13 15:10
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
199
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc,char** argv)
{
    char *pusername = "test";
        char *ppassword = "88888888";
       

        int a;
    _asm
        {

       mov     ebx,pusername
       movzx   eax,byte ptr [ebx]
       movzx   ecx,byte ptr [ebx+1]
           cdq
       idiv    ecx
       mov     ecx, edx
       or      eax, 0xFFFFFFFF
       movsx   edx, byte ptr [ebx+2]
       imul    ecx, edx
       inc     ecx
       xor     edx, edx
       div     ecx
           mov     a,eax
        }
   
        printf("a=%d\n",a);

        int b;
        char register_code[15]="";
        for(int i=0; i<15; i++)
        {
                //call    0040134A
                _asm
                {
                mov     eax, a
                        imul    eax, eax, 0X343FD
                        add     eax, 0X269EC3
                        mov     a, eax
                        sar     eax, 0X10
                        and     eax, 0X7FFF
                        mov     b,eax
                }
        //end call
      
                char temp=NULL;
                _asm
                {
                        cdq
            mov     ecx, 0X1A
            idiv    ecx
            add     dl, 0X41
            mov     temp, dl
                }
        register_code[i]=temp;
    }//end for
    //printf("The register code:%s\n",register_code);
    char register_code_result[15]="";
        int length = strlen(pusername)-1;
        //k is the lenght of usernmae
        for(int k=0; k<=length; k++)
        {
                char temp=pusername[k];
                int j;
                int n;
                _asm
                {
                        mov     al, temp
            sar     al, 5
            movsx   eax, al
            lea     edx, dword ptr [eax+eax*4]
            lea     eax, dword ptr [eax+edx*8]
            lea     eax, dword ptr [eax+eax*2]
                        mov     n,eax
                }
        //    test    eax, eax
        //    jle     short 004012EE
/*                if(n ==n )
                {
                        goto next_step;
                }
                */
                _asm
                {
            mov     j, eax
                }

/*next_step:*/
                for(;j>0;j--)
                {
                       
                        //call    0040134A
                        _asm
                        {
                                mov     eax, a
                                imul    eax, eax, 0X343FD
                                add     eax, 0X269EC3
                                mov     a, eax
                                sar     eax, 0X10
                                and     eax, 0X7FFF
                                mov     b,eax
                        }
                        //end call       
                }

                //call    0040134A
                _asm
                {
                        mov     eax, a
                        imul    eax, eax, 0X343FD
                        add     eax, 0X269EC3
                        mov     a, eax
                        sar     eax, 0X10
                        and     eax, 0X7FFF
                        mov     b,eax
                }
                //end call
        char password_temp=ppassword[k];
                char temp_p;
                _asm
                {
                        cdq
                        mov     eax, b             ;The eax is changed after cdq
            mov     ecx, 0X1A
            idiv    ecx
            movsx   ecx, password_temp
            add     dl, 0X41
                        movsx   eax, dl
                        sub     eax, ecx
                        mov     temp_p, dl
            cdq
                        xor     eax, edx
                        or      ecx, 0XFFFFFFFF
                        sub     eax, edx
                        add     ebx, eax
                        xor     eax, eax
                }
        register_code[k]=temp_p;
               
        }
        printf("The register code:%s\n",register_code);
                                                       
       
        return 0;
}
2009-5-24 23:38
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
200
好多资料啊。
2009-6-13 12:16
0
游客
登录 | 注册 方可回帖
返回
//