Crypto Basic 1.HASH算法1.1 SHA11.1.1 特点 生成的hash串长度为20字节 原始消息长度不能超过2的64次方减1 1.1.2 原理1.1.2.1 原理图 1.1.2.2 消息分组补位通过补位使明文串满足对512取模为448,补位规则为第一位补1,其余位补0,448 + 64刚好为512,其中64bit为原始消息长度。 1.1.2.3 生成W分组循环处理每一个512bit分组,将每一个分组 2022-10-10 reverse #basic #crypto
Malware Analysis Qakbot分析 0.分析目标 恶意程序是否加壳?如果是,是常见的壳还是自写壳? 恶意程序使用什么网络通信手段?Winsock2、Wininet、COM、WSK甚至是自己实现的? 是否存在注入或者HOOK技术?如果存在,是什么? 是否存在对抗?反调试、反静态分析、反虚拟机? 是否存在API/DLL被加密? 是否存在字符串加密或混淆? 恶意程序使用了什么同步原语? 恶意程序使用了什么加密算法? 恶意程序使用 2022-10-07 reverse #malware analysis
Windows包管理工具 scoop 1. scoop包管理 寻找官方发布的软件源 下载(指定版本的)软件 运行软件安装器来安装下载得到的软件 修改环境,安装后的善后工作等 2.安装与卸载需要在powershell下操作 2.1 普通用户1234567891011121314// 策略Set-ExecutionPolicy RemoteSigned -scope CurrentUser;// 设置路径$env:SCOOP = 2022-10-05 tools #windows #package-manager
Malware Analysis 脱壳与C2提取 1.加密壳的特征 程序只有很少的导入DLL和函数 存在很多混淆的字符串 存在直接的系统调用 不规范的节区名字 不常见的可执行节区(应该只用.text/.code节是可执行的) 意外的可写节区 raw-size和virtual-size之间差异很大 存在0大小的节区 缺少网络通信相关的API 缺乏用于恶意软件功能的基本 API(例如,勒索软件中的 Crypt* 功能) 不常见的文件格式和头 2022-10-04 reverse #malware analysis
Malware Analysis 环境构建 1.虚拟机操作系统: Windows 7/10/11 REmnux Get the Virtual Appliance - REMnux Documentation Ubuntu Download Ubuntu Desktop | Download | Ubuntu 2.静态分析IDA Pro Hex Rays - State-of-the-art binary 2022-10-04 reverse #malware analysis
C++ STL partI 1.基础概念STL 标准模板库 | 泛型编程思想 参考: C++ C++Reference 2.六大部件 容器 Containers 分配器 Allocators 算法 Algorithms 迭代器 Iterators 适配器 Adapters 仿函数 Functors 结构图如下: 示范代码 2022-10-03 coding #STL #C++
C++异常处理 1.基础语法try:可能出现异常的代码,使用throw抛出指定类型的异常。 throw:抛出异常语句。 catch:捕获指定类型的异常,并尝试做出处理。可以定义多个用于捕获各种类型的异常。 基本类型异常 123456789101112131415161718192021222324#include <iostream>double division(int a, int b){ 2022-10-02 reverse #C++ #basic
C++常见问题整理 1.关键字1.1 const底层const指针:可以修改指向,不可以改值。 1234567int dwVal1 = 0;int dwVal2 = 0;const int* p1 = &dwVal1;p1 = &dwVal2; // 正确*p1 = 5; // 不正确 底层const指针:可以改值,不可以改指向。 1234567int dwVal1 = 0;int dwVal 2022-10-01 coding #C/C++
特征码搜索 1.Sunday字符串搜索算法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 2022-09-23 lib #basic
C++类逆向 1.对象内存布局123456789101112131415161718192021222324252627class A1: public Base{ class Base { // 虚表指针 class Base_vtable* // 父类成员结构 class Base_member { 2022-09-14 reverse #C++ #basic
Ida基础用法 1.常用快捷键 快捷键 功能 Shift + F12 打开字符串窗口 Y 改变函数原型或变量类型 D 宽度转换以及结构体中新增成员 R 字符转换 H 进制转换 / 伪代码中添加注释 X 查看交叉引用 TAB 汇编指令和伪代码之间切换 Shift + E 得到数组 Alt + T 搜索硬编码 Alt + I 搜索立即数 Alt + B 2022-09-13 tools #basic #ida
汇编指令基础 1.EFLAGS 2.测试与比较2.1 test12345test rax, rbx; 等价形式如下push raxand rax, rbxpop rax 2.2 cmp12345cmp rax, rbx; 等价形式如下push raxsub rax, rbxpop rax 3.跳转3.1 JCC条件跳转 短跳:2字节,1字节硬编码 + 1字节有符号偏移 长跳:6字节,2字节硬编码 + 4字节 2022-09-12 reverse #basic #x86/x64 asm