逆向 u3d 游戏 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
harry890829
V2EX    Hack

逆向 u3d 游戏

  •  
  •   harry890829 2023-09-12 00:33:47 +08:00 1037 次点击
    这是一个创建于 760 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个老游戏的私服,但是我一个手机玩家,平时又是用的 mac ,所以导致挂机非常麻烦,于是有了想要自己写一个简单的 client

    目前进度是已经从 GameAssembly.dll 中,已经解出来了 Assembly-CSharp.dll
    从项目中,已经提取出加密的 lua 脚本,发现了使用异或加密,并且进行了解密
    通过阅读 lua 里面的内容发现,lua 是游戏内容的核心,使用了 protobuf ,不过并不复杂
    发现 lua 组包后,并不是最终发送的节点,调用了 XNetMgr:SendBytes 函数
    通过 Assembly-CSharp.dll 中的偏移量,用 idapro 加载 GameAssembly.dl ,找到对应的函数

    简单代码如下:
    //XNetMgr:SendBytes
    __int64 __fastcall sub_1802EE980(__int64 a1, __int64 a2)
    {
    __int64 v4; // rbx
    __int64 v5; // rcx

    if ( !byte_18198A8A4 )
    {
    sub_1800AD520(20235i64);
    byte_18198A8A4 = 1;
    }
    if ( !*(_QWORD *)(a1 + 16) )
    {
    v4 = ((__int64 (__fastcall *)(__int64))sub_1800F8640)(qword_1819C2058);
    sub_18025EDB0(v4, 0i64);
    *(_QWORD *)(a1 + 16) = v4;
    }
    v5 = *(_QWORD *)(a1 + 16);
    if ( !v5 )
    sub_1800E5F10();
    return sub_18025EB90(v5, a2, 0i64);
    }


    __int64 __fastcall sub_18025EB90(__int64 a1, __int64 a2)
    {
    __int64 v4; // rax
    __int64 v5; // r14
    __int64 v6; // rcx
    __int64 v7; // r15
    __int64 v8; // r12
    int v10; // [rsp+30h] [rbp-10h] BYREF
    __int64 v11; // [rsp+40h] [rbp+0h]
    __int64 v12; // [rsp+50h] [rbp+10h]
    int *v13; // [rsp+60h] [rbp+20h]
    int v14; // [rsp+68h] [rbp+28h]
    char v15; // [rsp+B8h] [rbp+78h] BYREF

    v12 = -2i64;
    if ( !byte_181989FC6 )
    {
    sub_1800AD520(23908i64);
    byte_181989FC6 = 1;
    }
    v15 = 0;
    v13 = &v10;
    v14 = -1;
    v4 = qword_1819C2058;
    if ( (*(_BYTE *)(qword_1819C2058 + 295) & 2) != 0 && !*(_DWORD *)(qword_1819C2058 + 216) )
    {
    il2cpp_runtime_class_init_0(qword_1819C2058);
    v4 = qword_1819C2058;
    }
    v11 = **(_QWORD **)(v4 + 184);
    v5 = v11;
    v15 = 0;
    sub_18099E060(v11, &v15, 0i64);
    v6 = *(_QWORD *)(a1 + 16);
    if ( v6 && (unsigned __int8)sub_18056C4B0(v6, 0i64) )
    {
    v7 = *(_QWORD *)(a1 + 24);
    if ( !a2 )
    sub_1800E5F10(0i64);
    v8 = sub_1800F8640(qword_1819AA028);
    sub_180E242C0(v8, a1, qword_1819BC580, 0i64);
    if ( !v7 )
    sub_1800E5F10(0i64);
    (*(void (__fastcall **)(__int64, __int64, _QWORD, _QWORD, __int64, _QWORD, _QWORD))(*(_QWORD *)v7 + 600i64))(
    v7,
    a2,
    0i64,
    *(unsigned int *)(a2 + 24),
    v8,
    0i64,
    *(_QWORD *)(*(_QWORD *)v7 + 608i64));
    v14 = 0;
    v10 = 94;
    }
    else
    {
    sub_18025E000(a1, 104i64, qword_1819DC270);
    v14 = 0;
    v10 = 94;
    }
    if ( v15 )
    sub_18099E080(v5, 0i64);
    return 0i64;
    }



    猜测这部分代码为发送核心,不过这种伪代码不知道该怎么看,或者说,怎么通过 idapro 把这个运行起来,我自己单步分析一下,应该能够知道这个东西是怎么回事了

    求教一下后续如何进行
    XgusGod
        1
    XgusGod  
       2023-10-10 04:50:31 +08:00
    楼主接单吗 q1464106879
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     906 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 22:18 PVG 06:18 LAX 15:18 JFK 18:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86