能力值:
( LV2,RANK:10 )
|
-
-
2 楼
果然能增加不少信心呐
暴破的是楼主手工在OD里写的吧
那个用户名第一位ASC码+1的,如果用户名是中文,那就
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
第一个CrackMe..
00401000 /$ 55 push ebp
00401001 |. 8BEC mov ebp, esp
00401003 |. 83C4 D8 add esp, -28
00401006 |. 57 push edi
00401007 |. 837D 0C 01 cmp dword ptr [ebp+C], 1 ; 用户名位数与1比较
0040100B |. 73 18 jnb short 00401025 ; 大于则跳
0040100D |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040100F |. 68 30304000 push 00403030 ; |提示
00401014 |. 68 35304000 push 00403035 ; |用户名不能为空!
00401019 |. 6A 00 push 0 ; |hOwner = NULL
0040101B |. E8 36030000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00401020 |. 5F pop edi
00401021 |. C9 leave
00401022 |. C2 1400 retn 14
00401025 |> 8B75 08 mov esi, dword ptr [ebp+8]
00401028 |. 8D7D D8 lea edi, dword ptr [ebp-28]
0040102B |. 33C9 xor ecx, ecx
0040102D |. 8B45 0C mov eax, dword ptr [ebp+C]
00401030 |. C60438 00 mov byte ptr [eax+edi], 0
00401034 |. EB 0A jmp short 00401040
00401036 |> 0FB60431 /movzx eax, byte ptr [ecx+esi] ; 逐位读取用户名,将每位用户名向后一位作为注册码
0040103A |. 04 01 |add al, 1
0040103C |. 880439 |mov byte ptr [ecx+edi], al
0040103F |. 41 |inc ecx
00401040 |> 3B4D 0C cmp ecx, dword ptr [ebp+C]
00401043 |.^ 72 F1 \jb short 00401036
00401045 |. FF75 10 push dword ptr [ebp+10] ; /String2
00401048 |. 8D45 D8 lea eax, dword ptr [ebp-28] ; |
0040104B |. 50 push eax ; |String1
0040104C |. E8 47030000 call <jmp.&kernel32.lstrcmpA> ; \假码与真码比较
00401051 |. 0BC0 or eax, eax
00401053 |. 75 15 jnz short 0040106A ; 爆破点,nop!!
00401055 |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00401057 |. 68 30304000 push 00403030 ; |提示
0040105C |. 68 46304000 push 00403046 ; |恭喜你,注册成功!
00401061 |. 6A 00 push 0 ; |hOwner = NULL
00401063 |. E8 EE020000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00401068 |. EB 13 jmp short 0040107D
0040106A |> 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040106C |. 68 30304000 push 00403030 ; |提示
00401071 |. 68 59304000 push 00403059 ; |注册失败,请继续努力!
00401076 |. 6A 00 push 0 ; |hOwner = NULL
00401078 |. E8 D9020000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
0040107D |> 33C0 xor eax, eax
0040107F |. 5F pop edi
00401080 |. C9 leave
00401081 \. C2 1400 retn 14
第二个 试着爆破我..
00401004 /74 15 je short 0040101B //nop
很简单。。真是给我这样的新手信心了。
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
00401000 /$ 55 push ebp
00401001 |. 8BEC mov ebp,esp
00401003 |. 83C4 D8 add esp,-28
00401006 |. 57 push edi
00401007 |. 837D 0C 01 cmp [arg.2],1
0040100B |. 73 18 jnb short CrackMe.00401025
0040100D |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040100F |. 68 30304000 push CrackMe.00403030 ; |Title = "提示"
00401014 |. 68 35304000 push CrackMe.00403035 ; |Text = "用户名不能为空!"
00401019 |. 6A 00 push 0 ; |hOwner = NULL
0040101B |. E8 36030000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00401020 |. 5F pop edi
00401021 |. C9 leave
00401022 |. C2 1400 retn 14
00401025 |> 8B75 08 mov esi,[arg.1]
00401028 |. 8D7D D8 lea edi,[local.10]
0040102B |. 33C9 xor ecx,ecx
0040102D |. 8B45 0C mov eax,[arg.2]
00401030 |. C60438 00 mov byte ptr ds:[eax+edi],0
00401034 |. EB 0A jmp short CrackMe.00401040
00401036 |> 0FB60431 /movzx eax,byte ptr ds:[ecx+esi]
0040103A |. 04 01 |add al,1
0040103C |. 880439 |mov byte ptr ds:[ecx+edi],al
0040103F |. 41 |inc ecx
00401040 |> 3B4D 0C cmp ecx,[arg.2]
00401043 |.^ 72 F1 \jb short CrackMe.00401036
00401045 |. FF75 10 push [arg.3] ; /String2
00401048 |. 8D45 D8 lea eax,[local.10] ; |
0040104B |. 50 push eax ; |String1
0040104C |. E8 47030000 call <jmp.&kernel32.lstrcmpA> ; \lstrcmpA
00401051 |. 0BC0 or eax,eax
00401053 |. 75 15 jnz short CrackMe.0040106A
00401055 |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00401057 |. 68 30304000 push CrackMe.00403030 ; |Title = "提示"
0040105C |. 68 46304000 push CrackMe.00403046 ; |Text = "恭喜你,注册成功!"
00401061 |. 6A 00 push 0 ; |hOwner = NULL
00401063 |. E8 EE020000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00401068 |. EB 13 jmp short CrackMe.0040107D
0040106A |> 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
0040106C |. 68 30304000 push CrackMe.00403030 ; |Title = "提示"
00401071 |. 68 59304000 push CrackMe.00403059 ; |Text = "注册失败,请继续努力!"
00401076 |. 6A 00 push 0 ; |hOwner = NULL
00401078 |. E8 D9020000 call <jmp.&user32.MessageBoxA> ; \MessageBoxA
0040107D |> 33C0 xor eax,eax
0040107F |. 5F pop edi
00401080 |. C9 leave
00401081 \. C2 1400 retn 14
这是第一个得下bp MessageBoxA断点,然后执行到用户代码,上翻
00401000 > 33C0 xor eax,eax
00401002 0BC0 or eax,eax
00401004 74 15 je short 试着爆破.0040101B
00401006 6A 40 push 40
00401008 68 00304000 push 试着爆破.00403000
0040100D 68 2E304000 push 试着爆破.0040302E
00401012 6A 00 push 0
第二个在程序入口处有个je改成Jne就OK乐
|
能力值:
( LV9,RANK:490 )
|
-
-
5 楼
有时候我也打酱油。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
用户名:zhongtiany
序列号:{ipohujboz
|
能力值:
( LV6,RANK:90 )
|
-
-
7 楼
void check(char *user,char *out)
{
int i=0;
for(i=0;i<strlen(user);i++)
{
out[i]=user[i]+1;
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
今天刚转正。。早就想下了。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
请问 这个怎么破??有好心人解释不~~ 菜鸟一个
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
感觉都挺简单的,适合新手学习 第一个 搜索字符串能找到注册成功的字符串 
可以判断出关键跳和关键call 
接下来就可以爆破和追码 爆破的话,直接把jnz short 0040106A修改为nop 
运行 
追码的话直接在关键call下断点,输入用户名和序列号 
点击注册 运行到断点处 
就可以看到注册码了 第二个也很简单,直接把je修改为jnz或者nop掉就行了 


本人也是萌新,有错误的地方还请各位大佬指正
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
默小白
感觉都挺简单的,适合新手学习第一个搜索字符串能找到注册成功的字符串可以判断出关键跳和关键call接下来就可以爆破和追码爆破的话,直接把jnz short 0040106A修改为nop运行追码的话直接在 ...
代码旁边的中文提示是怎么弄的?插件吗
|
|
|