摘要:
关于Lab 教材 "恶意代码分析实战" 课后练习恶意代码样本 "https://practicalmalwareanalysis.com" 或 "https://nostarch.com/malware.htm" 以下是我自己做课后Lab的时候,一些零散笔记。详细答案可以参考教材附录C Lab 1 阅读全文
摘要:
内核代码中分别找出一处 proc 和 seq_file 的完整使用过程,记录下来 在用户空间进行相应“读”、“写” 介绍 Proc 虚拟文件系统 操作 proc 文件: /proc 文件系统是一个 虚拟文件系统 (没有任何一部分与磁盘相关,只存在内存中,不占用外存空间),包含了一些目录和虚拟文件 通 阅读全文
摘要:
实验环境 Ubuntu 14.04.5 LTS Linux 4.15.6 为单个文件进程补丁操作 1. 在桌面 建立文件夹 ,作为实验用,然后进入 文件夹。建立测试文件 、 。 我们的目标:给 打补丁 ,使 与 内容一致: 注:使用 创建补丁 ;源文件 ;目标文件 ;因为单个文件,所以不需要 选项。 阅读全文
摘要:
为了完成在栈区植入代码并执行,我们在上节的密码验证程序的基础上稍加修改,使用如下的实验代码。 这段代码在 2.3 节溢出代码的基础上修改了 3 处。 1. 增加了头文件 windows.h,以便程序能够顺利调用 LoadLibrary 函数去装载 user32.dll。 2. verify_pass 阅读全文
摘要:
2.3.1 返回地址与程序流程 1. 上节实验介绍的改写邻接变量的方法是很有用的,但这种漏洞利用对代码环境的要求相对比较苛刻。更通用、更强大的攻击通过缓冲区溢出改写的目标往往不是某一个变量,而是瞄准栈帧最下方的 EBP 和函数返回地址等栈帧状态值。 回顾上节实验中输入 7 个‘q’程序正常运行时的栈 阅读全文
摘要:
0_day 第一章 基础知识 1.4 Crack小实验 《0day_2th》王清 著 电子书 下载链接:https://pan.baidu.com/s/11TgibQSC3 kYwCInmH8wwg 密码:ve75 实验环境 实验流程 1. 首先打开IDA,并把由VC 6.0得到的.exe文件直接拖 阅读全文
摘要:
2.2.2 突破密码验证程序 实验环境 同 "1.4 Crack小实验" 实验流程 1. 在vc6.0中编写test.c文件编译运行 运行结果: 2. 用OllyDbg打开test.exe文件 3. 假如我们输入的密码为 7 个英文字母“q”,按照字符串的序关系“qqqqqqq” “1234567” 阅读全文
摘要:
引言 11.1 ZF标志 11.2 PF标志 11.3 SF标志 11.4 CF标志 无符号整数(unsigned integer)溢出时,CF 位置1。 11.5 OF标志 有符号整数(signed integer)溢出时,OF 位置1。此外,MSB(Most Significant Bit,最高 阅读全文
摘要:
引言 8086CPU的转移指令分为以下几类: 无条件转移指令(如:jmp) 条件转移指令 循环指令(如:loop) 过程(函数的调用过程) 中断 9.1 操作符 offset 9.2 jmp 指令 9.3 依据位移进行转移的 jmp 指令 9.4 转移的目的地址在指令中的 jmp 指令 9.5 转移 阅读全文
摘要:
引言 想想程序之间的加载返回过程。 call 和 ret 指令都是转移指令,它们都修改 IP,或同时修改 CS 和 IP。 call 和 ret 经常被共同用来实现自程序的设计。 这一章,我们讲解 call 和 ret 指令的原理。 10.1 ret 和 retf 10.2 call 指令 10.3 阅读全文
摘要:
引言 本章对前面的所有内容是具有总结性的。我们知道,计算机是进行数据处理、运算的机器,那么有两个基本的问题就包含在其中: 1. 处理的数据在什么地方? 2. 要处理的数据有多长? 这两个问题,在机器指令中必需给以明确或隐含的说明,否则计算机就无法工作。本章中,我们就要针对8086CPU对这两个基本问 阅读全文
摘要:
引言 前面,我们用 [0] 、[bx] 的方法,在访问内存的指令中,定位内存单元的地址。这一章中,我们主要讲解一些更灵活的定位内存地址的方法和相关的编程方法。 我们的讲解将通过具体的问题来进行。 7.1 and 和 or 指令 7.2 关于ASCII码 7.3 以字符形式给出的数据 7.4 大小写转 阅读全文
摘要:
6.1 在代码段中使用数据 对于使用多个段的问题,我们先简单说到这里,下面我们将以这样的顺序来深入地讨论多个段的问题: 1. 在一个段中存放数据、代码、栈,我们先来体会一下不使用多个段时的情况; 2. 将数据、代码、栈放入不同的段中。 6.2 在代码段中使用栈 6.3 在数据、代码、栈放入不同的段 阅读全文
摘要:
5.1 [bx] [bx]是什么 和 [0] 有些类似,[0] 表示内存单元,它的偏移地址是 0。 例如: 内存以字节为单位;ax以字(16bit = 2Byte)为单位;al以字节为单位。所以, 解读为把偏移地址为 0 的内存单元处的一个字对应的内容复制到 ax 寄存器中。 解读为把偏移地址为 0 阅读全文
摘要:
引言 在第2章中,我们主要从CPU如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。 这一章中,我们从访问内存的角度继续学习几个寄存器。 3.1 内存中字的存储 3.2 DS 和 [address] mov指令可完成三种传送功能: 1. 将数据直接送入寄 阅读全文
摘要:
引言 现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成可执行文件(如: .exe文件),在操作系统中运行。 这一章,我们将编写第一个这样的程序。 4.1 一个源程序从写出到执行的过程 一个汇编语言程序从写出到最终执行的简要过程: 1. 编写 使用文本编辑器(如:记事本、NotePad++、 阅读全文
摘要:
导引 "零基础入门学习汇编语言 作者:小甲鱼" "小甲鱼汇编视频+配套教材:王爽汇编第三版pdf+答案" 推荐教材 "汇编语言" 第一章 基础知识 1.1 机器语言 机器语言是机器指令的集合。 机器指令展开讲就是一台机器可以正确执行的命令。 指令:01010000 (PUSH AX) 1.2 汇编语 阅读全文