windbg-ttd
1.Windbg-TTD1.1 简介 TTD是”Time Travel Debugging”的缩写,是Windbg preview提供的针对单个进程的用户态trace录制工具。录制完成后生成.run文件可以在调试器中向前向后重放,不需要再重新运行程序就能让你的调试器状态回退,并且还能分享trace文件给别人。 1.2 基础用法从一个简单的除零错误例子出发,目标的源码如下: 12345678910
Bypass EDR
1.内存动态检测1.1 检测模式1.1.1 模式匹配基于特征进行检测。代表性的工具有YARA,以及针对CobaltStrike的检测工具 BeaconEye。 BeaconEye工具主要针对Beacon的配置文件在堆内存中的某一刻一定是解密状态的,甚至配置文件中可以获得TeamServer的哈希。 1.1.2 内存IOCs基于可疑内存属性的检测。如私有内存(VirtualAlloc)的可执行属性,
TLS线程局部存储
1.简介TLS线程局部存储在每个线程的基础上有效地存储状态,可以在一定程度上避免在每个线程的基础上实例化全局变量的情况。TLS的访问是通过TEB上存在的指针或数组 2.基础使用2.1 显示使用API1234567891011121314151617181920212223242526272829303132333435363738#include <Windows.h>DWORD g_
随记
1.Rust中尽量安全的使用裸指针: 12use std::ptr;pub const unsafe fn ptr::write_unaligned<T>(dst: *mut T, src: T) 2.Rust中想定义变参函数,需要nightly版本,并将变参逻辑用C++实现。 1234567891011121314151617extern "C" void My
Rust系统编程之无畏并发
1.创建线程Rust中的线程与系统线程是1:1的。 1.1 不等待结束12345678910111213141516use std::thread;use std::time::Duration;fn main() { thread::spawn(|| { for i in 1..10 { println!("hi
Rust系统编程之闭包与迭代器
1.闭包1.1 函数式编程函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。 1.2 闭包与函数不同于函数,闭包允许捕获被定义时所在作用域中的值。 1234567// 函数fn add_one_v1 (x: u32) -> u32 { x + 1 }// 完整类型闭包let add_one_v2 = |x: u32| -&g
Rust系统编程之自动化测试
1.基础测试模板12345678#[cfg(test)]mod tests { #[test] fn it_works() { let result = 2 + 2; assert_eq!(result, 6); }} 1.1 断言宏12assert_eq! // ==assert_ne! // != 需要