buu-re-[HDCTF2019]Maze(花指令)

exeinfope查看信息

脱壳

ida分析

 首先jnz跳到下一条指令,相当于没跳转,先nop掉(选中前面的地址,然后Edit-Patch program-Assemble,输入no)

 下面call了一个错误的地址。先按d转化为数据(不能直接全nop掉,因为里面可能有有用的数据)

 然后逐个nop,Edit-Patch program-Change Byte,修改为0x90(先nop第一个,再nop第二个这样),详见链接

然后选中该部分代码按c,发现没有错误了。

 选中main函数所有关键代码,按p封装为函数,即可Tab转为伪代码。

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int i; // [esp+10h] [ebp-14h]
  char v5[16]; // [esp+14h] [ebp-10h] BYREF

  sub_401140(aGoThroughTheMa);
  scanf("%14s", v5);
  for ( i = 0; i <= 13; ++i )
  {
    switch ( v5[i] )
    {
      case 'a':
        --*(_DWORD *)asc_408078;
        break;
      case 'd':
        ++*(_DWORD *)asc_408078;
        break;
      case 's':
        --dword_40807C;
        break;
      case 'w':
        ++dword_40807C;
        break;
      default:
        continue;
    }
  }
  if ( *(_DWORD *)asc_408078 == 5 && dword_40807C == -4 )
  {
    sub_401140(aCongratulation);
    sub_401140(aHereIsTheFlagF);
  }
  else
  {
    sub_401140(aTryAgain);
  }
  return 0;
}

 分析函数查找字符串。

结合题目名称为迷宫题,70个字符,猜测为7x10。

*******+**
*******s**
****aaas**
**aas*****
**s**F****
**sddd****
**********

 得到flag!

flag{ssaaasaassdddw}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值