文章列表

# TRX CTF 2026 reverse 方向 write up # wandering 将 vm 拖入 ida 进行分析,main 函数展现了一个标准的 VM 生命周期: 123456789101112131415161718192021222324252627282930313233__int64 __fastcall main(int a1, char **a2, char **a3){ unsigned int v3; // r13d void *v4; // rax void *v5; // rbp _QWORD *v6; // rax void *v7; //...

# N1CTF Junior 2026 WriteUp # Reverse 方向: # MaybeAndroid 题目提供了一个 Android APK。安装后发现是一个 “Python 脚本运行器”,内置了几个 Python 脚本。 核心目标是获取 flag_check.py 中的 flag。直接运行 flag_check.py 会提示:“该脚本仅限 VIP 用户使用”,且该脚本是一个校验脚本,需要输入正确的 flag 才能通过,而不是直接输出 flag。 通过反编译 APK 定位到 MainActivity.kt 从而可以发现 app 的逻辑:Python 脚本存放在 Assets...

# 迷宫问题 迷宫问题有以下特点: 在内存中布置一张地图 将用户输入限制在少数几个字符范围内 一般只有一个迷宫入口和一个迷宫出口 布置的地图可以由可显字符(比如 # 和 * )组合而成(这非常明显,查看字符串基本就知道这是个迷宫题了),也可以单纯用不可显的十六进制值进行表示。可以将地图直接组成一条非常长的字符串,或是一行行分开布置。如果是一行行分开布置的话,因为迷宫一般都会比较大,所以用于按行(注意,布置并非按顺序布置,每行都对应一个具体的行号,你需要确定行号才能还原迷宫地图)布置迷宫的函数会明显重复多次。 而被限制的字符通常会是一些方便记忆的组合(不是也没办法),比如 w/s/a/d,...

# Another Android Applaketion 下载附件发现是 apk 文件,拖入 jadx 打开,然后找到...

# ollvm 三种混淆模式反混淆 # 预备知识: llvm 是一个完整的编译器架构,作用可以理解为制作一个编译器,llvm 先将源码生成为与目标机器无关的 LLVMIR 代码,然后把 LLVMIR 代码先优化,再向目标机器的汇编语言而努力。经典编译器都可分为前端、中层优化和后端: 从上图中可以看到 clang 是前端的一个套件,但在实际使用时,我们只可以感受到 clang,也只是在使用 clang,因为编译的时候,是调用 clang 或 clang++ 来编译源码。 而 ollvm 是基于 LLVM 代码分支的代码混淆,在中间表示 IR 层,通过编写 pass(遍历一遍...

# TEA 系列 # TEA 加密解密 介绍 在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。 代码的特点: 加密使用的数据为2个32位无符号整数,密钥为4个32位无符号整数即密钥长度为128位(当加密解密的对象是一串数组的时候,需要将这个32位无符号整数的数组每两个32位无符号整数划分为一组,对每一组数据单独加密解密得到结果); 该算法使用了一个常数 δ 作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但 δ 的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 -...

# Reverse 花指令 # 花指令 花指令是反调试的一种基本的方法。其存在是干扰选手静态分析,但不会影响程序的运行。实质就是一串垃圾指令,它与程序本身的功能无关,并不影响程序本身的逻辑。在软件保护中,花指令被作为一种手段来增加静态分析的难度。IDA 并不能正常识别花指令,导致可看可分析代码被破坏,因此需要我们自己去分析一下。 花指令⼀般分两类,会被执行和不会被执行(垃圾指令)。 # 会被执行 这类花指令本身是正常的汇编指令,它们运行完后不会改变原来程序的堆栈 / 寄存器,但能起到干扰静态分析的作用。一般分为两种: 形式一:改变堆栈操作 形式二:利用 call 指令或 jmp...

# Space Pirates 根据附件逆向写脚本即可 12345678910111213141516171819202122232425262728293031 `target = [ 0x5A, 0x3D, 0x5B, 0x9C, 0x98, 0x73, 0xAE, 0x32, 0x25, 0x47,` `0x48, 0x51, 0x6C, 0x71, 0x3A, 0x62, 0xB8, 0x7B, 0x63, 0x57,` `0x25, 0x89, 0x58, 0xBF, 0x78, 0x34, 0x98, 0x71, 0x68, 0x59]``xor_key = [0x42,...

# RC4 加密算法 在密码学中,RC4(Rivest Cipher 4)是一种流加密算法,密钥长度可变,它加解密使 用相同的密钥, 因此也属于对称加密算法,RC4 是有线等效加密(WEP)中采用的加 密算法,也曾经是 TLS 可采用的算法之一。 补充说明:序列密码(流密码): 流密码也属于对称密码,但与分组加密算法不同的是,流密码不对明⽂数据进⾏分组, ⽽是⽤密钥⽣成与明⽂⼀样⻓短的密码流对明⽂进⾏加密,加解密使⽤相同的密钥。也 就是说,RC4不是对明⽂进⾏分组处理,⽽是字节流的⽅式依次加密明⽂中的每⼀个字 节,解密的时候也是依次对密⽂中的每⼀ 个字节进⾏解密。 # (1)S...

# 逆向常见反调试合集 # 1、反调试简介 反调试是一种用于阻碍程序动态调试的技术,这里大致说明一下反调试的工作原理: 在操作系统内部提供了一些 API (即应用程序编程接口,可以允许两个完全不同的应用程序相互 “交谈” 并交换数据,而不需要知道彼此内部是如何工作的),用于调试器调试。当调试器调用这些 API...