-Qfrost-

Qfrost真是个fw(

OLLVM Pluto 之平坦化增强源码学习

学 (抄)了一手Pluto的平坦化增强(FlatteningEnhanced),不知道为啥Pluto的这份代码和其他的代码风格差异极大,代码可读性很差,看了好久才看明白是什么意思。 Pluto平坦化增强(FlatteningEnhanced)的核心思想是:自实现真实块的分发方式,使用树结构取代标准平坦化的switch进行分发。在构建平坦化之前,生成一颗不规则的随机的二叉树,其叶子节点数目等于......

OLLVM 之全局变量间接访问源码学习

我真的太懒了,半年前写的代码今天才翻出来写博客。 全局变量因为其所在的地址对于全局都是固定的,是否有一种可能,通过Pass将所有全局变量的地址进行加密,在访问时进行解密后访问,静态分析工具就难以对全局变量的访问进行识别,也无法进行直接的交叉引用分析。 尝试自己实现了一下,然后发现第一步就卡住了,因为全局变量、函数等符号的地址,只有在链接后才会确定,我们无法在Pass也就是代码优化阶段得到全局......

NepCTF2022 Qriver2.0出题思路

关于怎么出这道题其实想了很久,如何将我最近学习的东西和CTF联系起来,并出一道难度适中,考察面较广,且不恶心人的题。我个人比较反感CTF题中卷一堆乱七八糟很复杂的加密算法,所以这次题目的算法是非常简单并且是加解密同函数的,只要分析完程序逻辑就能马上解出该题而不用花大量时间在那里扣算法。但是又不希望题目被静态直接秒了,(比如去年NepCTF的Qriver是个Windows驱动+VM,直接有大师......

Ciscn 2022 Re&可信计算 WriteUp

作为一年一度的CTF“高考”,今年的高考应用题很迷惑,四道Web三道有非预期,Pwn一个签到一个LLVM(我不理解。Re两道阅读题眼睛快瞎了,第三道Rabit加密还可以被爆破。最迷惑的是可信计算,两道一模一样的题不知道是什么操作。 Reverse 这次高考,Reverse的应用题比重太高了,真的眼睛要瞎了 baby_tree 题目是一个.ast文件,打开看部分内容 1234567891011......

Windows下优雅使用LLVMPass

不建议在Windows下折腾LLVM(完 可以说 究极复杂 准备工作如果想要在Windows下编译LLVM Pass需要Build好的LLVM完整项目bin与lib,和build后的include,同时需要源码的include目录。所以前面部分还是要按照LLVM 编译与First Pass编译得到LLVM。这里大家切记cmake要开启 LLVM_ENABLE_PLUGINS 选项,之前我没......

腾讯游戏安全竞赛 2022 WriteUp

意外登顶(存 yyds 总得来说,这次比赛题目CTF比重较前两年大很多,但感觉区分度不高,特别是决赛的截图方案上,要么是大家都会的方法,要么是大家都不会的骚操作,不像去年百花齐放的各种外挂实现方案。(可能也正是因为这个才能让我这个半吊子CTFer以文档和提交时间偷冠成功 初赛 这里有一个画了flag的小程序,可好像出了点问题,flag丢失了,需要把它找回来。 题目: 样例: 要求: ......

WriteProcessMemory与它的坑

属于是没想到,我会因为一个API写一篇博客。没办法,它的坑实在是太大了,让我惊叹于微软文档工程师的“牛逼”。 起因是,我想跨进程的对一个程序的代码段做修改。代码段通常是可读可执行不可写的,三环程序WriteProcessMemory可以直接修改成功,但是我Ring0调用MmCopyVirtualMemory却失败返回STATUS_PARTIAL_COPY。因为之前知道WriteProcess......

L3HCTF double-joy引出的解VM类题型新思路

师傅们太强了,这波直接夺冠保送Final! 这次比赛做这个double-joy有些新的想法,好吧其实也 。可这次的VM实在太复杂了,之前的跟调、爆破、dump根本看不懂,神tm VM跑了202次opcode还不一样,跟完一段都已经傻了。 大概就是,VM其实做的是一个opcode模拟shellcode的运行过程,opcode进入VM译码执行对应的汇编操作,如果能把shellcode d......

OLLVM 之控制流平坦化源码学习

控制流平坦化 ,Control-Flow-Flattening(FLA),的基本思想主要是通过一个主分发器来控制程序基本块的执行流程。该方法把函数内所有基本代码块放到控制流图的最底部,然后删除掉原来的基本块之间的跳转关系,添加混淆器的流程控制分发逻辑,通过新的复杂分发逻辑还原原来程序块之间的逻辑关系。即,通过一个主分发器,控制整个函数内代码块的运行流程。 123-mllvm -fla : ......

ByteCTF 2021 Re 部分题解

languages binding GO+LUA 整了个类似解释器的东西。可以看出程序是GO编译的,并且混淆了符号。没有符号的Go,实现了Lua的虚拟机,我只能说非常恐怖。 随便往文件里输点啥 总能通过报错得到一段输出 对比源文件内输入和报错输出,发现就是逐位字节异或了85。然后对文件解密,发现文件少了头。现场学习lua文件结构 Lua chunk文件结构 修文件头前6字节,尝试用unl......

浙ICP备19044916号-1