
命名约定: 当Microsoft更新功能时,新旧版本不兼容时,Microsoft仍将支持旧版本,新旧名称相同,并且后缀被附加在后面,功能已进行了两次重大更新,然后名称后面有两个前缀
许多以字符串为参数的函数,名称将包含A或W,例如createdirectoryW恶意代码,A / W未反映在文档中,仅表示该函数具有两个不同的版本,A表示输入parameters类型为ascii字符串,W表示输入参数为宽字符串
Dll文件本身实现了一些导出功能,并且由EXE可执行文件使用,因此导出功能是dll文件中最常见的
PE文件头和子节: .text节包含CPU执行的指令. 所有其他部分存储数据和支持信息. 这是唯一的可执行部分,也应该是唯一包含代码的部分
The
.rdata节通常包含导入和导出功能信息. 此部分还可以存储程序使用的其他只读数据

The
.data字节包含程序的全局数据. 可以从程序中的任何位置访问,本地数据不存储在此部分中. 这是其他文件上的PE文件.
The
.rsrc节包含可执行文件使用的资源. 这些内容不可执行
在Windows平台上的可执行pe文件中的部分:
.text包含可执行代码

.rdata在程序中包含可全局访问的只读数据
.data存储可以在程序中访问的全局数据
.idata有时会显示并存储导入的功能信息,如果此部分不存在,则导入的功能信息将存储在rdata中
.edata导出
.pdata仅存在于64位可执行文件中,并存储异常处理信息
.rsrc存储可执行文件所需的资源

.reloc包含用于重定位库文件的信息
恶意代码通常将嵌入式程序或驱动程序放在资源部分,并在程序运行之前提取嵌入式可执行文件或驱动程序
某些恶意代码必须在网络通信期间更改字节顺序,因为网络数据使用大端字节顺序,而x86程序使用小端字节顺序
操作数指示指令使用三种类型的数据:
立即数是一个固定值
寄存器(寄存器)操作数指向寄存器

内存地址(内存地址)操作数指向感兴趣的值所在的内存地址
寄存器是CPU可以使用的少量数据存储器. x86处理器中有一组寄存器,可用于临时存储或用作工作区. 最常用的x86寄存器分为三类: 通用寄存器(在CPU执行期间使用),段寄存器(用于定位内存部分),状态标志(用于决策),指令指针(用于定位内存). 下一条要执行的指令)
在拆卸时,我经常看到xor指令,例如xoreax,eax是一种将EAX寄存器设置为0的方法.
Shift通常用于优化乘法运算
在分析恶意代码时,如果在函数中遇到诸如xor或shl,ror,shr,rol的指令,并且该指令随机且反复出现,则可能是您遇到了加密或压缩功能
Nop指令是xchg eax eax的伪名称. 该指令的操作码为0x90. 在缓冲区溢出攻击中,可以使用nop滑板填充代码以减少shellcode可能在中间部分开始执行的风险
函数的内存,局部变量和流控制结构存储在堆栈中. x86体系结构支持堆栈构建. 用于此支持的寄存器包括esp和ebp. Esp是堆栈指针,其中包含指向堆栈顶部的内存地址,而ebp是堆栈基地址寄存器,在函数中将保持不变,因此程序将使用它作为定位器来确定堆栈的位置. 局部变量和参数.
与堆栈有关的指令包括推入,弹出,调用,离开,进入和rct. 在内存中,堆栈是自上而下分配的恶意代码,其中最高的地址首先使用.
堆栈只能用于短期存储,通常用于保存局部变量,参数和返回地址. 它的主要用户是管理函数调用之间的数据交换
许多函数都包含一个序言,序言是函数开头的几行代码,用于保存函数中使用的堆栈和寄存器. 相应地,函数结尾的结尾将堆栈和这些寄存器恢复到调用前的状态.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-244780-1.html
人均GDP和收入看起来你好富啊
有道理
台湾若敢竖起台独旗帜