攻防世界-reverserMe WP

查壳

攻防世界-reverserMe WP_第1张图片

分析

  • 程序主要代码:
    攻防世界-reverserMe WP_第2张图片
  • 程序的流程主要是将输入的数据进行base64解码,然后循环异或0x25,最后与正确结果对比。
  • 这道题的难点主要就是分析base64decode和辨别junk code。首先还是进入base64decode去看看:

攻防世界-reverserMe WP_第3张图片

  • 这部分主要是验证输入的合法性,然后准备开始解密base64的字母表(通过观察byte_12A4E40可知)。这也正是用算法分析器分析不出来是base64编码的原因。
    攻防世界-reverserMe WP_第4张图片

  • 而这里包括解密字母表和对输入的数据进行base64解密。通过观察他苏按发结构的特征,有 >>,出现分组为4= 的判断,字母表,很大可能上就是base64解码了。

      if ( a1 )
        {
          if ( a1 >= 0x10 )
          {
            __asm { movdqa  xmm1, ds:xmmword_12A4F20 }
            v6 = a1 - (a1 & 0xF);
            _EAX = &result;
            do
            {
              __asm { movdqu  xmm0, xmmword ptr [eax] }
              v4 += 16;
              _EAX += 16;
              __asm
              {
                pxor    xmm0, xmm1
                movdqu  xmmword ptr [eax-10h], xmm0
              }
            }
            while ( v4 < v6 );
          }
    
  • 通过动态调试可知,这段代码对数据和结果都不产生任何影响,所以是垃圾代码,无视它即可。

脚本

key='you_know_how_to_remove_junk_code'
raw=''
for i in key:
    raw+=chr(ord(i)^0x25)
print raw.encode('base64')

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