首页
社区
课程
招聘
[旧帖] 看看这个是不是加密或者是解密封包的程序(伪编码)? 0.00雪花
发表于: 2010-5-10 10:20 3134

[旧帖] 看看这个是不是加密或者是解密封包的程序(伪编码)? 0.00雪花

2010-5-10 10:20
3134
用IDA反汇编后,得出这些我认为有可能是解密加密部分的

第一段已经有说读取字符长度


int __usercall sub_401334<eax>(int a1<ebx>)
{
  int result; // eax@2
  int v2; // ecx@3
  char v3; // al@4
  int v4; // eax@6
  int v5; // eax@7

  if ( a1 )
  {
    v2 = a1;
    if ( !(a1 & 3) )
      goto LABEL_6;
    do
    {
      v3 = *(_BYTE *)v2++;
      if ( !v3 )
        return v2 - 1 - a1;
    }
    while ( v2 & 3 );
    while ( 1 )
    {
      do
      {
LABEL_6:
        v4 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2;
        v2 += 4;
      }
      while ( !(v4 & 0x81010100) );
      v5 = *(_DWORD *)(v2 - 4);
      if ( !(_BYTE)v5 )
        break;
      if ( !BYTE1(v5) )
        return v2 - 3 - a1;
      if ( !(v5 & 0xFF0000) )
        return v2 - 2 - a1;
      if ( !(v5 & 0xFF000000) )
        return v2 - 1 - a1;
    }
    result = v2 - 4 - a1;
  }
  else
  {
    result = 0;
  }
  return result;
}

这段不太清楚
void *__stdcall sub_40139F(void **a1)
{
  void *v1; // eax@1
  int v2; // eax@2
  unsigned int v3; // ST00_4@2
  const void *v4; // ST04_4@2
  void *v5; // edi@5
  void *v6; // esi@5
  char v7; // bl@6
  void *v8; // eax@14
  int v9; // eax@15
  unsigned int v10; // ST00_4@15
  const void *v11; // ST04_4@15
  void *v13; // [sp-4h] [bp-8h]@3
  void *v14; // [sp-4h] [bp-8h]@16
  void *v15; // [sp+0h] [bp-4h]@5

  v1 = *a1;
  if ( *a1 )
  {
    v2 = sub_401334(*a1);
    v1 = (void *)sub_421317(v2 + 1);
    memcpy(v1, v4, v3);
  }
  v13 = v1;
  v15 = v13;
  v6 = *a1;
  v5 = v13;
  if ( *a1 )
  {
    while ( 1 )
    {
      v7 = *(_BYTE *)v6;
      if ( !*(_BYTE *)v6 )
        break;
      if ( v7 == 32 )
      {
LABEL_10:
        v6 = (char *)v6 + 1;
      }
      else
      {
        if ( v7 != -95 )
        {
          *(_BYTE *)v5 = v7;
          v5 = (char *)v5 + 1;
          goto LABEL_10;
        }

        if ( *(_WORD *)v6 != -24159 )
        {
          *(_WORD *)v5 = *(_WORD *)v6;
          v5 = (char *)v5 + 2;
        }
        v6 = (char *)v6 + 2;
      }
    }
  }
  *(_BYTE *)v5 = 0;
  v8 = v13;
  if ( v13 )
  {
    v9 = sub_401334(v13);
    v8 = (void *)sub_421317(v9 + 1);
    memcpy(v8, v11, v10);
  }
  v14 = v8;
  if ( v15 )
    sub_42131D(v15);
  return v14;
}

看看这个是不是加密或者是解密封包的程序(伪编码)?
如何把它转化为程序,C,C#,C++,VB都可以
成功转化程序的再加分

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 117
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来还得靠自己呀
2010-5-10 15:22
0
游客
登录 | 注册 方可回帖
返回
//