首页
社区
课程
招聘
[求助]IDA反汇编的C格式代码看不懂 求讲解
发表于: 2015-4-16 16:33 6857

[求助]IDA反汇编的C格式代码看不懂 求讲解

2015-4-16 16:33
6857
signed int __fastcall RequestBase::SendChatKTV(int a1, int a2, const char *a3)
{
  int v3; // r7@1
  const char *v4; // r6@1
  void *v5; // r0@5
  void *v6; // r5@5

  v3 = a2;
  v4 = a3;
  if ( *(_BYTE *)a1 )
  {
    if ( byte_C3E2C )
    {
      if ( a3 )
      {
        v5 = malloc(0x1004u);
        v6 = v5;
        if ( v5 )
        {
          *(_DWORD *)v5 = v3;
          strcpy((char *)v5 + 4, v4);
          if ( !NetApp::PostMessage(&g_NetApp, 166, v6, 0) )
          {
            ThreadInformer::Inform(&unk_C40FC);
            return 0;
          }
          free(v6);
        }
      }
    }
  }
  else
  {
    _android_log_print(4, " JniNetUtil ", "NetUtil is not initialize\n");
  }
  return -1;
}

signed int __fastcall NetApp::PostMessage(int a1, int a2, int a3, int a4)
{
  int v4; // r4@1
  int v5; // r7@1
  int v6; // r5@1
  int v7; // r6@1
  int v8; // r2@1
  unsigned int v9; // r3@1
  int v10; // r1@5
  signed int v11; // r4@5
  int v13; // [sp+0h] [bp-38h]@5
  int v14; // [sp+Ch] [bp-2Ch]@1
  int v15; // [sp+10h] [bp-28h]@5
  int s; // [sp+14h] [bp-24h]@5
  int v17; // [sp+18h] [bp-20h]@5
  int v18; // [sp+1Ch] [bp-1Ch]@5

  v4 = a1;
  v5 = a4;
  v14 = *(_DWORD *)(a1 + 4);
  v6 = a2;
  v7 = a3;
  (*(void (**)(void))(*(_DWORD *)v14 + 8))();
  v8 = *(_DWORD *)(v4 + 1260);
  v9 = 0;
  while ( v8 != v4 + 1260 )
  {
    v8 = *(_DWORD *)v8;
    ++v9;
  }
  if ( v9 > 0x3E8 )
  {
    v11 = -1;
  }
  else
  {
    v10 = v4 + 1260;
    s = v6;
    v17 = v7;
    v18 = v5;
    v15 = v4 + 1260;
    v11 = 0;
    std::list<NetApp::_MSGINFO,std::allocator<NetApp::_MSGINFO>>::insert((int)&v13, v10, (int)&v15, (int)&s);
  }
  CriticalSectionScoped::~CriticalSectionScoped(&v14);
  return v11;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
IDA反编译出来的代码保留大量中间变量与垃圾代码,物理代码,需要看清楚,伪代码在某种程度上有一定的参考意义,比如某些细节与流程,如果你懂编译的一些东西,你就能很顺利去看这份乱糟糟的代码,不过依然要结合汇编去看.看的过程中需要适当做些try.以验证自己的某些想法.
2015-4-16 18:41
0
雪    币: 2775
活跃值: (2221)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
这个已经很好懂了,兄弟
2015-4-16 20:37
0
雪    币: 13
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
动态调下。具体看参数的意思吧
2015-4-16 20:42
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看不懂啊
2015-4-17 15:44
0
雪    币: 245
活跃值: (93)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
signed int __fastcall RequestBase::SendChatKTV(bool can_send, int cnt_msg, const char *msg)//cnt_msg是msg的大小
{
       if(can_send)
       {
           if(!msg)
             SENDMSG;
       }
       else
         PRINT_ERROR;

            

   
}
2015-4-17 19:02
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢楼上
2015-4-20 10:07
0
游客
登录 | 注册 方可回帖
返回
//