• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此
恶意代码分析实战:第六章 识别汇编中的C代码结构

恶意代码分析实战:第六章 识别汇编中的C代码结构

再次强调,分析恶意代码的目标是理解一个程序总体功能,而不是分析每一条指令,不要在细节上陷入困境,将精力集中在程序整体上是如何工作的,而不是它们是如何做每一件特定的事情的。 1 全局与局部变量 全局变量可以被一个程序中任意函数访问和使用。局部变量只能在它被定义的函数中访问。在C中全局变量和局部变量声明方式是相似的,但是在汇编中看起来完全不同。 定义全局变量x与……

汇编语言-堆栈平衡

汇编语言-堆栈平衡

执行test(int p1,int p2) 假设执行函数前堆栈指针ESP为A push p2 ;          参数2入栈,ESP =ESP- 4h —–>ESP = A – 4h push p1 ;          参数1入栈,ESP =ESP- 4h —–>ESP = A &……

IDA系列教程:寄存器与数据类型

IDA系列教程:寄存器与数据类型

0x01 什么是寄存器,它们的用途是什么? 32-bit 寄存器: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI 和 EIP EAX – 累加器寄存器 EBX – 基础寄存器 ECX – 计数器寄存器 EDX – 数据寄存器 ESI – 源指针 EDI –……

IDA系列教程:由软件破解谈windows消息机制

IDA系列教程:由软件破解谈windows消息机制

0x01 背景 在IDA系列教程(一)中附件中有一个可执行程序,在分析这个程序时,部分函数涉及到windows消息机制,恶意代码也会利用windows消息机制来隐藏恶意功能代码。 0x2 基础知识 以下知识选自安全客文章《Windows调试艺术——从真实病毒学习消息机制》一文,本文章尊重原著,纯属学习目的。 Windows是一个消息驱动的系统。Windows……

IDA系列教程:IDA使用方法

IDA系列教程:IDA使用方法

0x01 判断32位还是64位程序来选择不同位数的IDA进行分析 64位程序可以看到“PE..d†”,32位程序可以看到“PE..L“。 0x02 操作 使用 ”空格键“ 来切换图形模式和指令模式 使用”options-debuging options-line prefixes“来对图形化界面指令前添加地址。 使用”view-open subv……

逆向知识点:程序入口点与Main/WinMain函数

逆向知识点:程序入口点与Main/WinMain函数

设有一个Win32下的可执行文件MyApp.exe,这是一个Win32应用程序,符合标准的PE格式。 MyApp.exe的主要执行代码都集中在其源文件MyApp.cpp中,该文件第一个被执行的函数是WinMain。 初学者会认为程序就是首先从这个WinMain函数开始执行,其实不然。   在WinMain函数被执行之前,有一系列复杂的加载动作,还要……

恶意代码分析实战:第一章 静态分析基础技术

恶意代码分析实战:第一章 静态分析基础技术

第一步:反病毒引擎扫描 反病毒引擎主要依靠一个已知恶意代码那可识别片段的特征数据库(病毒文件特征库),以及基于行为与模式匹配的分析(启发式检测)来识别可疑文件。 因为不同的反病毒软件使用了不同的特征库和启发式检测方法,所以对同一个可以恶意代码样本,运行不同反病毒软件进行扫描检测时相当有必要的。 第二步:恶意代码的指纹 哈希时一种唯一标识恶意代码的常用方法。计……

恶意代码分析实战:第零章 恶意代码分析技术入门

恶意代码分析实战:第零章 恶意代码分析技术入门

恶意代码分析的目标 通常是为一起网络入侵事件的响应提供所需的信息。 确定某一个特定的可以二进制程序到底可以做什么 如何在网络上检测它 如何衡量并消除它所带来的危害 因此,需要确定到底发生了什么,并确保能够定位出所受感染的主机和文件。确定了哪些文件需全面分析后,要编写相应的“检测特征码”,以便在网络中检测出恶意代码感染的主机。 基于主机的特征码,或称为感……

加密与解密-PE格式初探

加密与解密-PE格式初探

知识点提炼: 1. PE文件所有代码和数据都被合并在一起,组成一个很大的结构。 2. 文件内容被分割为不同区块,块中包含代码或数据。每个块都有它自己在内存中的一套属性。 3. text:指令代码 , rdata : 运行期的只读数据 , idata : 包含其他外来DLL的函数及数据信息,即输入表。 rsrc : 包含模块全部资源,如图标,菜单,位图等。 4……

核心原理-第4章 IA-32寄存器基本讲解

核心原理-第4章 IA-32寄存器基本讲解

寄存器是CPU内部用来存放数据的一些小型存储区域,与我们常说的RAM(随机寄存器,内存)有些不同。 CPU要访问RAM中的数据时要经过较长的物理路径,花费时间较长,而寄存器集成在CPU的内部,拥有非常高的读写速度。 0x1 基本程序运行寄存器 通用寄存器(32位,8个) 段寄存器(16位,6个) 程序状态与控制寄存器(32位,1个) 指令指针寄存器(32位……

核心原理-第5章 栈

核心原理-第5章 栈

栈通常用于存储局部变量、传递函数参数、保存函数返回地址等。调试程序时需要不断查看栈内存。 0x1 栈内存在进程中的作用 暂时保存函数内的局部变量 调用函数时传递参数 保存函数返回后的地址 0x2 栈的特征 栈是由高地址向低地址扩展的数据结构。 ESP为栈顶指针 栈顶指针初始状态下指向栈底   ……

核心原理-第13章 PE文件格式

核心原理-第13章 PE文件格式

学习PE文件格式的过程中也整理一下有关进程、内存、DLL等内容。 1 PE文件格式 种类 主扩展名 种类 主扩展名 可执行系列 exe,scr 驱动程序系列 sys,vxd 库系列 dll,ocx,cpl,drv 对象文件系列 obj 1.1 基本概念 VA:虚拟地址 模块地址(image Base) 模块地……