能力值:
( LV15,RANK:520 )
2 楼
沙发一个,好棒!!!!!!
能力值:
( LV2,RANK:10 )
3 楼
发现一张图片的CreateFile 拼错了`
能力值:
( LV2,RANK:10 )
4 楼
不错啊,哈哈,以后我也学crack
能力值:
( LV7,RANK:110 )
5 楼
刚看了下 用IDA根据DialogBoxParamA的参数 找到消息处理函数 下面应该就是那三个button的处理代码 a3 == 402应该就是check 不过lz的方法也不错 顶个
if ( a3 == 106 )
MessageBoxA(
0,
"CrackMe v1.0\r\nAuthor: Greedy Fly\r\nCompiler: masm32\r\nDate: September 1, 2013\r\n",
"About...",
0);
if ( a3 == 402 )
{
word_40314C = 28003;
word_40314E = 25646;
word_403150 = 27756;
v6 = sub_4015C5();
v7 = ((int (__cdecl *)(__int16 *, signed int, signed int, _DWORD, signed int, _DWORD, _DWORD))v6)(
&word_40314C,
-2147483648,
1,
0,
3,
0,
0)
+ 1;
if ( !v7 )
goto LABEL_33;
hFile = (HANDLE)(v7 - 1);
if ( sub_401598() != 27 )
goto LABEL_33;
ReadFile(hFile, &unk_403153, 0x1Bu, &NumberOfBytesRead, 0);
…………省略……
}
else
{
LABEL_33:
v22 = GetDlgItem(hDlg, 404);
SendMessageA(v22, 0xF5u, 0, 0);
}
}
else
{
if ( a3 == 404 )
SendMessageA(hDlg, 0x10u, 0, 0);
}
能力值:
( LV13,RANK:410 )
6 楼
其实的话,LZ你的注册机更加接近于计算原理的演示。
实际上的话,这个key根本就是固定的,中间很多段的asm是可以等效转换的。而且你的过程没有输入,所以导致这个函数最后被release编译出来很可能只有一串的mov操作,或者更变态直接就是文件操作部分了。
以下是等效操作的分析(计算错误请自行忽略):
dwTemp = 0x27418BE4; //assume dwTemp=a4a3a2a1;
__asm
{
mov edx, 0xBC75; //edx=0xBC75
xchg dh, dl //edx=0x75BC
shl edx, 0x10; //edx=0x75BC0000
mov eax, dwTemp //eax=a4a3a2a1
mov dx, ax; //edx=0x75BCa2a1
xor edx, 0x12D3E480;//edx= (0x75^0x12)(0xBC^0xD3)(a2^0xE4)(a1^0x80)
bswap edx //b4b3b2b1->b1b2b3b4
//edx=(a1^0x80)(a2^0xE4)(0xBC^0xD3)(70x5^0x12)
//equal to
//mov eax,dwTemp
//xchg ah,al
//xor ax,0x80E4
//mov dx,ax
//shl edx,10
//mov dx,(0xBC^0xD3)(70x5^0x12)
mov dwData, edx
}
so dwData=(DWORD)MAKELONG(MAKEWORD(70x5^0x12,0xBC^0xD3),MAKEWORD(HIBYTE(LOWORD(dwTemp))^0xE4,LOWBYTE(LOWORD(dwTemp))^0x80);
MAKELONG和MAKEWORD这2个宏都是高位字节在第二个参数
-----------------------------------
__asm
{
mov dx,0x2020
mov byData,dl //byData=0x20;
mov dl,0x67 //dx=0x2067
bswap edx //edx=0x6720????
mov dx,0x6120 //edx=0x67206120
mov dwData,edx
}
so dwData=0x67206120;
----------------------------------------
dwData = (0x37261636 >>4) | (0x37261636<<28);
/*
(0x37261636 >>4) = 0x03726163
(0x37261636<<28) = 0x60000000
dwData=0x63726163;
*/
__asm
{
mov eax,dwData
bswap eax
mov dwData, eax
}
so dwData=0x63617263;
-------------------------------------
前面dwData已经算出
__asm
{
mov eax, dwData //eax=0x63617263
bswap eax //eax=0x63726163
mov edx, 0xCED7D3A2
sub edx,eax //edx=0x6B65723F
bswap edx //edx=0x3F72656B
mov dwData,edx
}
so dwData=0x3F72656B
能力值:
( LV2,RANK:10 )
7 楼
膜拜!嘿嘿。
能力值:
( LV4,RANK:55 )
8 楼
好眼力
能力值:
( LV4,RANK:55 )
9 楼
嗯,不错哦。。。我又积累了几个宏操作
能力值:
( LV4,RANK:55 )
10 楼
哈哈,怎么就骗了一个精华呢
能力值:
( LV2,RANK:10 )
11 楼
楼主辛苦了,学习原创。
能力值:
( LV2,RANK:10 )
12 楼
key的第八位取什么值都可以吧.
能力值:
( LV4,RANK:55 )
13 楼
Yes。生成cm.dll 后,用winHex看了一下内容,自己加的的a,我想作者写的时候可能移位了,结果漏掉了这个位置的校验
能力值:
( LV5,RANK:70 )
14 楼
LZ辛苦。mark
能力值:
( LV2,RANK:10 )
15 楼
这个CM确实有意思,谢谢楼主分享
我希望我有一天能把最后的那个问号能变成叹号!
能力值:
( LV2,RANK:10 )
16 楼
辛苦了,有空就学习一下