首页
社区
课程
招聘
未解决 [求助]新人 尝试对手游进行解包寻找计算公式 遇到大量问题
发表于: 2020-10-8 14:01 2596

未解决 [求助]新人 尝试对手游进行解包寻找计算公式 遇到大量问题

2020-10-8 14:01
2596

纯新人 4天前刚起步 因为是公式未公开所以试图通过Il2CppDumper等工具分析出计算公式。
手法为在手机上运行游戏 通过GG修改器dump内存 找到内存地址并做修复 得到未加密的libil2cpp(64位的)
现遇到以下问题

  1. 图片描述
    指向的这个地方依旧是内存地址 无论是Il2CppDumper给的脚本还是IDA都没能修复 不知道有没有什么修复方法。
    2.通过Il2CppDumper给出的函数表 找到函数 跳转到对应位置 使用f5进行伪代码分析 十分复杂且完全没有找到公式的特征 不清楚是本人能力问题还是IDA并没有还原完整的问题。
    3.使用Il2CppDumper给出的带结构的脚本出现大量错误(在程序的github页查找issue 说是IDA版本问题)(本人使用的是网上找的IDA7.0) 现在也不清楚是否是这部分影响了IDA的f5功能 使得伪代码混乱不堪。

找到的可能的目标函数如下
图片描述

 

现在IDA的分析情况 靠后的那一段data是标红的offset
图片描述

 

这几天所做的内容的合集(百度网盘)
链接:https://pan.baidu.com/s/1DmFyFqDZmxWP5J6BVtlayg
提取码:49st

 

在此恳请有兴趣的各位大佬帮新人看看指点指点 看看IDA是否已经还原了所有内容
如果是我能力不够没能读懂的话那我就再去认真读代码找公式。


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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
long double __usercall Unit__CalculateHunterDamage@<Q0>(__int64 a1@<X0>, _BYTE *a2@<X1>, __int128 *a3@<X8>)
{
  _BYTE *v3; // x20
  __int64 v4; // x21
  __int128 *v5; // x19
  __int64 v6; // x0
  __int64 v7; // x21
  __int64 v8; // x0
  __int64 v9; // x22
  __int64 v10; // x0
  __int64 v11; // x0
  __int64 v12; // x21
  __int64 v13; // x8
  unsigned __int64 v14; // x10
  unsigned int *v15; // x11
  signed __int64 v16; // x0
  long double result; // q0
  __int128 v18; // q1
  __int128 v19; // q2
  __int128 v20; // q3
  signed int v21; // [xsp-10h] [xbp-D0h]
  __int128 v22; // [xsp+0h] [xbp-C0h]
  __int128 v23; // [xsp+10h] [xbp-B0h]
  long double v24; // [xsp+20h] [xbp-A0h]
  __int128 v25; // [xsp+30h] [xbp-90h]
  __int128 v26; // [xsp+40h] [xbp-80h]
  __int128 v27; // [xsp+50h] [xbp-70h]
  long double v28; // [xsp+60h] [xbp-60h]
  __int128 v29; // [xsp+70h] [xbp-50h]

  v3 = a2;
  v4 = a1;
  v5 = a3;
  if ( !(byte_2C422D1 & 1) )
  {
    sub_ABE424(MEMORY[0x7983B7F040]);
    byte_2C422D1 = 1;
  }
  *(_OWORD *)&v28 = 0u;
  v29 = 0u;
  v26 = 0u;
  v27 = 0u;
  v6 = System_Collections_Generic_KeyNotFoundException___ctor_20872292(v4);
  if ( !v6 )
    sub_AE98C4(0LL);
  v7 = System_Threading_Interlocked__CompareExchange_20877444(v6);
  while ( 1 )
  {
    if ( !v7 )
      sub_AE98C4(0LL);
    if ( !(System_Net_NetworkCredential__InternalGetDomain(v7) & 1) )
      break;
    if ( !v7 )
      sub_AE98C4(0LL);
    v8 = System_Collections_Generic_IntrospectiveSortUtilities__ThrowOrIgnoreBadComparer(v7);
    v9 = v8;
    if ( !v8 )
      sub_AE98C4(0LL);
    if ( (*(__int64 (**)(void))(*(_QWORD *)v8 + 392LL))() )
    {
      v10 = ((__int64 (__fastcall *)(__int64))System_Xml_Schema_XmlSchemaObjectCollection__OnSet)(v9);
      if ( v10 )
      {
        *v3 = 1;
        (*(void (**)(void))(*(_QWORD *)v10 + 456LL))();
        v28 = v24;
        v29 = v25;
        v26 = v22;
        v27 = v23;
        v21 = 96;
        goto LABEL_17;
      }
    }
  }
  v21 = 82;
LABEL_17:
  v11 = sub_AF793C(v7, MEMORY[0x7983B8C960]);
  v12 = v11;
  if ( v11 )
  {
    v13 = *(_QWORD *)v11;
    if ( *(_WORD *)(*(_QWORD *)v11 + 286LL) )
    {
      v14 = 0LL;
      v15 = (unsigned int *)(*(_QWORD *)(v13 + 176) + 8LL);
      while ( *((_QWORD *)v15 - 1) != MEMORY[0x7983B8C960] )
      {
        ++v14;
        v15 += 4;
        if ( v14 >= *(unsigned __int16 *)(*(_QWORD *)v11 + 286LL) )
          goto LABEL_22;
      }
      v16 = v13 + 16LL * *v15 + 296;
    }
    else
    {
LABEL_22:
      v16 = sub_AB6DBC(v11);
    }
    (*(void (__fastcall **)(__int64, _QWORD))v16)(v12, *(_QWORD *)(v16 + 8));
  }
  if ( v21 == 96 )
  {
    result = v28;
    v18 = v29;
    v19 = v26;
    v20 = v27;
    *((long double *)v5 + 2) = v28;
    v5[3] = v18;
    *v5 = v19;
    v5[1] = v20;
  }
  else
  {
    *(_OWORD *)&result = 0uLL;
    *v3 = 0;
    v5[2] = 0u;
    v5[3] = 0u;
    *v5 = 0u;
    v5[1] = 0u;
  }
  return result;
}

现在的伪代码长这个样 完全看不出 找不到运算和公式的样子。。

最后于 2020-10-8 15:06 被unnamed233编辑 ,原因:
2020-10-8 15:05
0
雪    币: 628
活跃值: (122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你这已经不算乱了,就是纯靠分析哇,熟悉汇编语法,毕竟是伪代码,要是都是很明白得代码,那就完了,大家都看得懂了,我也对这个很感兴趣,可惜也没找到大佬指点,哈哈哈
2020-10-9 13:10
0
雪    币: 6369
活跃值: (1528)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
4
1.你确定正确修复了ELF文件结构?以及确定dump是必要步骤还是你照搬照抄dump了事?
2.il2cpp你只有函数原型和一些字段有参考意义,你如果对il2cpp和C#本身不熟悉的话,建议磨刀不误砍柴工
3.给出错误,以及能修自己修,出错挺正常的倒是,你这个伪代码应该还能漂亮一些,但不要奢求太多
2020-10-9 13:47
0
游客
登录 | 注册 方可回帖
返回
//