首页
社区
课程
招聘
[原创]一道简单的RE迷宫题
发表于: 2025-9-18 22:38 2568

[原创]一道简单的RE迷宫题

2025-9-18 22:38
2568

    首先使用工具查看文件信息,是Linux系统下的一个文件,而且没有打包,很正常的程序。

    不想动态分析啊,动态分析很依赖操作系统的嘛,用IDA查看文件。函数也很简单,一个初始化跳转到main函数,然后就可以分析函数内容了。其实说是逆向还是在这里主要看代码。这里为了方便逐一分析代码就直接粘贴过来了。

__int64 __fastcall main(__int64 a1, char **a2, char **a3)

{

  const char *v3; // rsi

  signed __int64 v4; // rbx

  signed int v5; // eax

  char v6; // bp

  char v7; // al

  const char *v8; // rdi

  __int64 v10; // [rsp+0h] [rbp-28h]


  v10 = 0LL;

  puts("Input flag:");

  scanf("%s", &s1, 0LL);        这里可以看到要求用户输入,存储在s1里面,0LL是一个多余的参数,可以不用管。

  if ( strlen(&s1) != 24 || (v3 = "nctf{", strncmp(&s1, "nctf{", 5uLL)) || *(&byte_6010BF + 24) != 125 )

                这里处理用户输入,主要的判断条件有三个:

                1.判断输入长度是否为24,

                2.将v3赋值为”nctf{“,把s1的前五个字符与”nctf{“进行比较,其中5uLL是一个参数,表示前5,无符号,LongLong型,

                3.&byte_6010BF + 24地址处的内容是否为”}“,也就是ASCII码125。

  {

LABEL_22:

    puts("Wrong flag!");                前面条件不符就直接失败了啊。

    exit(-1);

  }

  v4 = 5LL;                v4被赋值为5,LL表示5是一个LongLong型。

  if ( strlen(&s1) - 1 > 5 )

  {

    while ( 1 )

    {

      v5 = *(&s1 + v4);                这里就比较好懂了,接下来要从用户输入的第6个字符开始分析。

      v6 = 0;

      if ( v5 > 78 )                

      {

        v5 = (unsigned __int8)v5;         为什么v5要做这么一个操作呢,v5在这里要确保字符在这里被解析成一个无符号字节,如果是负的可能有意外结果。

        if ( (unsigned __int8)v5 == 79 )                一、O

        {

          v7 = sub_400650((char *)&v10 + 4, v3);

          goto LABEL_14;

        }

        if ( v5 == 111 )                二、o

        {

          v7 = sub_400660((char *)&v10 + 4, v3);

          goto LABEL_14;

        }

      }

      else

      {

        v5 = (unsigned __int8)v5;

        if ( (unsigned __int8)v5 == 46 )                三、.

        {

          v7 = sub_400670(&v10, v3);

          goto LABEL_14;

        }

        if ( v5 == 48 )                四、0

        {

          v7 = sub_400680((int *)&v10);


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

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