首页
社区
课程
招聘
[求助]这个IDA反编译的解密代码怎么看
2014-11-13 08:52 13882

[求助]这个IDA反编译的解密代码怎么看

2014-11-13 08:52
13882
牛牛们,能否指点下!!!!!!!!

void *__fastcall base64_decode(const char *a1)
{
  signed int v1; // r0@1
  void *result; // r0@1
  int v3; // r2@1
  int v4; // r1@1
  int v5; // r5@1
  signed int v6; // r4@1
  int v7; // r12@2
  int v8; // r6@3
  int v9; // r1@3
  char *v10; // r6@4
  int v11; // r1@4
  int v12; // r3@9
  unsigned __int8 v13; // ST04_1@10
  unsigned __int8 v14; // ST00_1@10
  signed int v15; // [sp+Ch] [bp-2Ch]@1
  const char *v16; // [sp+10h] [bp-28h]@1
  char v17; // [sp+1Ch] [bp-1Ch]@3
  unsigned __int8 v18; // [sp+1Dh] [bp-1Bh]@10
  unsigned __int8 v19; // [sp+1Eh] [bp-1Ah]@10
  char v20; // [sp+1Fh] [bp-19h]@10

  v16 = a1;
  v1 = strlen(a1);
  v15 = v1;
  result = malloc(3 * (v1 / 4) + 1);
  v3 = 0;
  v4 = result;
  v5 = 0;
  v6 = 0;
  while ( 1 )
  {
    v12 = 0;
    if ( v6 >= v15 )
      break;
    v7 = v4;
    do
    {
      v8 = *(&v16[v6] + v12);
      v9 = *(&v16[v6] + v12) - 43;
      *(&v17 + v12) = v8;
      if ( v9 <= 0x4F && (v10 = &aRstuvwxyzAbcde[v8 - 43], v11 = *v10, *v10) && v11 != 36 && v11 != 61 )
        *(&v17 + v12) = v11 - 62;
      else
        ++v3;
      ++v12;
    }
    while ( v12 != 4 );
    v5 += 3;
    v13 = v18;
    v6 += 4;
    *v7 = (v18 >> 4) | 4 * v17;
    v14 = v19;
    *(v7 + 1) = (v19 >> 2) | 16 * v13;
    *(v7 + 2) = (v14 << 6) | v20;
    v4 = v7 + 3;
  }
  *(result + v5 - v3) = 0;
  return result;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (11)
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LOOOOOOOP 2014-11-13 09:47
2
0
base64_decode..............还能怎么看
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sniperhg 2014-11-13 12:03
3
0
都f5这样了还不能看?
雪    币: 215
活跃值: (46)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
冰冻冷咖啡 2014-11-13 12:11
4
0
so文件用IDA ARM F5出来的吗
雪    币: 30
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnywco 2014-11-14 11:16
5
0
是的。。。

看不懂!
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jikefeng 2014-11-14 13:43
6
0
这么清楚了,还要怎么看
雪    币: 58
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baochenfu 2014-11-14 14:48
7
0
难道楼主想要IDA给出这样的输出?

base64_decode() {
//这个就是base64的解码代码,不用看了!!
}
雪    币: 30
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnywco 2014-11-15 09:32
8
0
咋好像都很神的样子啊,楼上的几位说说这个代码具体的含义啊!
雪    币: 2410
活跃值: (1811)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Lakitu 1 2015-4-18 09:36
9
0
这个你上网上找找BASE64解密源码不就出来了?
雪    币: 30
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnywco 2015-4-18 09:52
10
0
我主要是想知道,这怎么看。。都是F5出来的看不懂。。

v9 = *(&v16[v6] + v12) - 43

就好比这样的代码,具体啥意思,
雪    币: 2410
活跃值: (1811)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Lakitu 1 2015-4-18 10:06
11
0
[QUOTE=cnywco;1365921]我主要是想知道,这怎么看。。都是F5出来的看不懂。。

v9 = *(&v16[v6] + v12) - 43

就好比这样的代码,具体啥意思,[/QUOTE]
v16很有可能是一个对象数组或结构体数组,应该不是数组的数组(二维数组),因为V12是变量,
具体的请去了解C数组寻址。

class node
{
      int a=0,b=0,c=0,d=0;
};

node v16[100];
int v6=2,v12=8;
int v9 = *(&v16[v6] + v12) - 43;

不知这样你能否看懂,我也是刚学反汇编,共勉哈
雪    币: 2410
活跃值: (1811)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Lakitu 1 2015-4-18 10:18
12
0
[QUOTE=cnywco;1365921]我主要是想知道,这怎么看。。都是F5出来的看不懂。。

v9 = *(&v16[v6] + v12) - 43

就好比这样的代码,具体啥意思,[/QUOTE]

v16是char*类型,假如v16="123456";
那么

*(&v16[0]+1)-1你看是不是和你那个是不是类似
游客
登录 | 注册 方可回帖
返回