首页
社区
课程
招聘
[求助]求助,这个应该是什么算法?[解决 ]
发表于: 2009-12-23 18:25 5796

[求助]求助,这个应该是什么算法?[解决 ]

2009-12-23 18:25
5796
看着熟,但是哪个都不像,rc5,tea什么的,都不像

仔细分析,是tea
请高手指点
int __cdecl sub_4338C0(int a1, int a2, int a3)
{
  signed int v3; // eax@1
  signed int v4; // edx@1
  signed int v5; // ecx@1
  signed int i; // eax@5
  int result; // eax@7

  v4 = *(_DWORD *)a2;
  v3 = 0;
  v5 = *(_DWORD *)(a2 + 4);
  if ( a3 <= 0 )
  {
    for ( i = 0x61C88647 * a3; i; v4 -= *(_DWORD *)(a1 + 4 * (i & 3)) + (v5 ^ i) + ((v5 >> 5) ^ 16 * v5) )
    {
      v5 -= *(_DWORD *)(a1 + 4 * ((i >> 11) & 3)) + (v4 ^ i) + ((v4 >> 5) ^ 16 * v4);
      i += 0x61C88647u;
    }
  }
  else
  {
    if ( 0 != 0x9E3779B9 * a3 )
    {
      do
      {
        v4 += *(_DWORD *)(a1 + 4 * (v3 & 3)) + (v5 ^ v3) + ((v5 >> 5) ^ 16 * v5);
        v3 -= 0x61C88647u;
        v5 += *(_DWORD *)(a1 + 4 * ((v3 >> 11) & 3)) + (v4 ^ v3) + ((v4 >> 5) ^ 16 * v4);
      }
      while ( v3 != 0x9E3779B9 * a3 );
    }
  }
  result = a2;
  *(_DWORD *)a2 = v4;
  *(_DWORD *)(a2 + 4) = v5;
  return result;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 232
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
看0x61C88647这个,有点像QQ的东西,移位稍微有点变化。具体可以看这个帖子的2楼:
http://bbs.pediy.com/showthread.php?t=2916
或者
http://www.linuxboy.net/wordpress/?p=36
2009-12-23 18:31
0
雪    币: 107
活跃值: (2284)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
qq用的是变形的tea,这个看着和tea的差别太大。

输入和输出都是个 8字节的数,也就是 DWORD[2]

a3,从程序看来,传入的参数是32
2009-12-23 18:39
0
雪    币: 107
活跃值: (2284)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在仔细看了下,发现ms就是tea本身
2009-12-23 18:49
0
游客
登录 | 注册 方可回帖
返回
//