Base64 IDA 代码

.data:0040401C aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0

int __stdcall sub_4011DB(char a1)
{
  char *i; // ebx

  for ( i = aAbcdefghijklmn; *i; ++i )
  {
    if ( *i == a1 )
      return i - aAbcdefghijklmn;
  }
  return -1;
}


int __stdcall sub_4012E8(_BYTE *a1, _BYTE *a2)
{
  _BYTE *v2; // ebx
  int v4; // eax
  int v5; // ecx
  int v6; // ecx
  int v8; // ecx
  int v9; // eax
  int v10; // ecx
  int v11; // ecx
  int v12; // eax
  int v13; // ecx
  int v14; // [esp+Ch] [ebp-4h]

  v14 = 0;
  v2 = a2;
  while ( *a1 && !v14 && (int)sub_4011DB(*a1) >= 0 )
  {
    v4 = sub_4011DB(a1[1]);
    if ( v4 < 0 )
      return -1;
    v6 = v4 + v5;
    v8 = v6 << 6;
    if ( a1[2] == 61 )
    {
      v14 = 1;
    }
    else
    {
      v9 = sub_4011DB(a1[2]);
      if ( v9 < 0 )
        return -1;
      v8 = v9 + v10;
    }
    v11 = v8 << 6;
    if ( a1[3] == 61 )
    {
      ++v14;
    }
    else
    {
      if ( v14 > 0 )
        return -1;
      v12 = sub_4011DB(a1[3]);
      if ( v12 < 0 )
        return -1;
      v11 = v12 + v13;
    }
    if ( v14 < 3 )
      *v2++ = (v11 & 0xFF0000u) >> 16;
    if ( v14 < 2 )
      *v2++ = (unsigned __int16)(v11 & 0xFF00) >> 8;
    if ( v14 < 1 )
      *v2++ = v11;
    a1 += 4;
  }
  return v2 - a2;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值