攻防世界_reserve新手_insanity、python_trade、re1

这篇博客主要涉及逆向工程的技巧,包括使用IDA分析字符串以找到flag,以及如何处理.py编译后的.pyc文件。作者通过反编译.pyc文件获取源码,并通过Python代码解密得到flag:nctf{d3c0mpil1n9_PyC}

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

insanity 

下载完后发现打不开,直接拖进IDA,打开字符串窗口,直接得到flag

python_trade

下载完文件发现是一个.pyc文件,百度得知.pyc文件是PyCodeObject的一种持久化保存方式 

用python反编译程序(https://tool.lu/pyc/)反编译这个.pyc文件得到源码,如下图

关键点:encode(flag) == correct

然后开始写代码(借鉴的别人的【匿】)

# encoding: utf-8
import base64
s = "XlNkVmtUI1MgXWBZXCFeKY+AaXNt"
flag = ""

#base64
b = base64.b64decode(s)# print(b)

#encode
for i in b:
    i -= 16
    i ^= 32
    flag += chr(i)
print(flag)

得到flag:nctf{d3c0mpil1n9_PyC}

re1

重点:逆向题

把文件用IDA打开,点IDA视图–打开子视图–字符串,在一堆东西中找到flag get

双击,跳到十六进制视图窗口

有{  }的那个就是flag

 

在 C 语言中,`__reserve` 并不是一个标准的关键字或内置函数。然而,在特定的上下文中,它可能被某些编译器或库实现作为扩展功能引入。以下是关于 `__reserve` 的一些潜在解释以及相关内容: ### 可能的意义 1. **内存预留** 在某些嵌入式系统或者操作系统开发环境中,`__reserve` 可能用于指示编译器或链接器为某个资源(如全局变量、堆栈或其他特殊用途的数据结构)保留一段固定的内存区域。这种行为类似于 `_Alignas` 或其他内存分配控制机制[^1]。 2. **自定义宏或函数** 如果项目中有类似的命名约定,则可能是开发者为了某种目的而创建的一个宏或函数。例如: ```c #define __reserve(x) malloc(x) ``` 这种情况下,具体含义取决于项目的实际定义。 3. **与存储类修饰符相关联** 类似于 `__attribute__((aligned(16)))`,`__reserve` 可能是一种特殊的存储类修饰符,用于调整变量的行为或布局方式。这通常是编译器特有的扩展特性。 --- ### 示例代码 假设我们正在讨论的是一个假想的功能,下面是一些可能的用法示例: #### 示例 1:作为内存预留工具 如果 `__reserve` 是一种用于显式请求内存的方式,那么它的使用可能会如下所示: ```c void* buffer = __reserve(1024); // 假设该函数会分配并返回一块大小为1024字节的内存 if (buffer != NULL) { memset(buffer, 0, 1024); } ``` #### 示例 2:作为一种编译期指令 如果是编译器支持的一种特殊语法形式,它可以像这样工作: ```c char data[1024] __reserve; // 表明此数组需要特别处理,比如预加载到缓存中 ``` 需要注意的是,上述例子仅是为了展示可能性,并不代表任何真实的标准或实现。 --- ### 关键点总结 - 如果提到的具体名称确实存在但未广泛记录,则很可能是某款专用软件框架内的局部概念。 - 对于非标准化的语言特性和API文档查询时应优先考虑查阅对应平台的技术手册或是源码注释部分来获取权威解答[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值