攻防世界-reverserMe WP

本文深入探讨了如何使用base64解码结合特定异或操作来分析和验证程序输入的有效性,同时揭示了如何识别并排除垃圾代码,提供了一个实际的脚本示例。

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

查壳

在这里插入图片描述

分析

  • 程序主要代码:
    在这里插入图片描述
  • 程序的流程主要是将输入的数据进行base64解码,然后循环异或0x25,最后与正确结果对比。
  • 这道题的难点主要就是分析base64decode和辨别junk code。首先还是进入base64decode去看看:

在这里插入图片描述

  • 这部分主要是验证输入的合法性,然后准备开始解密base64的字母表(通过观察byte_12A4E40可知)。这也正是用算法分析器分析不出来是base64编码的原因。
    在这里插入图片描述

  • 而这里包括解密字母表和对输入的数据进行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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值