首页
社区
课程
招聘
[原创]我是来转正的~flareon 2015 level2_very_success writeup
发表于: 2015-10-26 17:31 6770

[原创]我是来转正的~flareon 2015 level2_very_success writeup

2015-10-26 17:31
6770

注册了半年了,也没个正式会员,真是渣啊。。把最近的一篇原创文发上来,希望能达到优秀贴转个会员,更加方便和大家交流~

这是fireeye2015年CTF比赛的第二关,一个windows的逆向题目,题目放在附件了哈~

--------------------------------分析过程--------------------------------------

首先上IDA,注意,这里前面401000处第一条指令跳过,修复栈平衡。

然后发现验证的函数如下,可以看出这里主要是要逆算法了。

当时卡在我分析的地方,以后一定记住所见即所得。

把算法捋一下,同时用ollydbg跑,即可看出算法的大致端倪。

----------------------------------code------------------------------------------------

int __usercall sub_401084@<eax>(int result@<eax>, int v_0x11, int str, signed int len)
{
  __int16 sum; // bx@1
  signed int lenval; // ecx@1
  int ptr; // esi@2
  int v7; // edi@2
  char chr; // al@3
  unsigned int v9; // et0@3
  char v10; // ah@3
  char v11; // cf@3
  __int16 tmprs; // ax@3
  bool equal; // zf@3
  int unuse; // edi@3
  int result_2; // [sp+0h] [bp-Ch]@3
 
  sum = 0;
  lenval = 37;
  if ( len >= 37 )                              // len > 37
  {
    ptr = str;                                  // v7 = 35 at first
    v7 = v_0x11 + 36;
    while ( 1 )
    {
      LOWORD(result) = 455;
      result_2 = result;
      chr = *(_BYTE *)ptr++;
      v9 = __readeflags();                      // pushf
      v10 = __ROL1__(1, sum & 3);
      __writeeflags(v9);                        // popf
      tmprs = (unsigned __int8)(v10 + v11 + (result_2 ^ chr));
      sum += tmprs;
      equal = *(_BYTE *)v7 == (_BYTE)tmprs;     // key
      unuse = v7 + 1;
      if ( !equal )
        LOWORD(lenval) = 0;
      result = result_2;
      if ( !lenval )
        break;
      v7 = unuse - 2;                           // v7 = v7 - 1
      --lenval;
      if ( !lenval )
        return result;
    }
  }
  return 0;
}

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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (19)
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
排版太差,原文件没上传,分析过程描述不够清晰。
帖子还是顶了。
2015-10-26 20:23
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
感谢指正\(^o^)/~已经修改了一下,对逆向有兴趣的同学可以试着做一做哦
2015-10-26 21:36
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
借贵贴一用,我也是来转正的
2015-10-26 22:19
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
帖子不错,收藏了。
2015-10-27 10:37
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
自己顶%>_<%
2015-10-27 22:36
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
我再顶。。。
2015-10-29 12:24
0
雪    币: 44153
活跃值: (20210)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
转正成功!感谢分离文章!
2015-10-29 13:40
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
good
2015-10-29 13:42
0
雪    币: 5
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2015-11-10 14:25
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
很棒!
2015-11-10 18:39
0
雪    币: 12201
活跃值: (4948)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
菜鸟来学习了哟
2015-11-11 21:31
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习。。。。。。。。。
2015-11-11 21:35
0
雪    币: 14
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不错不错不错
2015-11-11 23:28
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不容易,顶吧。
2015-11-13 12:35
0
雪    币: 560
活跃值: (909)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
没标明code是python啊  ,很多人看不懂的
2015-11-13 22:42
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
我 是。。
2015-11-17 12:57
0
雪    币: 545
活跃值: (247)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
18
借贵地一用,求转正
2015-11-21 16:18
0
雪    币: 115
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
来学习的
2015-11-24 20:26
0
雪    币: 203
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
来学习学习~转正真难,挂了很久才2kx。。。。。
2015-11-25 20:24
0
游客
登录 | 注册 方可回帖
返回
//