首页
社区
课程
招聘
[求助]小白请教,帮忙看看代码
发表于: 2018-3-4 19:52 2828

[求助]小白请教,帮忙看看代码

2018-3-4 19:52
2828
FILE *__fastcall ext_fopen(FILE *file)
{
  FILE *v1; // rbp
  uLong v2; // r13
  _BYTE *v3; // rax
  _BYTE *v4; // rbx
  uLong v5; // r13
  __int64 v6; // rdx
  void *v7; // r14
  FILE *result; // rax
  uLong flen; // [rsp+8h] [rbp-40h]
  uLong ulen; // [rsp+10h] [rbp-38h]
  unsigned __int64 v11; // [rsp+18h] [rbp-30h]

  v1 = file;
  v11 = __readfsqword(0x28u);
  fread(&ulen, 8uLL, 1uLL, file);
  fread(&flen, 8uLL, 1uLL, file);
  v2 = flen;
  v3 = malloc(flen);
  if ( !v3 )
    goto LABEL_14;
  v4 = v3;
  fread(v3, 1uLL, v2, file);
  v5 = flen;
  if ( flen )
  {
    v6 = 0LL;
    do
    {
      v4[v6] = v4[v6] - 7 - v6;
      ++v6;
    }
    while ( v5 != v6 );
  }
  v7 = malloc(ulen);
  if ( v7 )
  {
    if ( (unsigned int)uncompress() )
    {
      php_printf();
    }
    else
    {
      fclose(file);
      v1 = tmpfile();
      fwrite(v7, 1uLL, ulen, v1);
      free(v4);
      free(v7);
      rewind(v1);
    }
    result = v1;
  }
  else
  {
LABEL_14:
    php_printf();
    result = file;
  }
  return result;

好心人能帮我翻译成C/C++的代码吗?看不太懂。。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
2
看这语法,就是C++的呀
2018-3-4 21:56
0
雪    币: 70
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
没看到两个堆空间的使用就释放了,除了  “v4[v6]  =  v4[v6]  -  7  -  v6;”,这段代码看不出什么
2018-3-5 05:36
0
雪    币: 160
活跃值: (272)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
这个没有什么可再简单的,都是c的语法,  很明显,读8个字节作为解压后的长度,读8个字节作为本文件的长度,  用v4[v6]    =    v4[v6]    -    7    -    v6  解密?,  然后再解压缩,就出来原始数据了
2018-3-5 09:07
0
雪    币: 4396
活跃值: (4383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这都是基本能编译的C++代码了  还要什么C++  这就是啊.    F5很强大!
2018-3-5 09:24
0
游客
登录 | 注册 方可回帖
返回
//