攻防世界_Reverse_game

本文介绍了如何在攻防世界CTF挑战中,通过使用IDA静态分析来解决Reverse游戏。作者从搜索main函数开始,逐步解析汇编代码,找到了关键的flag输出函数,最终通过编写Python脚本并运行得到了Flag:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打开发现是一个游戏,挺简单的,直接输入12345678就能直接拿到flag在这里插入图片描述

使用IDA静态分析

在函数中搜索main,进入main函数,按F5进行反汇编

 int __cdecl main(int argc, const char **argv, const char **envp)
 {
   
   
	int result; // eax
	
main_0();
return result;
}

跳转到main_0函数

	void __cdecl main_0()
	{
   
   
	  signed int i; // [esp+DCh] [ebp-20h]
	  int v1; // [esp+F4h] [ebp-8h]
	
	  sub_13FA7BE(&unk_14AB110);
	  sub_13FA7BE(&unk_14AB158);
	  sub_13FA7BE(&unk_14AB1A0);
	  sub_13FA7BE(&unk_14AB1E8);
	  sub_13FA7BE(&unk_14AB230);
	  sub_13FA7BE(&unk_14AB278);
	  sub_13FA7BE(&unk_14AB2C0);
	  sub_13FA7BE(&unk_14AB308);
	  sub_13FA7BE(&unk_14AAFD0);
	  sub_13FA7BE("|              by 0x61                                 |\n");
	  sub_13FA7BE("|                                                      |\n");
	  sub_13FA7BE("|------------------------------------------------------|\n");
	  sub_13FA7BE(
	    "Play a game\n"
	    "The n is the serial number of the lamp,and m is the state of the lamp\n"
	    "If m of the Nth lamp is 1,it's on ,if not it's off\n"
	    "At first all the lights were closed\n");
	  sub_13FA7BE("Now you can input n to change its state\n");
	  sub_13FA7BE(
	    "But you should pay attention to one thing,if you change the state of the Nth lamp,the state of (N-1)th and (N+1)th w"
	    "ill be changed too\n");
	  sub_13FA7BE("When all lamps are on,flag will appear\n");
	  sub_13FA7BE("Now,input n \n");
	  while ( 1 )
	  {
   
   
	    while ( 1 )
	    {
   
   
	      sub_13FA7BE("input n,n(1-8)\n");
	      sub_13F9418();
	      sub_13FA7BE("n=");
	      sub_13F96D4("%d", &v1);
	      sub_13FA7BE("\n");
	      if ( v1 >= 0 && v1 <= 8 )
	        break;
	      sub_13FA7BE("sorry,n error,try again\n");
	    }
	    if ( v1 )
	    {
   
   
	      sub_13F76D6(v1 - 1);
	    }
	    else
	    {
   
   
	      for ( i = 0; i < 8; ++i )
	      {
   
   
	        if ( (unsigned int)i >= 9 )
	          j____report_rangecheckfailure();
	        byte_14D2E28[i] = 0;
	      }
	    }
	    j__system("CLS");
	    sub_13F8054();
	    if ( byte_14D2E28[0] == 1
	      && byte_14D2E28[1] ==
### 关于 UF_CURVE_reverse_direction 的定义与使用 `UF_CURVE_reverse_direction` 是 NX/Open API 中的一个功能函数,用于反转曲线的方向。该操作通常在处理几何对象时非常有用,尤其是在需要调整曲线方向以满足特定设计需求的情况下。 #### 功能描述 `UF_CURVE_reverse_direction` 主要作用是对指定的曲线进行方向上的翻转。这种翻转不会改变曲线的实际形状或位置,而是仅更改其参数化方向。这意味着如果原始曲线上的一点对应于某个参数 \( t \),那么经过 `UF_CURVE_reverse_direction` 处理后,这一点对应的参数将是反向后的值[^4]。 #### 参数说明 以下是 `UF_CURVE_reverse_direction` 的典型调用形式及其参数解释: ```c int UF_CURVE_reverse_direction (tag_t curve_tag); ``` - **curve_tag**: 表示目标曲线的对象标签(Tag)。这是 NX 系统内部用来唯一标识几何实体的一种机制。 返回值是一个整数类型的结果码,指示操作的成功与否。成功执行会返回零;非零值则表示错误发生,并可通过其他诊断工具进一步查询具体原因。 #### 示例代码 下面提供了一个简单的 C++ 实现例子来展示如何应用此函数: ```cpp #include "uf_cur.h" #include <iostream> void ReverseCurveDirection(tag_t curveId){ int status; // 反转给定ID代表的曲线之方向 status = UF_CURVE_reverse_direction(curveId); if(status != 0){ std::cerr << "Failed to reverse the direction of curve." << std::endl; } } ``` 上述片段展示了基本流程:接收一个曲线 ID 输入至自定义方法中,在其中尝试对其实施方向逆转并检查状态反馈以便及时响应潜在异常情况。 #### 结合场景分析 当涉及到复杂模型构建或者特征创建过程中需要用到多个连续排列好的路径段组合而成的新结构时候(比如桥梁过渡面生成)[^2], 正确设置每一段之间的衔接关系就显得尤为重要了。此时利用此类API可以有效简化前期准备工作量同时提高自动化程度. 另外值得注意的是,在某些情况下可能还需要配合其他辅助类如引用所提到过的`ask_curve_ends`, 获取端点信息之后再决定是否有必要施行这一变换动作 [^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值