首页
社区
课程
招聘
My first Crack !!!
发表于: 2006-5-1 12:26 11594

My first Crack !!!

2006-5-1 12:26
11594

【文章标题】: 我的第一个破解
【文章作者】: 我从零KS
【作者邮箱】: pyw800923@yahoo.com.cn
【软件名称】: echap303.exe
【软件大小】: 303KB
【下载地址】: 自己搜索下载
【加壳方式】: 无
【编写语言】: delphi
【使用工具】: od peid keymake2.0
【操作平台】: win XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  首先运行程序,发现有错误提示“Wrong code”
  用OD载入,字串查找“Wrong code”来到下面:
  004417C6  |.  55            push    ebp
  004417C7  |.  68 60184400   push    echap303.00441860
  004417CC  |.  64:FF30       push    dword ptr fs:[eax]
  004417CF  |.  64:8920       mov     dword ptr fs:[eax], esp
  004417D2  |.  8D55 FC       lea     edx, dword ptr ss:[ebp-4]
  004417D5  |.  8B83 C8020000 mov     eax, dword ptr ds:[ebx+2C8]
  004417DB  |.  E8 C419FEFF   call    echap303.004231A4
  004417E0  |.  8B45 FC       mov     eax, dword ptr ss:[ebp-4]     
  004417E3  |.  50            push    eax                           
  004417E4  |.  8D55 F4       lea     edx, dword ptr ss:[ebp-C]
  004417E7  |.  8B83 C4020000 mov     eax, dword ptr ds:[ebx+2C4]
  004417ED  |.  E8 B219FEFF   call    echap303.004231A4
  004417F2  |.  8B45 F4       mov     eax, dword ptr ss:[ebp-C]     
  004417F5  |.  8D55 F8       lea     edx, dword ptr ss:[ebp-8]
  004417F8  |.  E8 FBFEFFFF   call    echap303.004416F8            
  004417FD  |.  8B55 F8       mov     edx, dword ptr ss:[ebp-8]     
  00441800  |.  58            pop     eax
  00441801  |.  E8 3E23FCFF   call    echap303.00403B44
  00441806  |.  75 1A         jnz     short echap303.00441822
  00441808  |.  6A 40         push    40
  0044180A  |.  B9 6C184400   mov     ecx, echap303.0044186C           ;  ASCII "U made it"
  0044180F  |.  BA 78184400   mov     edx, echap303.00441878           ;  ASCII "Right Code"
  00441814  |.  A1 302C4400   mov     eax, dword ptr ds:[442C30]
  00441819  |.  8B00          mov     eax, dword ptr ds:[eax]
  0044181B  |.  E8 D4D6FFFF   call    echap303.0043EEF4
  00441820  |.  EB 18         jmp     short echap303.0044183A
  00441822  |>  6A 10         push    10
  00441824  |.  B9 84184400   mov     ecx, echap303.00441884           ;  ASCII "Error"
  00441829  |.  BA 8C184400   mov     edx, echap303.0044188C           ;  ASCII "Wrong Code"
  
  从下向上寻找,可以发现00441806此处的跳转,可以跳到此处。所以,可以在004417C6处,按F2下断,按F9运行程序,用户名:pyw,序列号:7878
  点OK,被OD断下:
  F8一步一步分析:
  004417E0  |.  8B45 FC       mov     eax, dword ptr ss:[ebp-4]        ;  取输入的假注册码
  004417E3  |.  50            push    eax                              ;  放入堆栈
  004417E4  |.  8D55 F4       lea     edx, dword ptr ss:[ebp-C]
  004417E7  |.  8B83 C4020000 mov     eax, dword ptr ds:[ebx+2C4]
  004417ED  |.  E8 B219FEFF   call    echap303.004231A4
  004417F2  |.  8B45 F4       mov     eax, dword ptr ss:[ebp-C]        ;  取用户名到EAX
  004417F5  |.  8D55 F8       lea     edx, dword ptr ss:[ebp-8]
  004417F8  |.  E8 FBFEFFFF   call    echap303.004416F8                ;  针对用户名的注册码生成算法
  004417FD  |.  8B55 F8       mov     edx, dword ptr ss:[ebp-8]        ;  将最终计算出的注册码,放入EDX,为后面的比较,作准备
  00441800  |.  58            pop     eax
  00441801  |.  E8 3E23FCFF   call    echap303.00403B44              ;此过程,用于,将计算出的注册码,与输入的进行比较
  00441806  |.  75 1A         jnz     short echap303.00441822
  通过分析,可以发现004417F8所调用的过程是将输入的用户名,进行计算,得出最后的注册码,然后通过,00441801所调用的过程,与输入的假码,进行比较
  相等转成功,否则转失败。
  进入call    echap303.004416F8,其代码为:
  004416F8  /$  53            push    ebx
  004416F9  |.  56            push    esi
  004416FA  |.  57            push    edi
  004416FB  |.  83C4 DC       add     esp, -24
  004416FE  |.  891424        mov     dword ptr ss:[esp], edx
  00441701  |.  8BF8          mov     edi, eax                         ;  将用户名放到EDI中,准备处理
  00441703  |.  BB 05033949   mov     ebx, 49390305                    ;  I9..
  00441708  |.  BE 20126348   mov     esi, 48631220                    ;  Hc.
  0044170D  |.  8BC7          mov     eax, edi
  0044170F  |.  E8 2023FCFF   call    echap303.00403A34                ;  求用户名的长度
  00441714  |.  85C0          test    eax, eax                         ;  判断是否是空用户名
  00441716  |.  7E 2E         jle     short echap303.00441746
  00441718  |.  BA 01000000   mov     edx, 1                           ;  进行循环前EDX先置1
  0044171D  |>  33C9          /xor     ecx, ecx
  0044171F  |.  8A4C17 FF     |mov     cl, byte ptr ds:[edi+edx-1]     ;  依次取用户名的每一位
  00441723  |.  33D9          |xor     ebx, ecx                        ;  与EBX异或,放入EBX
  00441725  |.  33F3          |xor     esi, ebx                        ;  上面处理的结果,再与ESI异或,放入ESI
  00441727  |.  F6C3 01       |test    bl, 1
  0044172A  |.  74 0F         |je      short echap303.0044173B
  0044172C  |.  D1FB          |sar     ebx, 1                          ;  右移1位
  0044172E  |.  79 03         |jns     short echap303.00441733
  00441730  |.  83D3 00       |adc     ebx, 0
  00441733  |>  81F3 11032001 |xor     ebx, 1200311                    ;  再与1200311异或,放入EBX
  00441739  |.  EB 07         |jmp     short echap303.00441742
  0044173B  |>  D1FB          |sar     ebx, 1
  0044173D  |.  79 03         |jns     short echap303.00441742
  0044173F  |.  83D3 00       |adc     ebx, 0
  00441742  |>  42            |inc     edx
  00441743  |.  48            |dec     eax
  00441744  |.^ 75 D7         \jnz     short echap303.0044171D
  00441746  |>  8B0424        mov     eax, dword ptr ss:[esp]          ;  将以上循环计算的最终结果,放在EBX,ESI中
  00441749  |.  50            push    eax                              ; /Arg1
  0044174A  |.  8BC3          mov     eax, ebx                         ; |下面的程序段,是把EBX,ESI中的值,修正为"EBX的低16位-EBX的高16位-ESI的低16位-ESI的高16位"
  0044174C  |.  25 FFFF0000   and     eax, 0FFFF                       ; |
  00441751  |.  894424 08     mov     dword ptr ss:[esp+8], eax        ; |
  00441755  |.  C64424 0C 00  mov     byte ptr ss:[esp+C], 0           ; |
  0044175A  |.  C1EB 10       shr     ebx, 10                          ; |
  0044175D  |.  895C24 10     mov     dword ptr ss:[esp+10], ebx       ; |
  00441761  |.  C64424 14 00  mov     byte ptr ss:[esp+14], 0          ; |
  00441766  |.  8BC6          mov     eax, esi                         ; |
  00441768  |.  25 FFFF0000   and     eax, 0FFFF                       ; |
  0044176D  |.  894424 18     mov     dword ptr ss:[esp+18], eax       ; |
  00441771  |.  C64424 1C 00  mov     byte ptr ss:[esp+1C], 0          ; |
  00441776  |.  C1EE 10       shr     esi, 10                          ; |
  00441779  |.  897424 20     mov     dword ptr ss:[esp+20], esi       ; |
  0044177D  |.  C64424 24 00  mov     byte ptr ss:[esp+24], 0          ; |
  00441782  |.  8D5424 08     lea     edx, dword ptr ss:[esp+8]        ; |
  00441786  |.  B9 03000000   mov     ecx, 3                           ; |
  0044178B  |.  B8 A4174400   mov     eax, echap303.004417A4           ; |ASCII "%.4x-%.4x-%.4x-%.4x"
  00441790  |.  E8 6F68FCFF   call    echap303.00408004                ; \echap303.00408004
  00441795  |.  83C4 24       add     esp, 24
  00441798  |.  5F            pop     edi
  00441799  |.  5E            pop     esi
  0044179A  |.  5B            pop     ebx
  0044179B  \.  C3            retn
  该过程进行完毕,后退出到时:
  004417FD  |.  8B55 F8       mov     edx, dword ptr ss:[ebp-8]        ;  将最终计算出的注册码,放入EDX,为后面的比较,作准备
  00441800  |.  58            pop     eax
  00441801  |.  E8 3E23FCFF   call    echap303.00403B44              ;此过程,用于,将计算出的注册码,与输入的假码进行比较
  00441806  |.  75 1A         jnz     short echap303.00441822
  这就是该程序的整个运算过程,通过分析,可以采用keymake2.0来开发注册机。
  用户名:pyw
  注册码:208F-096F-D299-3638
  
  我还没有权限,上传原程序和注册机,请大家原谅!!!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年05月01日 12:24:10


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (34)
雪    币: 333
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wan
2
支持一下```:
2006-5-1 12:31
0
雪    币: 235
活跃值: (41)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
支持!
呵呵
2006-5-1 14:20
0
雪    币: 47147
活跃值: (20455)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
最初由 我从零KS 发布

我还没有权限,上传原程序和注册机,请大家原谅!!!


现在有权限了,单击编辑或回复都可上传附件。
2006-5-1 15:55
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
看这个象是CrackMe.
2006-5-1 17:46
0
雪    币: 259
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
我觉得每篇破解,应该总结一下作者的加密方式
采用了哪些加密方法。规类总结一下。
有总结才有进步,呵呵
2006-5-1 19:55
0
雪    币: 211
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 rufus 发布
我觉得每篇破解,应该总结一下作者的加密方式
采用了哪些加密方法。规类总结一下。
有总结才有进步,呵呵

至少总结一下收获
2006-5-1 22:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
对 总结已下如何破解的同时总结一下无何加密
2006-5-1 23:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习先
谢谢分享的说
2006-5-2 10:48
0
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
10
最初由 rufus 发布
我觉得每篇破解,应该总结一下作者的加密方式
采用了哪些加密方法。规类总结一下。
有总结才有进步,呵呵


好意见
2006-5-2 12:04
0
雪    币: 214
活跃值: (55)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
有权限了,谢谢看雪大哥。现补个注册机。
上传的附件:
2006-5-2 15:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
用户名:coolkey
注册码:70E0-0114-4F36-3855
下断点BP MessageBoxA
2006-5-3 11:54
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
~Domino~
7901-0050-BC0D-3812

2006-5-3 18:08
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lcw
14
angel
C8FA-0201-62D5-3B8C
2006-5-3 23:39
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
呵呵,支持一下
2006-5-8 13:15
0
雪    币: 332
活跃值: (30)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝
16
根据呢?
在004417B8处不行吗?
2006-5-17 18:13
0
雪    币: 332
活跃值: (30)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝
17
00441703  |.  BB 05033949   mov     ebx, 49390305                    ;  I9..??这句是什么意思
  00441708  |.  BE 20126348   mov     esi, 48631220                    ;  Hc...??这句是什么意思
2006-5-17 18:34
0
雪    币: 332
活跃值: (30)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝
18
0044170F  |.  E8 2023FCFF   call    echap303.00403A34                ;  求用户名的长度
其中的:
00403A38  |.  8B40 FC       MOV EAX,DWORD PTR DS:[EAX-4]
是怎么得到长度的呢?
谢谢解释一下
2006-5-17 18:57
0
雪    币: 234
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
19
支持原创!
2006-5-18 11:17
0
雪    币: 214
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不知道重零KS兄可不可以写一下关于你包内的算法注册机的详细内容?想学习一下算法注册机的写法。
2006-5-18 13:49
0
雪    币: 10902
活跃值: (3288)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
21
//算法很简单,就是将字符进行简单的xor运算。
#include <stdio.h>
////////unsinged型算术右移运算
unsigned getbits1(unsigned value,int n)
{
  unsigned z,temp;
  temp=value&0x80000000;
  if(temp==0)
    z=value>>n;
  else
  {
    z=~0;
    z=z>>n;
    z=~z;
    z=z|(value>>n);
  }
  return(z);
}
//将16进制数转为对应的字符,字母用大写
void asc_str(char r[4],unsigned long t)
{
        int i=3,c=0;
        while(i>=0)
        {
                c=t%16;
                if(c>=0xa)r[i]='a'+c-0xa-32;
                else r[i]='0'+c;
                t/=16;
                i--;
        }
        r[4]='\0';
}
void main()
{
        char s[]="zwfnet",r1[5],r2[5],r3[5],r4[5];
        unsigned long temp1=0x49390305,temp2=0x48631220,temp3=0;
        int i=0;
        while(s[i])
        {
                temp1^=(unsigned long )s[i];
                temp2^=temp1;
                if(temp1&1>0)
                {
                        temp1=getbits1(temp1,1);
                        temp1^=0x1200311;
                }
                else temp1=getbits1(temp1,1);
                i++;
        }
       
        temp3=temp1&0xffff;
        asc_str(r1,temp3);
        temp3=getbits1(temp1,16);
        asc_str(r2,temp3);
        temp3=temp2&0xffff;
        asc_str(r3,temp3);
        temp3=getbits1(temp2,16);
    asc_str(r4,temp3);
        printf("%s-%s-%s-%s\n",r1,r2,r3,r4);
}
2006-5-19 09:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msx
22
有收获啊,支持,正在写总结中……
2006-5-21 08:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好好学习算法喽要!!!
2006-5-21 22:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好东西,顶顶顶顶顶
2006-5-22 16:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
学习,支持。
2006-5-22 22:39
0
游客
登录 | 注册 方可回帖
返回
//