首页
社区
课程
招聘
[原创]新人第一篇入门破文
发表于: 2012-8-8 15:50 6363

[原创]新人第一篇入门破文

2012-8-8 15:50
6363

最近学习了一下加解密的基本知识,基础不行看的好累啊,找了一个简单的CrackMe练练手,
 只弄了了个大概,细节还不是很清楚,新手可以看看交流一下,老鸟也可以看看给点意见,如有
 错误请指出,虚心接受各位的建议。下面开始了:
     首先用peid看看,没壳,用delphi写的。运行一下要输入name和serial,随便输入试试看,弹出了wrong code的提示窗口。好,已经了解了基本信息。
     用OD打开,可以用查找字符串“wrong code”快速定位到相关代码处;也可以ctrl+N查找相关API函数然后设断,看到了一个GetWindowTextA,设函数断点,但不知为什么没断下,同时试了一下消息断点也么用(囧,目测是delphi这类程序的原因),望高人指点一二。
     就用了最简单的查找字符串到达了关键代码,F2下断点F9运行程序输入”cjh“、”123“断下:
004416FB  |.  68 A8174400   push    004417A8
00441700  |.  64:FF30       push    dword ptr fs:[eax]
00441703  |.  64:8920       mov     dword ptr fs:[eax], esp
00441706  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
00441709  |.  8B83 C8020000 mov     eax, dword ptr [ebx+2C8]
0044170F  |.  E8 901AFEFF   call    004231A4
00441714  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  输入的注册码“123”
00441717  |.  50            push    eax
00441718  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0044171B  |.  8B83 C4020000 mov     eax, dword ptr [ebx+2C4]
00441721  |.  E8 7E1AFEFF   call    004231A4
00441726  |.  FF75 F4       push    dword ptr [ebp-C]                ;  输入的name“cjh”
00441729  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
0044172C  |.  8B83 C4020000 mov     eax, dword ptr [ebx+2C4]
00441732  |.  E8 6D1AFEFF   call    004231A4
00441737  |.  FF75 F0       push    dword ptr [ebp-10]
0044173A  |.  68 BC174400   push    004417BC                         ;  625
0044173F  |.  68 C8174400   push    004417C8                         ;  g
00441744  |.  68 D4174400   push    004417D4                         ;  72
00441749  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
0044174C  |.  BA 05000000   mov     edx, 5
00441751  |.  E8 9E23FCFF   call    00403AF4                         ;  计算注册码F7跟进去
00441756  |.  8B55 F8       mov     edx, dword ptr [ebp-8]           ;  计算出的注册码“cjhcjh625g72”
00441759  |.  58            pop     eax
0044175A  |.  E8 E523FCFF   call    00403B44                         ;  比较计算出注册码和输入的注册码F7跟进去
0044175F  |.  75 17         jnz     short 00441778                   ;  关键跳转点,不等就跳走
00441761  |.  6A 00         push    0
00441763  |.  66:8B0D D8174>mov     cx, word ptr [4417D8]
0044176A  |.  B2 02         mov     dl, 2
0044176C  |.  B8 E4174400   mov     eax, 004417E4                    ;  right code
00441771  |.  E8 02FBFFFF   call    00441278
00441776  |.  EB 15         jmp     short 0044178D
00441778  |>  6A 00         push    0
0044177A  |.  66:8B0D D8174>mov     cx, word ptr [4417D8]
00441781  |.  B2 01         mov     dl, 1
00441783  |.  B8 F8174400   mov     eax, 004417F8                    ;  wrong code(跳到这里)
00441788  |.  E8 EBFAFFFF   call    00441278
0044178D  |>  33C0          xor     eax, eax
0044178F  |.  5A            pop     edx
00441790  |.  59            pop     ecx
00441791  |.  59            pop     ecx

从上面的关键注释一目了然,算法明显看出来就是将用户名叠加一次然后加一串固定后缀,
本人菜菜,就不具体分析算法的实现了,代码在下面。

计算注册码的子程序:
00403AF4   $  53            push    ebx
00403AF5   .  56            push    esi
00403AF6   .  52            push    edx
00403AF7   .  50            push    eax
00403AF8   .  89D3          mov     ebx, edx
00403AFA   .  31C0          xor     eax, eax
00403AFC   >  8B4C94 10     mov     ecx, dword ptr [esp+edx*4+10]
00403B00   .  85C9          test    ecx, ecx
00403B02   .  74 03         je      short 00403B07
00403B04   .  0341 FC       add     eax, dword ptr [ecx-4]
00403B07   >  4A            dec     edx
00403B08   .^ 75 F2         jnz     short 00403AFC
00403B0A   .  E8 69FDFFFF   call    00403878
00403B0F   .  50            push    eax
00403B10   .  89C6          mov     esi, eax
00403B12   >  8B449C 14     mov     eax, dword ptr [esp+ebx*4+14]
00403B16   .  89F2          mov     edx, esi
00403B18   .  85C0          test    eax, eax
00403B1A   .  74 0A         je      short 00403B26
00403B1C   .  8B48 FC       mov     ecx, dword ptr [eax-4]
00403B1F   .  01CE          add     esi, ecx
00403B21   .  E8 86ECFFFF   call    004027AC
00403B26   >  4B            dec     ebx
00403B27   .^ 75 E9         jnz     short 00403B12
00403B29   .  5A            pop     edx
00403B2A   .  58            pop     eax
00403B2B   .  85D2          test    edx, edx
00403B2D   .  74 03         je      short 00403B32
00403B2F   .  FF4A F8       dec     dword ptr [edx-8]
00403B32   >  E8 D5FCFFFF   call    0040380C
00403B37   .  5A            pop     edx
00403B38   .  5E            pop     esi
00403B39   .  5B            pop     ebx
00403B3A   .  58            pop     eax
00403B3B   .  8D2494        lea     esp, dword ptr [esp+edx*4]
00403B3E   .  FFE0          jmp     eax
00403B40   .  C3            ret

比较计算出的注册码与输入的注册码:
00403B44  /$  53            push    ebx
00403B45  |.  56            push    esi
00403B46  |.  57            push    edi
00403B47  |.  89C6          mov     esi, eax
00403B49  |.  89D7          mov     edi, edx
00403B4B  |.  39D0          cmp     eax, edx
00403B4D  |.  0F84 8F000000 je      00403BE2
00403B53  |.  85F6          test    esi, esi
00403B55  |.  74 68         je      short 00403BBF
00403B57  |.  85FF          test    edi, edi
00403B59  |.  74 6B         je      short 00403BC6
00403B5B  |.  8B46 FC       mov     eax, dword ptr [esi-4]
00403B5E  |.  8B57 FC       mov     edx, dword ptr [edi-4]
00403B61  |.  29D0          sub     eax, edx
00403B63  |.  77 02         ja      short 00403B67
00403B65  |.  01C2          add     edx, eax
00403B67  |>  52            push    edx
00403B68  |.  C1EA 02       shr     edx, 2
00403B6B  |.  74 26         je      short 00403B93
00403B6D  |>  8B0E          /mov     ecx, dword ptr [esi]
00403B6F  |.  8B1F          |mov     ebx, dword ptr [edi]
00403B71  |.  39D9          |cmp     ecx, ebx
00403B73  |.  75 58         |jnz     short 00403BCD
00403B75  |.  4A            |dec     edx
00403B76  |.  74 15         |je      short 00403B8D
00403B78  |.  8B4E 04       |mov     ecx, dword ptr [esi+4]
00403B7B  |.  8B5F 04       |mov     ebx, dword ptr [edi+4]
00403B7E  |.  39D9          |cmp     ecx, ebx
00403B80  |.  75 4B         |jnz     short 00403BCD
00403B82  |.  83C6 08       |add     esi, 8
00403B85  |.  83C7 08       |add     edi, 8
00403B88  |.  4A            |dec     edx
00403B89  |.^ 75 E2         \jnz     short 00403B6D
00403B8B  |.  EB 06         jmp     short 00403B93
00403B8D  |>  83C6 04       add     esi, 4
00403B90  |.  83C7 04       add     edi, 4
00403B93  |>  5A            pop     edx
00403B94  |.  83E2 03       and     edx, 3
00403B97  |.  74 22         je      short 00403BBB
00403B99  |.  8B0E          mov     ecx, dword ptr [esi]
00403B9B  |.  8B1F          mov     ebx, dword ptr [edi]
00403B9D  |.  38D9          cmp     cl, bl
00403B9F  |.  75 41         jnz     short 00403BE2
00403BA1  |.  4A            dec     edx
00403BA2  |.  74 17         je      short 00403BBB
00403BA4  |.  38FD          cmp     ch, bh
00403BA6  |.  75 3A         jnz     short 00403BE2
00403BA8  |.  4A            dec     edx
00403BA9  |.  74 10         je      short 00403BBB
00403BAB  |.  81E3 0000FF00 and     ebx, 0FF0000
00403BB1  |.  81E1 0000FF00 and     ecx, 0FF0000
00403BB7  |.  39D9          cmp     ecx, ebx
00403BB9  |.  75 27         jnz     short 00403BE2
00403BBB  |>  01C0          add     eax, eax
00403BBD  |.  EB 23         jmp     short 00403BE2
00403BBF  |>  8B57 FC       mov     edx, dword ptr [edi-4]
00403BC2  |.  29D0          sub     eax, edx
00403BC4  |.  EB 1C         jmp     short 00403BE2
00403BC6  |>  8B46 FC       mov     eax, dword ptr [esi-4]
00403BC9  |.  29D0          sub     eax, edx
00403BCB  |.  EB 15         jmp     short 00403BE2
00403BCD  |>  5A            pop     edx
00403BCE  |.  38D9          cmp     cl, bl
00403BD0  |.  75 10         jnz     short 00403BE2
00403BD2  |.  38FD          cmp     ch, bh
00403BD4  |.  75 0C         jnz     short 00403BE2
00403BD6  |.  C1E9 10       shr     ecx, 10
00403BD9  |.  C1EB 10       shr     ebx, 10
00403BDC  |.  38D9          cmp     cl, bl
00403BDE  |.  75 02         jnz     short 00403BE2
00403BE0  |.  38FD          cmp     ch, bh
00403BE2  |>  5F            pop     edi
00403BE3  |.  5E            pop     esi
00403BE4  |.  5B            pop     ebx
00403BE5  \.  C3            ret

本人的第一篇破文,也是看雪的第一帖,写的不够详细大家凑合着看,有意见请指出。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (33)
雪    币: 334
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
向你学习呀!
2012-8-9 10:49
0
雪    币: 353
活跃值: (516)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
CODE:004416EC ; 确定按钮事件
CODE:004416EC ; Password = Name + Name +"652" + "g" + "72"
CODE:004416EC ; Attributes: bp-based frame
CODE:004416EC
CODE:004416EC TForm1_BtnOKClick proc near
CODE:004416EC
CODE:004416EC var_10          = dword ptr -10h
CODE:004416EC var_C           = dword ptr -0Ch
CODE:004416EC var_8           = dword ptr -8
CODE:004416EC var_4           = dword ptr -4
CODE:004416EC
CODE:004416EC                 push    ebp
CODE:004416ED                 mov     ebp, esp
CODE:004416EF                 xor     ecx, ecx
CODE:004416F1                 push    ecx
CODE:004416F2                 push    ecx
CODE:004416F3                 push    ecx
CODE:004416F4                 push    ecx
CODE:004416F5                 push    ebx
CODE:004416F6                 mov     ebx, eax
CODE:004416F8                 xor     eax, eax
CODE:004416FA                 push    ebp
CODE:004416FB                 push    offset loc_4417A8
CODE:00441700                 push    dword ptr fs:[eax]
CODE:00441703                 mov     fs:[eax], esp
CODE:00441706                 lea     edx, [ebp+var_4]
CODE:00441709                 mov     eax, [ebx+2C8h] ; TEdit Password文本框
CODE:0044170F                 call    TControl_GetText ; 获取密码字符串
CODE:00441714                 mov     eax, [ebp+var_4]
CODE:00441717                 push    eax
CODE:00441718                 lea     edx, [ebp+var_C]
CODE:0044171B                 mov     eax, [ebx+2C4h] ; TEdit Name文本框
CODE:00441721                 call    TControl_GetText ; 获取Name字符串
CODE:00441726                 push    [ebp+var_C]
CODE:00441729                 lea     edx, [ebp+var_10]
CODE:0044172C                 mov     eax, [ebx+2C4h] ; TEdit Name文本框
CODE:00441732                 call    TControl_GetText ; 获取Name字符串
CODE:00441737                 push    [ebp+var_10]
CODE:0044173A                 push    offset dword_4417BC ; '625'
CODE:0044173F                 push    offset dword_4417C8 ; 'g'
CODE:00441744                 push    offset dword_4417D4 ; '72'
CODE:00441749                 lea     eax, [ebp+var_8]
CODE:0044174C                 mov     edx, 5
CODE:00441751                 call    ProcessName     ; 根据传入的参数合并成为一个新的字符串
CODE:00441751                                         ; 算法为 新的字符串 buffer  = Name + Name +"625" + "g" +"72"
CODE:00441756                 mov     edx, [ebp+var_8] ; 根据Name生成的新的字符串
CODE:00441759                 pop     eax             ; 密码字符串
CODE:0044175A                 call    CheckNameAndPassword ; 比较新生成的字符串是否和输入的Password一致。
CODE:0044175A                                         ; 其实算法非常简单
CODE:0044175A                                         ; Password = Name + Name +"652" + "g" + "72"
CODE:0044175F                 jnz     short loc_441778 ; Name 和Password 错误的处理逻辑
CODE:00441761                 push    0               ; Name 和Password 正确的处理逻辑模块
CODE:00441763                 mov     cx, word_4417D8
CODE:0044176A                 mov     dl, 2
CODE:0044176C                 mov     eax, offset dword_4417E4 ; 'Right Code' 字符串
CODE:00441771                 call    MessageBox
CODE:00441776                 jmp     short loc_44178D
CODE:00441778 ; ---------------------------------------------------------------------------
CODE:00441778
CODE:00441778 loc_441778:                             ; Name 和Password 错误的处理逻辑
CODE:00441778                 push    0
CODE:0044177A                 mov     cx, word_4417D8
CODE:00441781                 mov     dl, 1
CODE:00441783                 mov     eax, offset dword_4417F8 ; 'Wrong Code' 字符串
CODE:00441788                 call    MessageBox
CODE:0044178D
CODE:0044178D loc_44178D:
CODE:0044178D                 xor     eax, eax
CODE:0044178F                 pop     edx
CODE:00441790                 pop     ecx
CODE:00441791                 pop     ecx
CODE:00441792                 mov     fs:[eax], edx
CODE:00441795                 push    offset loc_4417AF
CODE:0044179A
CODE:0044179A loc_44179A:
CODE:0044179A                 lea     eax, [ebp+var_10]
CODE:0044179D                 mov     edx, 4
CODE:004417A2                 call    sub_4037DC
CODE:004417A7                 retn
CODE:004417A8 ; ---------------------------------------------------------------------------
CODE:004417A8
CODE:004417A8 loc_4417A8:
CODE:004417A8                 jmp     loc_403278
CODE:004417AD ; ---------------------------------------------------------------------------
CODE:004417AD                 jmp     short loc_44179A
CODE:004417AF ; ---------------------------------------------------------------------------
CODE:004417AF
CODE:004417AF loc_4417AF:
CODE:004417AF                 pop     ebx
CODE:004417B0                 mov     esp, ebp
CODE:004417B2                 pop     ebp
CODE:004417B3                 retn
CODE:004417B3 TForm1_BtnOKClick endp

其实算法非常简单
Password = Name + Name +"652" + "g" + "72"
2012-8-9 12:38
0
雪    币: 9
活跃值: (57)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
004416EC  /.  55            push ebp
004416ED  |.  8BEC          mov ebp,esp
004416EF  |.  33C9          xor ecx,ecx
004416F1  |.  51            push ecx
004416F2  |.  51            push ecx
004416F3  |.  51            push ecx
004416F4  |.  51            push ecx
004416F5  |.  53            push ebx
004416F6  |.  8BD8          mov ebx,eax
004416F8  |.  33C0          xor eax,eax
004416FA  |.  55            push ebp
004416FB  |.  68 A8174400   push CrackMe.004417A8
00441700  |.  64:FF30       push dword ptr fs:[eax]
00441703  |.  64:8920       mov dword ptr fs:[eax],esp
00441706  |.  8D55 FC       lea edx,[local.1]
00441709  |.  8B83 C8020000 mov eax,dword ptr ds:[ebx+0x2C8]
0044170F  |.  E8 901AFEFF   call CrackMe.004231A4
00441714  |.  8B45 FC       mov eax,[local.1]

为什么这个C ALL 执行了8个参数,系统没有为他平衡堆栈呢
2012-11-15 23:47
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
向您学习了     ,
2012-11-18 22:06
0
雪    币: 85
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
向你学习!!!!!
2012-11-19 10:27
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
正在学习中  冒似在虚拟机中无法破解??
2012-11-19 15:51
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
鼓励一下,赠你正式会员资格。
2012-11-19 22:20
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我这样的学习,下次我也发一个,只是深入算法不行!
2012-12-1 17:28
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习了。。。
2012-12-1 19:04
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错的破文 ,学习一下!!!
2012-12-1 21:49
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
學習中,我也好想學暴力破解
2012-12-2 02:08
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢楼主,学习了。
2012-12-2 08:32
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习学习
2012-12-2 17:58
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
向你学习!!!!!
2012-12-2 22:15
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
原来这个就是暴破啊,学习了
2012-12-2 23:03
0
雪    币: 645
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
本人小菜 前来居堆 看看 LZ的破文
2012-12-3 00:07
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
正在学习中  在虚拟机中无法破解么?
2012-12-3 00:27
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
向你学习!!!!!
2012-12-3 12:19
0
雪    币: 45
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习一下,我也试试,第一次破解
2012-12-3 20:49
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
恩,有帮助。继续关注你哦
2012-12-3 22:26
0
雪    币: 45
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我没有看到自己输入的内容啊,不知道正确的密码是啥,我只会修改这里,把jnz改成jz,然后保存新程序,怎么点都是 right code ,很笨的方法啊。本人菜鸟啊第一次破解,第一次用ollydbg,一开始都不知道哪搜索字符串

0044175F  |.  75 17         jnz     short 00441778                   ;  关键跳转点,不等就跳走
0044175F  |.  75 17         jz       short 00441778                   ;  关键跳转点,不等就跳走
2012-12-3 23:07
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
厉害 可惜我还在原地徘徊。。
2012-12-4 01:40
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
虚拟机里面好多软件都不绐运行了,
2012-12-4 20:11
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
向你学习!!!!!
2012-12-6 21:39
0
游客
登录 | 注册 方可回帖
返回
//