首页
社区
课程
招聘
[原创]第六题:消失的岛屿
发表于: 2019-6-17 21:06 2701

[原创]第六题:消失的岛屿

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直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//