- UID
- 44482
注册时间2008-2-7
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
发表于 2010-4-19 17:07:38
|
显示全部楼层
char input[10]; //输入的字符串
//3E 52 50 51 5D 41
char *pStr = ">RPQ]A";
int result = 6;
for (int n = 5; n >= 0; n--)
{
result += pStr[n] - (input[n] ^ 0x36 - n);
}
/*
x1 ^ 36 = 3f + 5
x2 ^ 36 = 53 + 4
x3 ^ 36 = 51 + 3
x4 ^ 36 = 52 + 2
x5 ^ 36 = 5E + 1
x6 ^ 36 = 42 + 0
sn:rabbit
*/
只要满足result = 0即可。kengen写起来太麻烦了,我这里是令每一次运算等于-1.因为result初始为len(6)。所以一个可用pass:rabbit
关键跳- 00401236 85C0 test eax,eax
- 00401238 74 37 je short crack4.00401271
复制代码 算法部分- 0040109E 8B65 E8 mov esp,dword ptr ss:[ebp-18]
- 004010A1 8B5D D0 mov ebx,dword ptr ss:[ebp-30]
- 004010A4 33D2 xor edx,edx
- 004010A6 8B75 08 mov esi,dword ptr ss:[ebp+8]
- 004010A9 8D45 D8 lea eax,dword ptr ss:[ebp-28]
- 004010AC 2BF0 sub esi,eax
- 004010AE FF4D E4 dec dword ptr ss:[ebp-1C]
- 004010B1 8D4C15 D8 lea ecx,dword ptr ss:[ebp+edx-28]
- 004010B5 0FBE040E movsx eax,byte ptr ds:[esi+ecx]
- 004010B9 83F0 36 xor eax,36
- 004010BC 2B45 E4 sub eax,dword ptr ss:[ebp-1C]
- 004010BF 0FBE09 movsx ecx,byte ptr ds:[ecx]
- 004010C2 2BC8 sub ecx,eax
- 004010C4 03D9 add ebx,ecx
- 004010C6 42 inc edx
- 004010C7 83FA 06 cmp edx,6
- 004010CA ^ 7C E2 jl short crack4.004010AE
复制代码 关键标记位置位- 004010D2 85DB test ebx,ebx
- 004010D4 0F94C0 sete al
复制代码 |
|