XY_RE复现(三)

一,baby unity

查看目录,是经过il2cpp加密过的

使用Il2CppDumper提取文件,网上只看见提出apk中的libil2cpp.so文件,相当于

apk的dll,但我们需要解决的是exe,暂时卡住了,后面经过我的搜索,得到了GameAssembly.dll文件就相当于apk的那个.so文件,接下来就可以进行dump了

"C:\Users\sun\Desktop\xy\baby unity(1)\baby unity_Data\il2cpp_data\Metadata\global-metadata.dat"

结果output还是空的,看了一下,咔,dll文件被加壳了

得到Assembly-CSharp.dll这个文件。

嗯,有点复杂,先放在这里了。

接着继续搞,IDA打开GameAssembly.dll怪复杂的好像

1.file这一栏有Script file选项(Alt+F7)导入ida_with_struct_py3.py文件

"E:\dll_re\Il2CppDumper-net6-win-v6.7.40\ida_with_struct_py3.py"

2.再选择script.json文件

"E:\dll_re\Il2CppDumper-net6-win-v6.7.40\output\script.json"

3.接着选il2cpp.h

结果报错了:

不对,好像是在加载,好像挺慢的,只能等一下了。

还是没有啊

别人是这样的:

继续看了一下可能是metadata文件的问题。

metadata 文件后,放入查找十六进制的文件,如果开头魔术字依然是 AF 1B B1 FA,那么一般来说是没有被混淆的

但是也没有问题啊!

好吧,是ida打开GameAssembly.dll文件,Assembly-CSharp.dll还是用dnspy打开。

函数很多,一直在加载。

再按上述操作弄一下,可以先在dnspy打开Assembly-CSharp.dll找关键函数

终于出来了,就是太大了有点卡。

在checkkkflag( )里

在encrypt( )里,发现加密方式

cpp 复制代码
System_String_o *__stdcall Check__EEEEEEEEEEEEEncrypt(System_String_o *text, const MethodInfo *method)
{
  System_Text_Encoding_o *UTF8; // rax
  __int64 v4; // rcx
  System_Byte_array *v5; // rbx
  System_String_o *v6; // rax
  System_Char_array *v7; // r9
  unsigned int v8; // eax
  uint16_t v9; // dx

  if ( !byte_1813259E2 )
  {
    sub_1801E5570(&System_Convert_TypeInfo, method);
    byte_1813259E2 = 1;
  }
  UTF8 = System_Text_Encoding__get_UTF8(0i64);
  if ( !UTF8 )
    goto LABEL_12;
  v5 = (UTF8->klass->vtable._16_GetBytes.methodPtr)(UTF8, text, UTF8->klass->vtable._16_GetBytes.method);
  if ( !System_Convert_TypeInfo->_2.cctor_finished )
    il2cpp_runtime_class_init();
  v6 = System_Convert__ToBase64String(v5, 0i64);
  if ( !v6 || (v7 = System_String__ToCharArray(v6, 0i64), v8 = 0, v4 = 0i64, !v7) )
LABEL_12:
    sub_1801E57A0(v4);
  while ( v4 < SLODWORD(v7->max_length) )
  {
    if ( v8 >= LODWORD(v7->max_length) )
      sub_1801E5790();
    v4 = v8;
    v9 = v7->m_Items[v8++] ^ 0xF;
    v7->m_Items[v4] = v9;
    LODWORD(v4) = v8;
  }
  return System_String__CreateString_6450285200(0i64, v7, 0i64);
}

传入的字符串首先进行了base64编码,然后与0xF进行了异或

python 复制代码
import base64
enc=""
flag=""
str="XIcKYJU8Buh:UeV:BKN{U[JvUL??VuZ?CXJ;AX^{Ae]gA[]gUecb@K]ei^22"
for i in range(len(str)):
  enc+=chr(ord(str[i])^0xF)
print(enc)
flag=base64.b64decode(enc)
print(flag)
# WFlDVEZ7Mzg5ZjY5MDAtZTEyZC00YzU0LWE4NWQtNjRhNTRhZjlmODRjfQ==
# b'XYCTF{389f6900-e12d-4c54-a85d-64a54af9f84c}'

可以看看这篇原创IL2CPP 逆向初探-软件逆向-看雪-安全社区|安全招聘|kanxue.com

二,ez unity

只能使用frida-il2cpp-bridge了好像

vscode打开该文件夹

记frida-il2cpp-bridge的使用-CSDN博客

还不太会用,先学习一下。

好像还有一个hook问题,也学完再来写吧。

相关推荐
看着博客敲代码9 分钟前
GitLab CVE-2026-85706 未授权任意文件读取漏洞排查与修复
安全·web安全·网络安全
灯澜忆梦9 分钟前
【Linux】#5 | 文件与目录基础操作命令
java·linux·运维
字节跳动的猫12 分钟前
LikeShop 搜索功能优化二开:中文分词、商品权重排序与搜索热词管理
android·java·中文分词
计算机毕设定制辅导-无忧学长13 分钟前
《基于微信小程序的校园文化活动报名与管理系统》
java·spring boot·微信小程序·uniapp·校园文化活动报名与管理小程序
靠沿16 分钟前
MySQL数据库基础——索引的使用&alter、explain关键字
java·数据库·mysql
pencek17 分钟前
MazeSec-Banner
网络安全
96245617 分钟前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法
重生之高冷汉堡包22 分钟前
什么是数据中心代理?原理拆解、类型区别、应用场景与选型指南
服务器·网络·数据库·安全·ip
码匠许师傅22 分钟前
【C++三方组件】redis-plus-plus:现代 Redis C++ 客户端
java·c++·redis
LMT_Lanmantech23 分钟前
MATLAB合规管理:如何避免侵权赔偿和审计风险
开发语言·matlab·信息可视化