-
-
[原创]看雪2016 第二十八题 CrackMe逆向分析
-
发表于:
2016-12-28 10:18
7015
-
[原创]看雪2016 第二十八题 CrackMe逆向分析
IDA 反编译main如下:
scanf("%s", sn);
v3 = strlen(sn);
if ( v3 > 0x64 )
goto LABEL_11;
if ( v3 <= 0x3C )
goto LABEL_11;
v4 = (char *)&v16 + 15;
do
v5 = (v4++)[1];
while ( v5 );
*(_WORD *)v4 = 0x3D3D;
v13 = 0xEFCDAB89;
v14 = 0x98BADCFE;
v15 = 0x10325476;
md5(sn, (unsigned int *)&v10, strlen(sn));
md5_final((unsigned int *)&v10);
decode(1, &sn[40], word_405020, 0x34A00, word_405020);
if ( !v7
|| sub_4012EE(
(unsigned __int8)sn[30] - 0x30,
(int)v7,
(unsigned __int8)sn[46] - 0x30,
(unsigned __int8)sn[58] - 0x30) )
sub_40143D(sn);
v2 = luaL_newstate();
luaL_openlibs(v2);
lua_pushstring(v2, v1);
lua_setglobal(v2, &unk_404138);
*(_WORD *)&v13[1] = 0;
v13[3] = 0;
*(_WORD *)v13 = v1[30];
v13[1] = v1[46];
*(_WORD *)&v13[2] = v1[58];
decode(3, v13, a3, 0x8454, a3);
if ( luaL_loadbufferx(v2, a3, 0x8454, &unk_40413C, 0) || lua_pcallk(v2, 0, 1, 0, 0, 0) )
{
printf("error\n");
lua_settop(v2, -2);
return 1;
}
[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!