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问题,也学完再来写吧。

相关推荐
eternal__day1 分钟前
第三期:深入理解 Spring Web MVC [特殊字符](数据传参+ 特殊字符处理 + 编码问题解析)
java·前端·spring·java-ee·mvc
最后一个bug6 分钟前
PCI与PCIe接口的通信架构是主从模式吗?
linux·开发语言·arm开发·stm32·嵌入式硬件
落落鱼20137 分钟前
TP6图片操作 Image::open 调用->save()方法时候报错Type is not supported
开发语言
iccb101311 分钟前
在线聊天系统中的多窗口数据同步技术解密
java·github
扣脚大汉在网络16 分钟前
云原生安全渗透篇
安全·云原生·dubbo
慕离桑25 分钟前
SQL语言的物联网
开发语言·后端·golang
"_rainbow_"26 分钟前
Qt添加资源文件
开发语言·qt
逸狼30 分钟前
【JavaEE进阶】MyBatis(5)-MyBatis-plus
java·开发语言
欧宸雅37 分钟前
Swift语言的游戏引擎
开发语言·后端·golang
幻想趾于现实44 分钟前
C# Winform 入门(4)之动图显示
开发语言·c#·winform