REVERSE学习笔记(攻防世界xxxorrr)
攻防世界xxxorrr
首先我们把文件拖入ida中,点击进入main函数
其中,unsigned是无符号的意思,fgets 是C语言标准库中的一个函数,用于从指定的输入流(如文件或标准输入)中读取一行字符串
我们先点击进入s1,发现s1是一个字符串,我们在点击sub_916发现它是一个函数,分析代码后发现,我们需要让s1和s2相等这样就可以得到flag ;而在我们尝试后发现并不能得到flag。我们猜测s1或者s2可能会被加密,我们搜索交叉引用,发现一个类似加密s1的函数
我们对s1解密后在将s1和s2进行异或运算即可得到flag。
补充一些简单的知识,(__readfsqword 是一个与 x86/x86-64 架构 相关的内联汇编函数,通常用于从特定的内存地址中读取一个 64位(quad word) 的数据。)(__cxa_atexit
是一个与 C++ 标准库相关的内部函数,通常用于注册一个函数,使其在程序退出时被调用。这种机制常用于资源清理、对象销毁等操作。它类似于 C 标准库中的 atexit
函数,但 __cxa_atexit
是 C++ 的扩展,支持更多功能,例如处理动态库(shared libraries)的加载和卸载。)