攻防世界re1 writeup

初入ctf,尝试做了一道题,深有体会,写一篇博客记录一下!

1 查壳 :无壳,32位

攻防世界re1 writeup_第1张图片

2;ida打开程序,找到main函数,按下F5反汇编;

攻防世界re1 writeup_第2张图片

3;阅读一下发现是对比v5,v9,若v5相等,即v3=0则进入flag get。

攻防世界re1 writeup_第3张图片

若不等于0,则v3会进行运算使v3!=0,得到

ps:

_mm_storeu_si128((__m128i *)&v5, _mm_loadu_si128((const __m128i *)&xmmword_413E34));

(给自己记个笔记)

1:_mm_storeu_si128 ( __m128i *p, __m128i a);

 

指令名:void _mm_storeu_si128 ( __m128i *p, __m128i a);

功能:可存储128位数据;

说明:将__m128i 变量a的值存储到p所指定的变量中去;

注意:p不要求必须是一个16-bit对齐的一个变量的地址。

2:

__m128i _mm_loadu_si128 (__m128i *p);

   指令名:__m128i _mm_load_si128 (__m128i *p);

     说明:加载128bits值;

   返回值:返回可以存放在代表寄存器的变量中的值;

     注意:p不用是一个16-bit对齐的一个变量的地址;

(万能的csdn)

4:找到xmmword_413E34

是一串16进制数据,我们可以将他转化为字符串就可以得到flag;

方法一:直接选中按下R键

ps:

在x86处理器中,数据采用小端序储存;

即高位字节在高位地址,低位字节在地位地址;

方法二:百度,csdn转换代码

 

你可能感兴趣的:(新手,逆向)