能力值:
( LV12,RANK:740 )
|
-
-
2 楼
HappyTown辛苦了,学习一下!
|
能力值:
( LV6,RANK:90 )
|
-
-
3 楼
又出了,跟了几天的21了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
请问楼上的
CALL <CrackMe_.SHA1INIT>
这个sha1init是怎么解析出来的,要什么插件?
|
能力值:
( LV9,RANK:650 )
|
-
-
5 楼
00402E00 /$ 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]
00402E04 |. 33C9 XOR ECX,ECX
00402E06 |. C700 01234567 MOV DWORD PTR DS:[EAX],67452301
00402E0C |. C740 04 89ABC>MOV DWORD PTR DS:[EAX+4],EFCDAB89
00402E13 |. C740 08 FEDCB>MOV DWORD PTR DS:[EAX+8],98BADCFE
00402E1A |. C740 0C 76543>MOV DWORD PTR DS:[EAX+C],10325476
00402E21 |. C740 10 F0E1D>MOV DWORD PTR DS:[EAX+10],C3D2E1F0
00402E28 |. 8948 14 MOV DWORD PTR DS:[EAX+14],ECX
00402E2B |. 8948 18 MOV DWORD PTR DS:[EAX+18],ECX
00402E2E |. 8948 5C MOV DWORD PTR DS:[EAX+5C],ECX
00402E31 |. B8 01000000 MOV EAX,1
00402E36 \. C3 RETN
从这里的几个常量可以看出是SHA1吧!
|
能力值:
( LV12,RANK:740 )
|
-
-
6 楼
to zheng:那个是自己分析出来的,如hbqjxhw所说,根据几个常数判断出是sha1的初始化。在olly中加个标签,olly就显示成这样:右击-〉标签,起个名字就OK了。 又用VC写了个Keygen。不会编程,大家别笑话:) i=GetWindowText(hWndEditName,(char*)szName,200);
if (i<4) {SetWindowText(hWndEditKey,"Bad Name...");return 0;}
SetWindowText(hWndEditKey,(char*)szName);
SHA1Init(&shactx);
SHA1Update(&shactx,szName,i);
SHA1Final(out, &shactx);
cast_setkey(&mykey,rippedkey1, 16);
cast_encrypt(&mykey,out,tmp);
tmp1=tmp[0];
tmp[0]=tmp[3];
tmp[3]=tmp1;
tmp1=tmp[1];
tmp[1]=tmp[2];
tmp[2]=tmp1;
tmp1=tmp[4];
tmp[4]=tmp[7];
tmp[7]=tmp1;
tmp1=tmp[5];
tmp[5]=tmp[6];
tmp[6]=tmp1;
lpKey=(long*)tmp;
lpKey1=(long*)&tmp[4];
wsprintf(szKey,szFmt,*lpKey,*lpKey1);
SetWindowText(hWndEditKey,szKey);
=============
win32汇编和vc写起来是一样的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢解答,sha有几个常数容易,cast又是根据什么判断的
|
能力值:
( LV9,RANK:650 )
|
-
-
8 楼
支持 aalloverred兄搞个VB版的CAST_128,一块三毛钱的VC版怎么也搞不定主函数是如何把字符串转换为数字的,也希望aalloverred兄提示提示。
typedef unsigned char u8; /* 8-bit unsigned */
typedef unsigned long u32; /* 32-bit unsigned */
typedef struct {
u32 xkey[32]; /* Key, after expansion */
int rounds; /* Number of rounds to use, 12 or 16 */
} cast_key;
void cast_setkey(cast_key* key, u8* rawkey, int keybytes);
void cast_encrypt(cast_key* key, u8* inblock, u8* outblock);
void cast_decrypt(cast_key* key, u8* inblock, u8* outblock);
|
能力值:
( LV9,RANK:650 )
|
-
-
9 楼
最初由 zheng 发布 谢谢解答,sha有几个常数容易,cast又是根据什么判断的
现在正在研究CAST加密算法,此算法应该根据算法的计算方式,可以判断一下。
|
能力值:
( LV9,RANK:650 )
|
-
-
10 楼
cast_setkey(&mykey,rippedkey1, 16);
cast_encrypt(&mykey,out,tmp);
第一行应该是根据密钥计算出一个密钥表。
第二行应该是加密字符串。
假如密钥是这个:0123456712345678234567893456789A
加密字符串是这个:0123456789ABCDEF
如何把这两个字符串通过窗口输入代入到函数内呢?
|
能力值:
( LV9,RANK:1250 )
|
-
-
11 楼
|
|
|