首页
社区
课程
招聘
[求助]看的彻底迷糊了。这段代码好像是操作一个数组?
2012-9-29 21:17 4573

[求助]看的彻底迷糊了。这段代码好像是操作一个数组?

2012-9-29 21:17
4573
00425481   .  33C9          xor     ecx, ecx
00425483   .  33C0          xor     eax, eax
00425485   .  EB 09         jmp     short 00425490
00425487   .  8DA424 000000>lea     esp, dword ptr [esp]
0042548E   .  8BFF          mov     edi, edi
00425490   >  0FB67404 11   movzx   esi, byte ptr [esp+eax+11]
00425495   .  0FB65404 10   movzx   edx, byte ptr [esp+eax+10]
0042549A   .  03D6          add     edx, esi
0042549C   .  0FB67404 12   movzx   esi, byte ptr [esp+eax+12]
004254A1   .  03D6          add     edx, esi
004254A3   .  0FB67404 13   movzx   esi, byte ptr [esp+eax+13]
004254A8   .  03D6          add     edx, esi
004254AA   .  0FB67404 15   movzx   esi, byte ptr [esp+eax+15]
004254AF   .  03D6          add     edx, esi
004254B1   .  0FB67404 14   movzx   esi, byte ptr [esp+eax+14]
004254B6   .  03F1          add     esi, ecx
004254B8   .  83C0 06       add     eax, 6
004254BB   .  3D FC000000   cmp     eax, 0FC
004254C0   .  8D0C16        lea     ecx, dword ptr [esi+edx]
004254C3   .^ 72 CB         jb      short 00425490
004254C5   .  3B8C24 0C0100>cmp     ecx, dword ptr [esp+10C]
004254CC   .  0F85 30010000 jnz     00425602

IDA翻译过来是这个样子 到底是干嘛的?

v12 = 0;
          i = 0;
          do
          {
            v17 = *((_BYTE *)&v36 + i + 1)
                + *((_BYTE *)&pDecodeData + i + 3)
                + *((_BYTE *)&pDecodeData + i + 2)
                + *((_BYTE *)&pDecodeData + i + 1)
                + *((_BYTE *)&pDecodeData + i);
            v18 = v12 + *((_BYTE *)&v36 + i);
            i += 6;
            v12 = v18 + v17;
          }
          while ( i < 0xFC );

  void *v1; // esi@1
  char *v2; // eax@2
  FILE *v3; // eax@4
  FILE *v4; // edi@4
  int v5; // esi@10
  const char *v6; // esi@15
  char *v7; // eax@18
  signed int *v8; // edx@18
  signed int v9; // edi@20
  unsigned __int8 *v10; // esi@20
  unsigned int i; // eax@22
  int v12; // ecx@22
  SOCKET v13; // eax@13
  char v14; // cl@19
  char *v15; // eax@20
  char *v16; // eax@20
  int v17; // edx@23
  int v18; // esi@23
  signed __int64 v19; // qax@25
  signed __int64 v20; // qax@27
  int namelen; // [sp+Ch] [bp-1B4h]@1
  unsigned int v22; // [sp+1BCh] [bp-4h]@1
  int pDecodeData ; // [sp+10h] [bp-1B0h]@8
  struct sockaddr name; // [sp+120h] [bp-A0h]@13
  signed int v25; // [sp+1ACh] [bp-14h]@18
  signed int v26; // [sp+1B0h] [bp-10h]@18
  signed int v27; // [sp+1B4h] [bp-Ch]@18
  signed int v28; // [sp+1B8h] [bp-8h]@18
  signed int v29; // [sp+19Ch] [bp-24h]@18
  signed int v30; // [sp+1A0h] [bp-20h]@18
  signed int v31; // [sp+1A4h] [bp-1Ch]@18
  signed int v32; // [sp+1A8h] [bp-18h]@18
  unsigned __int8 v33; // [sp+188h] [bp-38h]@20
  signed int v34; // [sp+110h] [bp-B0h]@20
  signed int v35; // [sp+114h] [bp-ACh]@20
  int v36; // [sp+14h] [bp-1ACh]@23
  int v37; // [sp+10Ch] [bp-B4h]@24
  int v38; // [sp+18h] [bp-1A8h]@29
  int v39; // [sp+1Ch] [bp-1A4h]@29
  int v40; // [sp+20h] [bp-1A0h]@29
  int v41; // [sp+24h] [bp-19Ch]@29
  int v42; // [sp+28h] [bp-198h]@29
  int v43; // [sp+2Ch] [bp-194h]@29

局部变量是这样定义的

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

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 114
活跃值: (72)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ruoko 2012-9-29 21:38
2
0
可能是一个byte型数组吧。中秋快乐啊,今天坐火车头都快晕了。
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
elianmeng 1 2012-9-29 22:37
3
0
给你弄了一个demo,不知道对不对
void main()
{
//创建数组
	char buffer[630]={0};
	DWORD dwValue=0;
	for (int i=0;i<630;i++) //15*42
	{
		buffer[i]=i;
	}
	for (int i=0;i<42;i++)
	{
	dwValue=dwValue+buffer[i*6+11]+buffer[i*6+10]+buffer[i*6+12]+buffer[i*6+13]+buffer[i*6+15]+buffer[i*6+14];
	}

};
雪    币: 71
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
mmhkh 2012-9-30 01:30
4
0
[QUOTE=elianmeng;1105305]给你弄了一个demo,不知道对不对
void main()
{
//创建数组
        char buffer[630]={0};
        DWORD dwValue=0;
        for (int i=0;i<630;i++) //15*42
        {
                buffer[i]=i;
        }
        for (...[/QUOTE]

谢谢啦 已经看明白原来的代码来。。原来是数据校验用的。。
游客
登录 | 注册 方可回帖
返回