能力值:
( LV2,RANK:10 )
|
-
-
51 楼
我用vc写了个01的注册机,要的话,喊一下
|
能力值:
( LV8,RANK:130 )
|
-
-
52 楼
新手从这里开始学习了,3Q
|
能力值:
( LV9,RANK:330 )
|
-
-
53 楼
最初由 Wucheng 发布 第7个: 通过字符串参考下断,输入name:Wucheng serial:223342 004025AA . 66:3D 0300 cmp ax, 3 ; name长度与3比 004025AE . 0F8C CB030000 jl 0040297F ; 小于,跳向失败 004025B4 . 8B4D A8 mov ecx, dword ptr [ebp-58] ........
从VB的函数名有时可看出来它要完成的功能,但不知它的参数是怎么传递的,还有结果是怎么回传的,它压栈的东西让人觉得稀里糊涂的。能不能请Wucheng或高手解释一下
这里多谢了!!
还有楼主辛苦了!
|
能力值:
( LV9,RANK:330 )
|
-
-
54 楼
最初由 Wucheng 发布 第7个: 通过字符串参考下断,输入name:Wucheng serial:223342 004025AA . 66:3D 0300 cmp ax, 3 ; name长度与3比 004025AE . 0F8C CB030000 jl 0040297F ; 小于,跳向失败 004025B4 . 8B4D A8 mov ecx, dword ptr [ebp-58] ........ 0040277B . 8BD8 mov ebx, eax 0040277D . 8B45 D8 mov eax, dword ptr [ebp-28] 00402780 . 8985 08FFFFFF mov dword ptr [ebp-F8], eax 00402786 . C785 00FFFFFF>mov dword ptr [ebp-100], 8 00402790 . B8 01000000 mov eax, 1 00402795 . 8985 78FFFFFF mov dword ptr [ebp-88], eax 0040279B . 89BD 70FFFFFF mov dword ptr [ebp-90], edi 004027A1 . C785 48FFFFFF>mov dword ptr [ebp-B8], 6 004027AB . 89BD 40FFFFFF mov dword ptr [ebp-C0], edi 004027B1 . 8985 38FFFFFF mov dword ptr [ebp-C8], eax 004027B7 . 89BD 30FFFFFF mov dword ptr [ebp-D0], edi 004027BD . 8D4D DC lea ecx, dword ptr [ebp-24] 004027C0 . 898D 28FFFFFF mov dword ptr [ebp-D8], ecx 004027C6 . C785 20FFFFFF>mov dword ptr [ebp-E0], 4008 004027D0 . 8D95 70FFFFFF lea edx, dword ptr [ebp-90] 004027D6 . 52 push edx 004027D7 . 8D45 B8 lea eax, dword ptr [ebp-48] 004027DA . 50 push eax 004027DB . 8D8D 40FFFFFF lea ecx, dword ptr [ebp-C0] 004027E1 . 51 push ecx 004027E2 . 8D55 90 lea edx, dword ptr [ebp-70] 004027E5 . 52 push edx 004027E6 . FF15 C8104000 call dword ptr [<&MSVBVM60.__vbaVarMo>; A mod 6=C 。。。。。。
这段看得我有点晕,从函数名可看出它要完成什么功能,但不知它的参数是怎么传递的,还有结果是怎么回传的,感觉压栈的东西并不是真正需要的参数或参数的地址啊。。。。
请Wucheng或那位大侠指点一二,多谢了!!
感谢楼主,楼主辛苦了!!
|
能力值:
( LV8,RANK:130 )
|
-
-
55 楼
好难啊,我分析了第一个,暴破可以了,关键跳找到了,不过关键call没找到啊
|
能力值:
( LV8,RANK:130 )
|
-
-
56 楼
初次尝试,太伤自尊了,再研究2天,看能不能做出第一个的注册机
|
能力值:
( LV9,RANK:1170 )
|
-
-
57 楼
最初由 dewar 发布 从VB的函数名有时可看出来它要完成的功能,但不知它的参数是怎么传递的,还有结果是怎么回传的,它压栈的东西让人觉得稀里糊涂的。能不能请Wucheng或高手解释一下 这里多谢了!! 还有楼主辛苦了!
如有以下指令:
push edx
push ecx
一般情况下,edx+8,ecx+8处为实际参数或参数的地址.你可以试试看.
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
自己做得KeyGenMe01
目标: happytown的KeyGenMe CrackMe
注册机:自己用vc编写了一个,要的喊!
破解工具:OD、计算器
首先用peid查壳,无壳。运行,收集足够的信息,用OD载入,通过字符串参考"Congratulations",找到如下信息:
00402568 . FF15 80104000 call dword ptr [<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0040256E . DC9D 14FFFFFF fcomp qword ptr [ebp-EC]
00402574 . DFE0 fstsw ax
00402576 F6C4 40 test ah, 40
00402579 0F84 86000000 je 00402605
0040257F . B9 04000280 mov ecx, 80020004
00402584 . 894D 8C mov dword ptr [ebp-74], ecx
00402587 . B8 0A000000 mov eax, 0A
0040258C . 8945 84 mov dword ptr [ebp-7C], eax
0040258F . 894D 9C mov dword ptr [ebp-64], ecx
00402592 . 8945 94 mov dword ptr [ebp-6C], eax
00402595 C785 6CFFFFFF>mov dword ptr [ebp-94], 00401C74 ;//** UNICODE "Congratulations"
0040259F BF 08000000 mov edi, 8
004025A4 89BD 64FFFFFF mov dword ptr [ebp-9C], edi
往上查找,找到
0040256E . DC9D 14FFFFFF fcomp qword ptr [ebp-EC] ;//堆栈中为密码,ebp-ec中为加密数据
00402574 . DFE0 fstsw ax
00402576 F6C4 40 test ah, 40
00402579 0F84 86000000 je 00402605 ;//爆破在此就可
往上追踪.
004024A9 . 8B1D 0C104000 mov ebx, dword ptr [<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
004024AF > 66:3B75 D0 cmp si, word ptr [ebp-30] ;//关键,处理密码,下断
004024B3 . 0F8F 93000000 jg 0040254C
004024B9 . C745 BC 01000>mov dword ptr [ebp-44], 1
注册信息处理:
004024A9 . 8B1D 0C104000 mov ebx, dword ptr [<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVarList
004024AF > 66:3B75 D0 cmp si, word ptr [ebp-30] ;//ebp-30记录用户name长度,si计数
004024B3 . 0F8F 93000000 jg 0040254C
004024B9 . C745 BC 01000>mov dword ptr [ebp-44], 1
004024C0 . C745 B4 02000>mov dword ptr [ebp-4C], 2
004024C7 . 8D45 CC lea eax, dword ptr [ebp-34] ;//用户name地址;ebp-24为密码地址
004024CA . 8985 7CFFFFFF mov dword ptr [ebp-84], eax
004024D0 . C785 74FFFFFF>mov dword ptr [ebp-8C], 4008
004024DA . 8D4D B4 lea ecx, dword ptr [ebp-4C]
004024DD . 51 push ecx
004024DE . 0FBFD6 movsx edx, si
004024E1 . 52 push edx
004024E2 . 8D85 74FFFFFF lea eax, dword ptr [ebp-8C]
004024E8 . 50 push eax
004024E9 . 8D4D A4 lea ecx, dword ptr [ebp-5C]
004024EC . 51 push ecx
004024ED . FF15 44104000 call dword ptr [<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
004024F3 . 8D55 A4 lea edx, dword ptr [ebp-5C]
004024F6 . 52 push edx
004024F7 . 8D45 C8 lea eax, dword ptr [ebp-38]
004024FA . 50 push eax
004024FB . FF15 74104000 call dword ptr [<&MSVBVM60.__vbaStrVarVal>>; MSVBVM60.__vbaStrVarVal
00402501 . 50 push eax
00402502 . FF15 18104000 call dword ptr [<&MSVBVM60.#516>] ; MSVBVM60.rtcAnsiValueBstr
00402508 . 66:0FAFC6 imul ax, si ;//用户名*次数password=m*i
0040250C . 0F80 5F010000 jo 00402671
00402512 . 0FBFC8 movsx ecx, ax
00402515 . 03CF add ecx, edi ;//pasword+=pasword
00402517 . 0F80 54010000 jo 00402671
0040251D . 8BF9 mov edi, ecx
0040251F . 8D4D C8 lea ecx, dword ptr [ebp-38]
00402522 . FF15 B4104000 call dword ptr [<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00402528 . 8D55 A4 lea edx, dword ptr [ebp-5C]
0040252B . 52 push edx
0040252C . 8D45 B4 lea eax, dword ptr [ebp-4C]
0040252F . 50 push eax
00402530 . 6A 02 push 2
00402532 . FFD3 call ebx
00402534 . 83C4 0C add esp, 0C
00402537 . B8 01000000 mov eax, 1
0040253C . 66:03C6 add ax, si
0040253F . 0F80 2C010000 jo 00402671
00402545 . 8BF0 mov esi, eax
00402547 .^ E9 63FFFFFF jmp 004024AF
0040254C > 69FF 96740100 imul edi, edi, 17496 ;//最后结束后,password=pasword*0x17496
00402425 . FF15 50104000 call dword ptr [<&MSVBVM60.__vbaI2I4>] ; MSVBVM60.__vbaI2I4
0040242B . 8945 D0 mov dword ptr [ebp-30], eax
0040242E . 66:3D 0300 cmp ax, 3 ;//用户名输入限制3
00402432 . 0F8C CD010000 jl 00402605
算法:(破解后,看了wucheng的帖子,借用呵呵)
1。依次取用户名ascii值,然后转换成10进制 m;
2。password = m*i(i是循环变量,用于取字符) + password ;//password 初始值为1
3。password = password*95382;
4。比较password(明码哦!)
|
能力值:
( LV2,RANK:10 )
|
-
-
59 楼
keygenme_02
目标: happytown的KeyGenMe CrackMe 02
破解工具:OD、计算器
注册机:自己用vc编写了一个,要的喊!
同一,比一还简单.直接把name中的字符相加,然后与一个实数异或.不同的是在
00402562 > \69FF 10030000 imul edi, edi, 310
00402568 . 0F80 27010000 jo 00402695
0040256E . DD05 E8104000 fld qword ptr [4010E8]
00402574 . FF15 9C104000 call dword ptr [<&MSVBVM60.__vbaFpI4>>; MSVBVM60.__vbaFpI4
0040257A . 33F8 xor edi, eax
用了xor edi,eax.
往上看
0040256E . DD05 E8104000 fld qword ptr [4010E8]这句是关键,实数入栈:
ds:[004010E8]=648213125.0000000
转化Hex为 26a2f285
get it!!!
用户名输入限制为2-25
|
能力值:
( LV2,RANK:10 )
|
-
-
60 楼
keygenme_03
目标: happytown的KeyGenMe CrackMe
破解工具:OD、计算器
注册机:vc编写了一个,要的喊
关键点:(前面关于name得处理,同01,02)
0040264E > /8BC6 mov eax, esi
00402650 . |99 cdq
00402651 . |B9 24000000 mov ecx, 24
00402656 . |F7F9 idiv ecx ;除以24取余数于edx
00402658 . |8B45 C0 mov eax, dword ptr [ebp-40]
0040265B . |8985 4CFFFFFF mov dword ptr [ebp-B4], eax
00402661 . |C785 44FFFFFF>mov dword ptr [ebp-BC], 8
0040266B . |C745 AC 01000>mov dword ptr [ebp-54], 1
00402672 . |C745 A4 02000>mov dword ptr [ebp-5C], 2
00402679 . |8D4D DC lea ecx, dword ptr [ebp-24]
0040267C . |898D 6CFFFFFF mov dword ptr [ebp-94], ecx
00402682 . |C785 64FFFFFF>mov dword ptr [ebp-9C], 4008
0040268C . |8D45 A4 lea eax, dword ptr [ebp-5C]
0040268F . |50 push eax
00402690 . |83C2 01 add edx, 1 ;edx+1
00402693 . |0F80 BC010000 jo 00402855
00402699 . |52 push edx ;入栈
call 来自 MSVBVM60.rtcMidCharBstr
733B4644 2BF3 sub esi, ebx
733B4646 8BC6 mov eax, esi
733B4648 50 push eax
733B4649 8B4424 14 mov eax, dword ptr [esp+14]
733B464D 03D8 add ebx, eax ;把查表的序号(偏移值)算出,得值在ebx中
733B464F 53 push ebx
733B4650 FF15 EC193973 call dword ptr [<&OLEAUT32.#150>] ; OLEAUT32.SysAllocStringByteLen
733B4656 8BF0 mov esi, eax
733B4658 85F6 test esi, esi
733B465A 0F84 D0320200 je 733D7930
KeyGenMe模块中:
004026DE . 83C4 10 add esp, 10
004026E1 . DB45 D0 fild dword ptr [ebp-30] ;把上次处理后得商值[epb-30],压入堆栈
004026E4 . DD9D 04FFFFFF fstp qword ptr [ebp-FC] ;弹出,存在[ebp-fc]处
004026EA . DD85 04FFFFFF fld qword ptr [ebp-FC] ;实数压栈
004026F0 . 833D 00304000>cmp dword ptr [403000], 0
004026F7 . 75 08 jnz short 00402701
004026F9 . DC35 F8104000 fdiv qword ptr [4010F8] ;/3
算法是:
1 依次取用户名ascii值,然后转换成10进制 m;
2 password = m*i(i是循环变量,用于取字符) + password ;//password 初始值为1
3 password = password*0x147d5;
4 n = password%24;
5 根据n值查表"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"得密码。
6 password/3,四舍五入,循环4-6
注,Name长度限制很简单,就不再罗嗦了。
爆破同01 02。
|
能力值:
( LV9,RANK:330 )
|
-
-
61 楼
最初由 bxm 发布 如有以下指令: push edx push ecx
一般情况下,edx+8,ecx+8处为实际参数或参数的地址.你可以试试看.
多谢bxm的指点!
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
学习学习再学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
63 楼
最初由 alpsdew 发布 for( ; j < Lenth ; j++ ) { Password = ( (int)Name[j] ) * (j+1) + Password ; }
int j=1;
for( ; j <= Lenth ; j++ )
{
Password = ( (int)Name[j-1] ) * (j) + Password ;
}
看了你的注册机再看的汇编
另外一些VB的API说明在哪里能够找到?我从看雪里下载的VB API不全啊,请大虾们告诉我们这些菜鸟
__vbafreestr,__vbafreevarlist等等都找不到
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
我是新手,向楼主学习
|
能力值:
( LV9,RANK:850 )
|
-
-
65 楼
这位版主强呀```
看来偶要加点米饭`把版主给crack掉``西
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
最初由 Wucheng 发布 我跟了第2个,算法如下: 1.name的每个字符累加后再加1,记为A 2.A^26A2F285=B 3.B的十进制即serial. 如: ........
老兄..
你的算法是怎?算出?的..
本人是菜?,能??破文?..????...
本人只能?哕用一部份的破解工具,但?什?算法的方法一?不明白..
|
能力值:
( LV3,RANK:20 )
|
-
-
67 楼
现在才知道,没学过汇编就跟本别想弄更深的破解。
痛苦中。。。。。。
|
能力值:
( LV9,RANK:1250 )
|
-
-
68 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
69 楼
支持你帮住我等菜菜!
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
多谢老大,初学破解,学习中
|
能力值:
( LV9,RANK:1250 )
|
-
-
71 楼
最初由 kaien 发布 我看你干脆以后自己去开发一些加密算法好了,不要做成线性的,那些太简单了。做的复杂点,先试试多项式的。再把一些更复杂的数学函数都用用...
我写了一个对称加密算法.比较适合于软件加密.不过从来也没有用在crackme中,因为不可能有人逆向出来.也写了几个hash算法,
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
先下了
慢慢研究~~
谢谢~~~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
73 楼
新手.学习中.
呵呵
先试下.
不行再来请教个位
先谢谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
74 楼
学习中啊。!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
75 楼
真是入门的好教程雅 谢谢版主
|
|
|