Visual Studio 注释扩展

在阅读大型工程源代码的时候经常需要根据自己的理解为代码添加某些注释,直接在源码文件中的修改有可能会导致工程重新编译,git 更新代码时产生冲突等情况,更有甚者一旦代码通过 git 更新之后,自己添加的注释将不会出现在新代码中;如果将注释写在源码之外的文件中,在以后查阅和对照时又会有其他新的麻烦。基于以上需求,笔者实现了一个 Visual Studio 中的注释插件,可以在源码文件之外独立添加注释,并且在查看源码时会在对应的位置显示注释。

效果如图所示

在编写过程中参考了这篇文章 中插件的实现。感谢这位作者的分享。

Visual Studio Extension

微软为 vs 扩展的开发者提供了一套完整的开发文档,以便开发者可以根据自己的需求扩展 Visual Studio 的功能。理论上而言可用的扩展点如下

  • 命令和菜单
  • 工具窗口
  • 编辑器窗口
  • 语言服务
  • 项目扩展
  • 用户设置
  • 属性和属性窗口
  • Visual Studio 独立 Shell

其他更多关于 VS 扩展的内容可以参见上面的开发文档,其中提供了大量的例子可以参考。

实现

下面笔者将一步一步记录下整个插件的编写过程,以便之后改进和复现。

Read More

也谈 “Spectre” CPU 漏洞

元旦回来 P0 就放出了 2018 年的第一个大新闻,多款处理器被曝出存在安全漏洞可以泄露某些敏感信息,P0 将其分别命名为 “Spectre” 和 “MeltDown”。其中 “Spectre” 漏洞是由于 CPU 的分支预测进而导致的缓存信息泄露,其效果可以越界读取某些内容。

根据原理上来说 “Spectre” 是可以并且比较容易在浏览器中通过 js 相关技术实现攻击的,在 P0 的论文后也附加了一个 C 语言实现的 demo。出于对这种攻击理论上的认可我们开始尝试通过 js 来实现 “Spectre” 的漏洞利用。经过四天的研究我们终于 “全球首发” “Spectre” 漏洞在线检测工具,虽然依然很不完善但是效果却出乎我们所有人的意料。检测工具地址

实现的代码全是 JS 因此可以直接通过前端获取,经过 Exp-sky 师傅的润色代码也大体上可读(ps:如果知道要放出来的话变量命名写的时候就不会那么随意了~ orz)。这里记录一下代码编写过程中的几个问题,以备以后查询。

Read More

Decrypt PYC

PYC

PYC 是 Python 文件经过编译之后形成的一种文件格式,可以提高加载效率用来为其他 Python 程序提供函数接口等功能。

其文件格式如下,主要由头部四字节的 Magic 字段和 4字节的 timestap 以及 r_object 结构组成。r_object 对象是 PYC 文件的主要内容,包括了 python 文件所编译形成的 Opcode、常量、值等一系列信息。其更具体的信息可以在 python 自带的 marshal 库中找到 Python/marshal.c

Read More

Bypass CFG Through MRDATA

http://alex-ionescu.com/publications/euskalhack/euskalhack2017-cfg.pdf

这是 Alex 大神的一篇演讲,介绍了一种新的绕过 CFG 的思路

MRDATA

从 Win8.1 开始微软为 CFG 的 bitmap 添加了保护机制,将 bitmap 指针等一系列全局变量放置于文件的 .mrdata 区段,这是一个新的 PE 区段,用于保存那些易变的只读数据。

这个区段在模块加载时被标记为 PAGE_READONLY ,理论上无法被修改。

但是某些时候 ntdll 需要去修改 .mrdata 区段中的某些数据。为此Windows 提供了一个新的 API : LdrProtectMrdata( bProtect )函数用于设置 .mrdata区段是否开启保护 ,参数传入 0 表示 unprotect,传入 1 表示 protect。

很明显在模块加载和卸载时都会调用这个函数来设置一些数据,然而有些函数在运行时也会调用这个 API。

例如SetProtectedPolicyGetProtectedPolicy就会用到它。这两个函数用于设置和获取进程的保护策略,这些策略保存在通过 LdrMrdataHeap 分配的内存中,即策略处于 .mrdata 区段

Read More

RaspBerry Pi 折腾笔记

开箱

从 salt 大佬那里拿到一个树莓派,开始开箱进行折腾。

首先要进行系统的安装,这里选择的是树莓派上的一个 Ubuntu 系统

download

一开始准备使用 PowerISO 直接把这个系统当作一个 PE 烧到 sd 卡里,但是烧进去了之后发现没有办法成功启动,所以只好老老实实使用官方推荐的工具 Win32DiskImager 来安装

Read More

Image Capture

在申请这个博客的时候,定了一个小目标要半个月发一篇文章,结果发现如果不发漏洞分析的话好像很难有其他的文章。在这个月的最后一天终于在 5alt 大佬的帮助和鄙视下完成了一个小爬虫工具。现写一篇文章记录一下这个工具的整个开发过程。

Read More

Bypass ACG

P0 的研究员披露了一种可以绕过微软最新推出的 ACG 保护的方法,同时 yuange 也表示他的方法就是这个。这篇文章根据 P0 上披露的细节实际对 Edge 进程进行分析,学习在获取了读写执行的前提下如何绕过 ACG 的保护。

Read More