从零开始的[BUUCTF-reverse1]

[BUUCTF-reverse1]

逆向复习

1.打开IDA导入文件(其实首先要放入Exeinfo PE中查看信息)

2.shift+f12搜索关键字符串 如

3.遇到问题 摸到字符串地址的时候 不能用f5查看伪代码 并且不能转换成框图 怀疑原因是ida没有识别出这些是函数

我曾经也遇到过这个问题。然而在百度的过程中,发现“Create Fun”方法并没有用。image-20201006171151959

实际上,跟进下面sub_1400118C0地址,就能找到函数所在。(已然是框图显示)

image-20201006171251650

F5查看loc_140011948的伪代码(改正:其实F5已经结合整个框图)

int64 sub_1400118C0()
{
  char *v0; // rdi
  signed __int64 i; // rcx
  size_t v2; // rax
  size_t v3; // rax
  char v5; // [rsp+0h] [rbp-20h]
  int j; // [rsp+24h] [rbp+4h]
  char Str1; // [rsp+48h] [rbp+28h]
  unsigned __int64 v8; // [rsp+128h] [rbp+108h]

  v0 = &v5;
  for ( i = 82i64; i; --i )
  {
    *(_DWORD *)v0 = -858993460;
    v0 += 4;
  }
  for ( j = 0; ; ++j )
  {
    v8 = j;
    v2 = j_strlen(Str2);
    if ( v8 > v2 )
      break;
    if ( Str2[j] == 111 )
      Str2[j] = 48;
  }
  sub_1400111D1("input the flag:");
  sub_14001128F("%20s", &Str1);
  v3 = j_strlen(Str2);
  if ( !strncmp(&Str1, Str2, v3) )
    sub_1400111D1("this is the right flag!\n");
  else
    sub_1400111D1("wrong flag\n");
  sub_14001113B(&v5, &unk_140019D00);
  return 0i64;
}

根据 if ( !strncmp(&Str1, Str2, v3) ) 可以明白,这是让str1和str2比较。

跟进str2可以发现,flag就是{hello_world}

image-20201006172059661

但根据上面的代码,会发现str2被处理过。

image-20201006172402838

大意就是,从str2字符串第一位开始遍历到最后一位,如果是111,则变成48.

111和48是什么? 其实是ASCII码,选中后按R即可变成字母。(感谢之前瞎玩的经验)

image-20201006172536880

所以很明显,实际上的flag就是flag{hell0_w0rld}。

思考:有无用dbg进行动态分析的方法?能不能直接从start函数跳转进目标函数?看伪代码其实是种捷径,但我连这种方法都忘了,并且这里面还有许多不懂的。

1.什么是DATA XREF

2.这个rdata的地址命名有什么含义

这个感觉,就好像直接右键记事本打开文件,然后搜索flag一样莫名其妙。大概就是要这样不断积累经验吧。

DATA XREF

2.这个rdata的地址命名有什么含义

这个感觉,就好像直接右键记事本打开文件,然后搜索flag一样莫名其妙。大概就是要这样不断积累经验吧。

PS:还有个致命问题,打开文件提示0xc000007b错误,无法打开,导致我不能放进dbg动态分析。想解决,为此浪费了许多时间,但都无果。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值