文章列表

5.5k 10 分钟

某一天,点击 VS 的单个测试用例时,发现卡死了,VS 提示没有响应,以下是测试工程的结构: Project_name - namespace - test_suite_name - test1 - test2 <---- 点击test2,就卡死 提示如下: 当时简单用 windbg 看了下,没有看出原因。因为当时可以使用命令行选项来跑单个测试用例,所以这个问题就搁置了。 之后重装了操作系统,发现没有这个卡死问题了。一段时间后,结果又出现了这个卡死。看来还是得把这个问题解决,在 VS 的 UI 测试单元测试用例还是挺实用的。 #...
1.8k 3 分钟

# Release ordering 对 std::memory_order_relaxed 内存顺序的例子(list 5.6)产生了疑问,以下做一个记录。 # 前置知识 同一个线程中,对不同变量的修改是有确定顺序的 int x,y;x = 0;y = 1;x 变量的修改肯定发生在 y 变量的修改之前。 # 内存顺序选项 C++ 中有 6 个内存顺序选项 (memory order options),分别是 memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release,...
2.6k 5 分钟

# 总结 最近需要整理 C++ 的安全编程规范,在线上的资料中,发现 SEI CERT C++ Coding Standard 2016 edition 是相对最全面、非常规范的资料。在本书的学习中,声明(第二章)和表达式(第三章)个人觉得是最重要的两章,其次是面向对象编程(第十章)。 本书不仅讨论了 C++ 规范和对应规范的安全编程实践,还阐述了很多编程实践。通过编程实践的学习,我发现了另外两本很有价值的书,作者都是 Scott Meyers ,书名分别是 Effective Modern C++ 11 and 14 和 Effective C++ 3rd...
2.1k 4 分钟

# 单例模式 单例模式是设计模式的一种,是开发实践中经常用到的一个概念。大意是在一个生命周期内(大多数情况是一个进程),只有一个实例。比如一个进程应该只有一个日志管理器 (LogManager) 实例。 这里给出一个单例模式的例子: class Singleton { static Singleton *instance; int data; // Private constructor so that no objects can be created. Singleton() { data = 0; } public: static...
1.5k 3 分钟

随着一个工程的逐渐壮大,工程的编译时间会越来越长,也许你觉得编译时间长是正常的,因为引入了各种库,又开发了很多代码。 开发一个工程很长时间了,编译要花大概 100 秒左右,每次需要 rebuild 或者出包时都会觉得很慢,但也只能等待。无意间了解到一个预编译的概念,于是决定对整个工程添加预编译,看编译时间能否有明显变化。结果让我很吃惊,编译时间从 100 秒降到了 17 秒,让我之后的开发也相对快速了一点。这里记录一下过程和其中值得记录的点。 # 预编译(precompiled...
1.1k 2 分钟

昨天和同事在讨论安卓 ANR 的 SIGQUIT 信号处理时,有以下一些疑惑: blocked signal 是什么意思,有什么意义,是针对进程的还是线程的 pthread_sigmask 是针对当前线程还是进程的 关于 sigwait 的线程,sigwait 等待的 signal 是 blocked 还是 unblocked,或者都可以 如何一个 signal handler 和 sigwait 都可以处理一个 signal,那谁先接收到该信号 接下来每个小节会按顺序说明这几个问题。 因为 blocked 和 pending 翻译起来有点别扭,所以相关专业词汇就直接用英文描述了。 #...
3.1k 6 分钟

之后准备学习混淆和反混淆,于是查阅了一些 paper,然后根据自己的理解简单总结了一下,画了一张思维导图。 # 混淆的意义 混淆的意义在于保护产品,其作用在于增加逆向分析者的分析成本。 # 混淆的分类 # 源码混淆 由源代码转换到混淆后的源代码。 # 作用 脚本、解释型语言(比如 PowerShell) 混淆源代码(变量重命名等),降低可读性。 powershell 混淆原理可参考:Powershell 代码反混淆技术研究 编译型语言(比如 C++) 混淆源代码,降低可读性(针对源代码要提交给第三方的情况,编译出的二进制与未混淆没有区别), 工具举例:Stunnix,这种与...
7.1k 13 分钟

# 高级进程注入总结 前几天看玄武的 “每日安全” 板块,发现了一篇关于进程注入的文章,之前了解过一些相关的技术,不过是零散的。看到文章总结的挺详细的,且各种方法的异同细节容易忘,于是就想着总结一下各种 进程注入 的异同和优缺点,因此有了本文。 关于常见的进程注入方法,请参考这个和这个,本文将重点描述值得留意的方法(比如 Module Stomping),和一些思路新颖的方法。 以下描述的方法在进程注入这个仓库都能找到。 # 进程注入简介 进程注入就是将代码注入到另一个进程中,shellcode 注入和 DLL...
2.6k 5 分钟

这是一篇关于 COM 基础开发的笔记,主要讲 in-process dll 和 out-of-process server 开发时,值得注意的一些细节,完整的代码请参考 github。 注: 该工程目前只配置了 Debug x64 位。 建议读者看本文前,先阅读 Windows 10 System Programming_part2 的第二十一章,学习开发 COM 的基础知识。本文可当做开发 COM 的细节指导。 # 背景 最近看了 Pavel Yosisofich 的 Windows 10 System Programming_part2...
1.7k 3 分钟

# 日文 もうすぐ新しい年がつき、去年の成績を顧みて、何となく満足しない自分がいた。おととしもそうだっだような気がする(笑^_^)。 去年、自分のウェブサイトができて、とても嬉しかった。hexo を選んだため、少々手間がかかったですが。それから、少しずつ技術の文章を書いて、後の仕事のメモにしたいと思っています。ウエブサイトのほか、いくつの本も読みました、例えば、「design pattern」、「Refactoring, Improving the Design of Existing Code Second Edition」、「C++ Coding...