【加密与解密(第四版)笔记】
NovFif
一起抓水母;
欢迎一起交流学习
展开
-
加密与解密(第四版)】第二十五章笔记
注册表是Windows操作系统的配置数据库。25.1 硬盘数据的获取和固定。取证专用的Linux可启动光盘。25.2 硬盘的分区和数据恢复。电子数据的固定(HASH值)利用取证计算机复制硬盘。25.4 动态仿真技术。原创 2024-05-24 16:29:24 · 283 阅读 · 0 评论 -
加密与解密(第四版)】第二十四章笔记
第二十四章 .NET平台加密解密https://learn.microsoft.com/zh-cn/dotnet/core/introductionhttps://www.cnblogs.com/1996V/p/9037603.htmlhttps://zhuanlan.zhihu.com/p/134174688原创 2024-05-24 16:11:50 · 472 阅读 · 0 评论 -
加密与解密(第四版)】第二十三章笔记
增加区块(增加一个块头、增加块头指向的数据段、调整文件映像的尺寸(SizeOfImage))修改输入表中的IID成员,增加输入函数。利用区块空隙(注意区块属性)23.3 获得函数的调用信息。23.4 代码的重定位。23.5 增加输出函数。23.8 DLL扩展。原创 2024-05-24 16:10:40 · 290 阅读 · 0 评论 -
【加密与解密(第四版)】第二十二章笔记
利用 SMC(Self-Modifying Code)能修改自身代码这个特点,可以对加壳程序直接打补丁,其效果相当于内存补丁。在代码刚刚恢复、尚未运行时,在外壳里插人一段补丁代码,就可以给刚解压的数据打补丁了。Windows提供了两个用于进程间互访内存的函数ReaadProcessMemory和WriteProcessMemory。补丁:文件补丁(修改文件本身的某个数据)和内存补丁(对正在运行的程序的数据进行修改,以达到某种效果)文件补丁直接修改可执行文件或某功能模块的二进制代码。Debug API机制。原创 2024-05-24 16:09:40 · 243 阅读 · 0 评论 -
【加密与解密(第四版)】第二十一章笔记
21.1 VMProtect逆向分析。21.2 VMProtect的还原。原创 2024-05-24 12:51:32 · 426 阅读 · 0 评论 -
【加密与解密(第四版)】第二十章笔记
例如,80x86汇编指令是在CPU里执行的,而字节码指令系统是通过解释指令执行的(这里谈到的字节码指令执行系统是建立在x86指令系统上的)。Java的JVM、.NET或者其他动态语言的虚拟机都是靠解释字节码来执行的,但因为每个系统设计的字节码都是供自己使用的,不会兼容其他系统,所以它们的字节码并不通用。指令分类:普通指令(算术指令、数据传输指令)、栈指令、流指令(JMP、CALL、RETN)、不可模拟指令(int3、sysenter、in、out)20.2 启动框架和调用约定。原创 2024-05-24 12:36:05 · 392 阅读 · 0 评论 -
【加密与解密(第四版)】第十九章笔记
流程:判断文件是否为PE格式、文件基本数据读入、附加数据的读取、输入表的处理、重定位表的处理、文件的压缩、资源数据的处理、区块的融合。19.3 用C++编写外壳部分。19.3 用汇编写外壳部分。19.1 外壳的结构。19.2 加壳主程序。原创 2024-05-24 12:22:38 · 153 阅读 · 0 评论 -
【加密与解密(第四版)】第十八章笔记
OD检测方法:查找特征码、检测DEGHELP模块、查找窗口、查找进程、SeDebugPrivilege方法、SetUnhandledExceptionFilter方法、EnableWindow方法、BlockInput方法。IsDebuggerPresent()函数读取当前进程PEB中的BeginDebugged标志。调试器漏洞、防止调试器附加、父进程检测、时间差、Trap Flag检测、双进程检测、18.1 由BeginDebugged引发的蝴蝶效应。18.3 真正的奥秘:小技巧一览。原创 2024-05-23 18:36:56 · 314 阅读 · 0 评论 -
【加密与解密(第四版)】第十七章笔记
巧妙构造代码和数据,在指令流中插入很多“数据垃圾",干扰反汇编软件的判断,使它错误地确定指令的起始位置,这类代码数据称为花指令。反汇编算法:线性扫描(无法正确地将代码和数据分开)、递归进行。17.5 关于软件保护的若干忠告。磁盘文件校验(CRC32校验)内存映像校验(校验代码区)17.3 文件完整性校验。17.4 代码与数据结合。17.1 防范算法求逆。17.2 抵御静态分析。原创 2024-05-23 18:19:45 · 397 阅读 · 0 评论 -
【加密与解密(第四版)】第十六章笔记
在某些特殊的 PE 文件中,在各个区块的正式数据之后还有一些数据,这些数据不属于任何区块。因为PE文件被映射到内存中时是按区块映射的,所以这些数据是不能被映射到内存中的。壳的加载过程:保存入口参数、获取壳本身需要使用的API地址、解密原程序各个区块的数据、IAT的初始化、重定位项的处理、HOOK API、跳转到程序原入口点。手动脱壳步骤:查找真正的入口点、抓取内存映像文件、重建PE文件(修复OEP、IAT的RVA和Size)优化输入表存放位置、资源的重建、装配文件、修正PE文件头。确定IAT的地址和大小。原创 2024-05-23 16:32:22 · 539 阅读 · 0 评论 -
【加密与解密(第四版)】第十五章笔记
ASProtect(压缩、加密、反跟踪代码、CRC校验、花指令)、Armadillo(穿山甲)、EXECryptor、Themida。虚拟机引擎(编译器+解释器+虚拟CPU环境+指令系统)15.4 虚拟机保护软件。原创 2024-05-23 14:06:48 · 467 阅读 · 0 评论 -
【加密与解密(第四版)】第十四章笔记
漏洞样本是软件中存在漏洞利用的最直接的证据,一般分为两类:一类是证明软件有漏洞,这类漏洞样本不需要深入展示漏洞利用的过程,一般只需要证明样本可以导致程序崩溃,这类样本叫作PoC(Proof of Concept);另一类是漏洞利用样本,这类样本也称 Exp(Exploit )。Jmp esp/call esp、jmp ebx/call ebx、堆喷射、DEP保护、ROP、ASLR保护。堆溢出、整型溢出(存储溢出、计算溢出、符号问题)UAF(Use-After-Free)漏洞。缓冲区溢出漏洞:栈溢出。原创 2024-05-23 13:20:08 · 409 阅读 · 0 评论 -
【加密与解密(第四版)】第十三章笔记
Address Hook:IAT、EAT、user32.dll的回调函数表、IDT(中断描述符表)、SSDT(系统服务描述符表)、C++类的虚函数表、COM接口的功能函数表、处理例程地址、特殊寄存器中的地址、特定的函数指针。Inline Hook 的实施过程:确定 Hook方式及需要在Trampoline 中执行的指令、准备TrampolineFun函数、准备jmp指令并写入、CALLL HOOK。指针的定义与操作、内存地址对齐、PE格式、调用约定的变化、跳转指令的问题、PatchGuard问题。原创 2024-05-23 12:47:42 · 533 阅读 · 0 评论 -
【加密与解密(第四版)】第十二章笔记
在通常情况下,程序加载 DLL的时机主要有以下3个:一是在进程创建阶段加载输入表中的DLL,即俗称的“静态输人”;因此,在进行 DLL注人时,也不外乎通过这3种手段进行。静态修改PE输入表法、进程创建期修改PE输入表法(以挂起方式创建目标进程、获取目标进程中的PE结构信息、获取原IID大小,增加一项,搜索可用的节空隙、构造新的IID及与其相关的OriginalFirstThunk,Name,FirstThunk结构、修正PE映像头、更新目标进程的内存、继续运行主进程)、输入表项DLL替换法(DLL劫持)原创 2024-05-22 16:24:35 · 481 阅读 · 0 评论 -
【加密与解密(第四版)】第十一章笔记
检查文件格式、读取FileHeader和OptionalHeader的内容、得到数据目录表的信息、区块表信息、输出表信息、输入表信息。11.1-4 PE的基本概念、MS-DOS头部、PE文件头、区块。PE文件衍生于早期建立在VAX/VMS上的COFF文件格式。64位的IMAGE_NT_GEADER和32位的几乎没有区别。11.10 TLS初始化。11.12 延迟载入数据。11.13 程序异常数据。11.14 .NET头部。RVA和FOA的转换。11.8 基址重定位。11.11 调试目录。原创 2024-05-22 15:18:01 · 220 阅读 · 0 评论 -
【加密与解密(第四版)】第十章笔记
10.1 硬件虚拟化的基本概念。10.2 VT技术的应用。10.3 VT调试方法。原创 2024-05-22 12:04:38 · 392 阅读 · 0 评论 -
【加密与解密(第四版)】第九章笔记
在通过 CreateProcess 创建进程时,如果在 dwCreationFlags 标志字段中设置了DEBUG _PROCESS 或DEBUG_ONLY_THIS_PROCESS标志,将创建一个用于调试的新进程。利用 DebugActiveProcess 函数可以将调试器捆绑到一个正在运行的进程上,如果执行成功,则效果类似于利用 DEBUG_ONLY_THIS_PROCESS 标志创建的新进程。9.1 调试相关函数的简要说明。9.3 创建并跟踪进程。9.7 将代码注入进程。9.5 处理调试事件。原创 2024-05-22 11:52:28 · 235 阅读 · 0 评论 -
【加密与解密(第四版)】第八章笔记
SEH(结构化异常处理)是 Windows 操作系统用于自身除错的一种机制,也是开发人员处理程序错误或异常的强有力的武器。从程序设计的角度来说,就是系统在终结程序之前给程序提供的一个执行其预先设定的回调函数的机会。IDT(中断描述符表)是硬件和操作系统交接中断和异常的关口,IDT是一张位于物理内存中的线性表,共有256项。IDTR寄存器共有48位,其中高32位是表的基址,低 16 位是表的长度。IDT的每一项都是一个门结构,它是发生中断或异常时 CPU转移控制权的必经之路,包括如下3 种门描述符。原创 2024-05-22 11:38:20 · 511 阅读 · 0 评论 -
【加密与解密(第四版)】第七章笔记
ntdll.dll 中的 API是一个简单的包装函数,当 kemel32.dll 中的 API通过 ntdl.dll 时,会先完成对参数的检查,再调用一个中断(int 2Eh或者 SysEnter指令),从而实现从R3层进人R0层,并将要调用的服务号(也就是 SSDT 数组中的索引号 index值)存放到寄存器 EAX中,最后根据存放在EAX中的索引值在 SSDT数组中调用指定的服务(Nt*系列函数 )应用层的进程、线程、文件、驱动模块、事件、信号量等对象或者打开的句柄在内核中都有与之对应的内核对象。原创 2024-05-22 10:36:56 · 1138 阅读 · 0 评论 -
【加密与解密(第四版)】第六章笔记
第一,从算法上可以考虑使用不常见的密码学算法。第二,使用密码学算法时,尽量采用自己的算法实现。如果使用已公开的密码学算法库,则要去掉一些敏感的字符串,让破解者在分析时找不到特征,识别不出是哪个算法库。第三,要有自定义的算法。因为大多数开发人员不具备专业的密码学知识,所以不要求这些自定义算法达到密码学算法那么复杂的程度。一方面,这些计算的汇编或底层语言实现比较复杂,经过编译器的编译,生成的汇编代码或字节码等都较难分析;在使用开源的密码学算法库时,去掉对攻击者有用的信息提示时常关注密码学算法的最新进展。原创 2024-05-21 14:17:01 · 516 阅读 · 0 评论 -
【加密与解密(第四版)】第五章笔记
显示窗口的常用函数有MessageBoxA(W)、MessageBoxExA(W),DialogBoxParamA(W),ShowWindow、CreateWindowExA(W)等。相关函数:GetDriveType()、GetLogicalDrives()、GetLogicalDriveDtrings()、GetFileAttributes()相关函数:setTimer()函数、timeSetEvent()函数、FetTickCount()函数、timeGetTime()函数。利用字符串提示信息。原创 2024-05-21 13:54:13 · 245 阅读 · 0 评论 -
【加密与解密(第四版)】第四章笔记
x64系统通用寄存器的名称,第1个字母从“E”改为“R”(例如“RAX”),大小扩展到 64 位,数量增加了8个(R8~R15),扩充了8个128位XMM寄存器(在64位程序中,XMM寄存器经常被用来优化代码)。64位寄存器与x86下的32位寄存器兼容,例如RAX(64位)EAX(低32)、AX(低16位)、AL(低8位)和AH(8~15位)。x64新扩展的寄存器高低位访问,使用WORD、BYTE、DWORD后级,例如R8(64位)R8D(低32位)、R8W(低16位)和R8B(低8位)。原创 2024-05-21 13:23:22 · 829 阅读 · 0 评论 -
【加密与解密(第四版)】第三章笔记
随后,IDA会创建一个数据库,其组件分别保存在扩展名为 .id0、id1、.nam和.i的4个文件里,这些文件的格式为IDA专用,在关闭当前项目时,这4个文件将被存档为一个 IDB 文件。解码能力:Capstone>BeaEngine>Udis86(Udis86不支持寄存器分析,其他解码能力相近)。反汇编引擎:ODDisasm、BeaEngine、Udis86、Capstone。汇编引擎:ODAssembler、Keystone、AsmJit。可以以数组形式显示、创建结构体、枚举类型原创 2024-05-21 12:03:26 · 1302 阅读 · 0 评论 -
【加密与解密(第四版)】第二章笔记
OD两种方式加载目标程序,方式一:通过CreateProcess创建进程;方式二:利用DebugActiveProcess函数将调试器捆绑到一个正在运行的进程上。优点:不会修改原始机器码,不容易被检测。缺点:会降低OD的执行速度,只能设置一个。INT3断点可以在程序启动之前设置,消息断点只有在窗口被创建之后才能被设置并拦截消息。“F2”快捷键设置,断点处内容被替换成“CC”。优点:可以设置无数个;优点:不会修改原始机器码,不容易被检测。除了具有条件断点的作用,还能记录断点处函数表达式或参数的值。原创 2024-05-21 09:47:49 · 393 阅读 · 0 评论 -
【加密与解密(第四版)】第一章笔记
【加密与解密(第四版)】第一章原创 2022-03-01 20:40:22 · 6704 阅读 · 3 评论