-
-
[原创]第六题:消失的岛屿
-
发表于: 2019-6-17 21:06 2701
-
简单看下ida反汇编的情况,稍微修改一下,差不多就是这样
int main()
{
int v3; // eax
unsigned __int8 bindata; // [esp+11h] [ebp-3Fh]
char v6[]= "!NGV%,$h1f4S3%2P(hkQ94==";
char *v7; // [esp+4Ch] [ebp-4h]
unsigned __int8 bindata[31];
scanf("%s",bindata);
v7 = (char *)calloc(1u, 1024u);
base64_encode(bindata, v7,30);
if(strcmp(v7,v6))
printf("sucess");
else
printf("error");
return 0;
}
好,那么现在只要根据base64_encode写逆过来的decode就行了
问题来了
base64_encode中含有这样的代码
v4 = &base64[i]; // 取值,v4=base64[i]
*v4 = charEncrypt((bindata[i] >> 2) & 63);
current = 16 * bindata[i] & 48;
v10 = &base64[v9];
*v10 = charEncrypt((bindata[i + 1] >> 4) | current);
currenta = 4 * bindata[i + 1] & 60;
base64[jb] = charEncrypt((bindata[i + 2] >> 6) | currenta); //jb=j+2
v13 = &base64[v12]; //v12=jb+1 即j+3
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课