Tech

开源社区参与之感想

最近几个月里,我向OpenSSL、Linux kernel和Rizin三个开源社区提交了Pull Request,其中大部分都被接受。对OpenSSL和Linux kernel社区贡献的代码主要是对一些bug的修补;由于Rizin仍处在开发的初期,对Rizin贡献的代码则主要涉及到一些新功能的开发。这篇博客主要聊一聊参与这些开源社区的感想。

A Comparison between LLVM Infrastructure and Tree-sitter for Static Analysis

Static analysis is often assigned to LLVM infrastructure for its rich interfaces for manipulating codebase. However, I leveraged tree-sitter frequently to perform static analysis on C code recently. After implementing some fundamental analyses (such as CFG, call graph, slicing, and so on), I further constructed some advanced methods. I dug out many new bugs in OpenSSL and Linux kernel. After experiencing it first hand, I think tree-sitter is enough to cope with lightweight code analysis such as code searching-like tasks (Weggli does achieve this by tree-sitter).

使用Nginx与ModSecurity搭建WAF测试环境

本文介绍使用nginx作为服务器,ModSecurity作为WAF搭建攻击测试环境的过程。总的来说分为以下几个过程:编译安装ModSecurity,编译安装nginx,在nginx中开启ModSecurity并导入owasp-modsecurity-crs,测试四个过程。由于本文的目的是搭建测试环境,因此在docker中进行。

HolaPeWatch

HolaPeWatch is an ease-to-use PE format file analysis tool. Since in developing, it can only support 32-bit with several functionalities like binary editor and goto.

比特币

写这篇文章时,每枚比特币的价格已经高于五万美元。我不懂、也不去讨论其背后的金融原理,但是比特币的技术细节我还是可以探究一二。比特币以“去中心化”闻名,那这么一个没有中心节点的系统是如何运作的,正是本文的主题。

使用pyenv进行Python版本与虚拟环境的管理

使用Python,尤其是运行机器学习相关的程序时,有两个经常需要面临的问题:Python的版本、Python依赖包的版本。pyenv可以方便地进行Python版本的管理;再结合pyenv-virtualenv插件,通过对不同项目创建不同的虚拟环境来应对依赖包的版本问题。

incaseformat样本详细分析

incaseformat病毒近日爆发,影响了不少主机。这么一个古老的病毒能够造成这么大的影响,令人感到意外。我从微步在线上下载了样本进行分析。需要注意的是,incaseformat有两个在野版本,详见https://www.52pojie.cn/thread-1351233-1-1.html。我分析的应该是原始版本,但是两个版本除了Sysutils::DateTimeToTimeStamp库函数所使用的全局变量IMSecsPerDay不同,其他没有什么区别。在文章的最后有样本相关资源的链接。

程序的生成与运行

这篇文章里,我将介绍一个程序从源码到内存中运行的整个过程。这涉及到很多方面的知识,如有错误还请读者斧正。

Reasons for failing to find target api using codeql

As a new practical tool to search bugs in target programs, codeql is more and more popular among software security researchers. A crucial step using codeql is to find target api, then you can define your own violation check. However, due to many possible factors, users may fail to find target api. Here I present a simple guide to find reasons. we assume the target api is tgt_api() in code.c.

Linux下软件编译常见问题

编译过程说明

在Linux下使用诸如apt、pacman和yum这样的软件管理工具安装软件比较简单,往往一条命令就足够了。但是,如果想安装一个旧版本软件进行测试与研究,或者是一个比较冷门的软件,就需要用户获取源代码从头进行编译。前一段时间我积累了许多这种经验,因此本篇文章从实用的角度描述编译时可能出现的问题及解决办法。