

所以我们就可以在output里面进行查看CSharp文件

我们使用dnspy打开这个文件

我们使用ida对GameAssmely.dll文件进行符号还原
使用script file 导入文件,依次选择ida py3和script.json


搜索这个函数,进行反编译进行查看代码

根据这个·我们可以看到他的加密部分
这个代码就是将其原文与0xF异或得到密文
我们找一下密文反着求回去

给一下解密代码:
import base64
data='XIcKYJU8Buh:UeV:BKN{U[JvUL??VuZ?CXJ;AX^{Ae]gA[]gUecb@K]ei^22'
flag=''
for i in range(len(data)):
flag+=chr(ord(data[i])^0xf)
print(flag)
print(base64.b64decode(flag))
WFlDVEZ7Mzg5ZjY5MDAtZTEyZC00YzU0LWE4NWQtNjRhNTRhZjlmODRjfQ==
b’XYCTF{389f6900-e12d-4c54-a85d-64a54af9f84c}’
此题总结:
1、li2cpp逆向的步骤:
(1):首先查看他的global-metada.dat是否被篡改(文件头是不是AF1BB1FA)
(2):使用ill2cppdump进行解包,命令行
Il2CppDumper.exe executable-file global-metadata output-directory
(3):使用dnspy查看函数在哪加密;
(4):使用ida进行符号还原:先把GameAssmely.dl拉入ida,然后把ida py3拉入ida 然后再把script.json拉入ida
(5):根据在dnspy中看到的函数在ida中查找具体的函数
2、ez_rand:
1、查壳:
64位程序
2、ida启动:

一定一定一定要注意类型以及位数,要不然根本爆不出来
int __fastcall main(int argc, const char **argv, const char **envp)
{
unsigned __int64 v3; // rbx
unsigned __int16 v4; // ax
int v5; // edi
__int64 v6; // rsi
int v7; // eax
int v9[7]; // [rsp+20h] [rbp-50h]
char v10; // [rsp+3Ch] [rbp-34h]
__int16 v11; // [rsp+3Dh] [rbp-33h]
__int128 v12; // [rsp+40h] [rbp-30h]
__int64 v13; // [rsp+50h] [rbp-20h]
int v14; // [rsp+58h] [rbp-18h]
__int16 v15; // [rsp+5Ch] [rbp-14h]
char v16; // [rsp+5Eh] [rbp-12h]v13 = 0i64;
v12 = 0i64;
v14 = 0;
v15 = 0;
v16 = 0;
sub_7FF7B62F1020(“请输入flag:”);
sub_7FF7B62F1080(“%s”);
v9[0] = -362017699;
v11 = 0;
v3 = -1i64;
v9[1] = 888936774;
v9[2] = 119759538;
v9[3] = -76668318;
v9[4] = -1443698508;
v9[5] = -2044652911;
v9[6] = 1139379931;
v10 = 77;
do
++v3;
while ( *(&v12 + v3) );
v4 = time64(0i64);
srand(v4);
v5 = 0;
if ( v3 )
{
v6 = 0i64;
do
{
v7 = rand();
if ( (*(&v12 + v6) ^ (v7
+ ((((2155905153i64 * v7) >> 32) & 0x80000000) != 0i64)
+ (((2155905153i64 * v7) >> 32) >> 7))) != *(v9 + v6) )
{
sub_7FF7B62F1020(“Error???\n”);
exit(0);
}
++v5;
++v6;
}
while ( v5 < v3 );
}
sub_7FF7B62F1020(“Right???\n”);
system(“pause”);
return 0;
}
给一下解密代码:
#include <iostream>
using namespace std;
int main() {
char data[29] = { 0x5D, 0x0C, 0x6C, 0xEA, 0x46, 0x19, 0xFC, 0x34,
0xB2, 0x62, 0x23, 0x07, 0x62, 0x22, 0x6E, 0xFB, 0xB4, 0xE8, 0xF2, 0xA9, 0x91,
0x12, 0x21, 0x86, 0xDB, 0x8E, 0xE9, 0x43, 0x4D };
char flag[29] = {0};
int v7;
for ( int i = 0; i < 65535; i++) {
srand(i);
for ( int j = 0; j < 29; j++) {
v7 = rand();
int num = (int)((2155905153 * v7) >> 32);
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**





**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
1万+

被折叠的 条评论
为什么被折叠?



