WMCTF2023 VNCTF2023 BabyAnti 分析
BabyAnti 详解重要:这里有个更正从WMCTF2023下载的附件应该出错了应该是BabyAnti1.0的附件,后面我出flag和发现没碰到mincore的问题才发现 java层发现了一些反调试的东西,并且在lib下发现了anticheat.so libapp.so直接搜索3000 用blutter分析下 1python3 blutter.py path/to/app/lib/arm64-v8a out_dir 然后ida导入脚本add_names,就能恢复符号了,但是问题在于不能建立交叉引用 1.rodata:0000000000020C78 39 39 C4 43 6F 6E 67 72 61 74 75 6C 61 74 69 6F ... 里面确实能看出明文: 1Congratulation! Here is your flag: 为什么没有普通字符串交叉引用,在普通 native 程序里,常见情况是: 12ADR X0, aHelloBL puts 这里代码直接拿到了字符串地址,所以 IDA 很容易建立:代码 -> 字符串 的...
WMCTF2025 Want2BecomeMagicalGirl复现
WMCTF2025 Want2BecomeMagicalGirl最近在总结flutter逆向 又重新看了一遍这道题 WMCTF2025 Want2BecomeMagicalGirl - Britney java层Java 层其实很短,真正有用的只有一条 Flutter 通道和一个 XXTEA变种 入口MainActivity onCreate() 只做了几件事: 注册 Flutter 通道:P0.b.c(aVarJ)。 弹一个 120 秒倒计时对话框,文本来自 story 资源。 真正流程关键在 P0/b.java:48: 它向 Flutter 注册了一个 MethodChannel(“to”)。 handler 取的是 hVar.f7172a,也就是 MethodCall.method,不是 arguments。 收到字符串后走 f(str)。 f(str) 的逻辑在 P0/b.java:79: 第一次调用时启动一个后台线程。 把种子重置为固定值 114514。 用 Java Random 同款 LCG 公式生成一个 16-bit...
简单学习ollvm混淆&polyre例题解析
简单学习ollvm混淆转载参考自:[原创]深入浅出 Ollvm 混淆原理及反混淆技术-Android安全-看雪安全社区|专业技术交流与安全研究论坛 OLLVM 的三大核心混淆手段:指令替换、虚假控制流、控制流平坦化 指令替换通过数学等价变换来增加代码复杂度的混淆技术。它的核心思想是将程序中原本简单的指令(如加法、异或),替换为一段功能等效但逻辑极其晦涩的指令序列。 比如把a+b换成a-b+c-c+b+b 去除手段D810 可以看到,虽然 D-810 成功去除了一部分混淆,但核心逻辑(RC4 的异或操作)依然被更深层次的 MBA 表达式掩盖,未能完全还原。 当 D-810 无法完全还原,或者你需要处理极高强度的 MBA 表达式时,GAMBA 是你的终极武器。 该工具的详细使用方法请移步:[分享]Ollvm 指令替换混淆还原神器:GAMBA 使用指南 虚假控制流通过向代码中注入永远不会执行的“死代码”块和难以预测的条件跳转,来干扰控制流图(CFG)分析。 不透明谓词:在程序运行时其真假结果是确定的,但对静态分析器而言难以推断其恒真或恒假的条件表达式。 示例:if (x *...
VNCTF2026 Shadow分析[驱动分析+反射注入]
ShadowVNCTF2026-Shadow-WP | Liv’s blog Maze.exe一个简单迷宫 sys分析下 Findcrypt发现AES sub_14000C000从全局 Pool 拷贝 0x5E00 字节,然后调用 sub_140001168 做 16 字节分组变换 确认是 AES 轮函数(S-box 在 0x140004000,Rcon 在 0x140003070,密钥在 dword_14000A000) 静态分析AI搓个脚本 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849import argparseimport pefilefrom Crypto.Cipher import AES# Challenge-specific RVAs from stage1 sys.KEY_RVA = 0xA000ENC_BLOB_RVA = 0x4200ENC_BLOB_SIZE = 0x5E00def read_rva_bytes(pe:...
VNCTF2026 Re
VNCTF2026 Re 复现做alictf去了 没怎么做 简单看看题 ez_maze难度:签到 主要是壳上了 exeinfo上看没有壳 die识别出了是个upx 但是010没找到相关特征,应该是魔改了,使用各种脱壳工具无法直接脱壳,需要手脱 大致看了下程序首先会jmp到102A,102A会jmp到E9D0 入口点:ImageBase + 0x31000(也就是 .arch 节) .arch开头看起来像乱码,但它先 jmp到 0x3102A,那里是一条jmp rel32,也就是跳到.rdata 内部 RVA 0x1E9D0(这段才是真壳代码)。 在 RVA 0x1E9D0 这段反汇编非常典型: rsi 指向 .rdata 起始(压缩数据流) rdi 被设置成 rsi - 0x1B000 因为 .rdata 起始是 RVA 0x1C000,所以目标地址是:0x1C000 - 0x1B000 = RVA 0x1000 也就是说:把压缩流解压到 RVA 0x1000(原 .text)。 另外它内部的 bit-buffer 读法是 UPX stub 常见的:add...
Aliyunctf 2026 re
Aliyunctf 2026 relicense [not solved]解到最后一层RSA 不会密码 原来是维纳攻击 忘记了… pixelflow用Il2cppdumper dump出dump.cs和一些数据 导入到IDA打开的GameAssembly.dll恢复一些函数名和符号 同时也在Assembly-Csharp.dll发现了check指向了GameAssembly的地址 在stringliteral.json里看到了flag头 1234{ "value": "alictf{", "address": "0xEBDF38"}, Controller__Check_d__18__MoveNext 123456这里能看到依次调用 Method_Controller__Check_b__18_0__ / b__18_1__ / b__18_2__ / b__18_3__,其中 b__18_2 被 await了3次(对应K0运行3...
ByteCTF2022 MITM分析
ByteCTF2022 MITM分析APK分析AndroidManifest.xml之前介绍过 12345678910111213141516<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" android:compileSdkVersion="32" android:compileSdkVersionCodename="12" package="com.bytedance.mitm" platformBuildVersionCode="32"...
Bytectf2022 GoldDroid复现
Bytectf2022 GoldDroid复现APK分析AndroidManifest.xml这里的VulProvider是导出的,谁都可以通过 content://slipme/… 来访问这个 Provider 12345678910111213141516171819202122<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" android:compileSdkVersion="32" android:compileSdkVersionCodename="12"...
ByteDroid2022 BronzeDroid复现
ByteDroid2022 BronzeDroid复现APK分析AndroidManifest.xmlFileProvider用来把 App 内部文件,用 content:// 的方式安全地共享出去 Android开始直接禁用file://共享 而@xml/file_path定义了可分享的范围: 1234<?xml version="1.0" encoding="utf-8"?><paths> <root-path name="root" path=""/></paths> <root-path> 的意思是:把设备文件系统的根目录 /作为可共享的基准路径 path="" 基本等价于:不做任何子目录限制 name="root" 只是一个别名(后面构造 content://...
ByteCTF2021 ByteDroid2复现
ByteCTF2021 ByteDroid2复现参考:ByteCTF2021 writeup for Android challenges - 飞书云文档 APK分析AndroidManifest.xml123456789101112131415161718<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" android:compileSdkVersion="30" android:compileSdkVersionCodename="11" package="com.bytectf.bytedroid2"...

