-Qfrost-

Qfrost真是个fw(

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......

OLLVM 之指令替换源码学习

指令替换,Instruction-Substitution(sub),是一种比较简单的混淆方式,会将代码中一些简单的数学运算复杂化,但这种方式容易被代码优化给去除,且目前 OLLVM 只实现对整数运算的混淆。如: 1234567891011121314151617181920212223242526272829303132原式子:a=b+c混淆后:a = b - (-c)a = -(-b +......

LLVM 调试环境配置

感谢@Richar,教我配出了超级方便的LLVM Pass源码级调试环境 Orzzzz 准备工作 按照前一篇博客 LLVM编译与FirstPass 配置好LLVM环境和环境变量,LLVM必须用Debug模式编译 安装好vscode 如果用的是虚拟机则配好vscode remote ssh,WSL的话配好vscode remote WSL 调试环境配置 本来我是想直接将调试环境配置到LL......

LLVM 编译与First Pass

要开始正儿八经认真学LLVM了。先吐槽一下,这东西是真的麻烦,编译起来一堆坑,项目还贼大,一编译就是十几分钟至一个小时。还吃电脑各种环境,各种小版本,前前后后至少编译了好几天才整出一个跨平台、可集成多种工具链的成品。下面做个记录。 编译 编译这一步应该是最麻烦的,编译时间长,小版本多,github各种仓库,鱼龙混杂。这里有个很大的坑,就是LLVM的版本。如果就是随便用用,那版本无所谓,但是如......

【Design Patterns】创建型模式

工厂模式(Factory Method) 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。 何时使用:我们明确地计划不同条件下创建不同实例时。 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。 关键代码:创建过程在其子类执行。 应用实例: 需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽......

【Design Patterns】设计模式

总的来说就是,越来越觉得自己开发有问题。写东西,我能写,能实现,但是代码越看越丑,尤其是代码量高的一些大项目,写到后面就会觉得语法和结构上各种不满意。故有了此系列文章。 本人Python、C/C++、Go用的比较多,故这一系列,Demo以Python为主,但也可能穿插C\C++、Go的Demo。设计模式灵活,本人开发能力又比较菜,需要一定时间理解,故本系列慢更。 设计模式 设计模式(Desi......

【安卓】NDK配置与项目集成

折腾了一下Android+SO,用的环境是IDEA+NDK。主要因为IDE和各种环境依赖迭代太快,网上教程很乱,方法基本都是过时的,自己踩了很多坑,这里做个记录。 0x01 下载NDK 先去下载NDK : https://developer.android.google.cn/ndk/downloads?hl=zh-cn 解压,并将该目录配置到环境变量。 0x02 Java接口声明 Java......

浙ICP备19044916号-1