网站首页 > 编程文章 正文
没有一个编写恶意软件的程序员希望一个分析师去分析他们的代码,所以他们会采用一些技巧来阻止这种行为。
Debugger和VMWare一类的虚拟化技术都被恶意软件所针对,因为如果Debugger连接到正在运行中的恶意软件的话,恶意软件可以很方便地被分析。
虽然现在在本文中要描述的内容都不算新颖,但是它们也许能够帮助在这些陷阱之中的你知道怎么一回事。
VMware Tools是一个软件包,用户们可以在他们的VMware虚拟机上安装,以增加其功能——比如允许主机和客户之间的拖放功能,反之亦然。他们的竞争对手Oracle Virtualbox也为他们的虚拟机提供了一个类似的安装包,称之为Virtualbox客户添置。
VMware Tools采用了一种特殊的I / O端口来进行主机和虚拟机之间的数据交流。恶意软件利用了这一功能优势,用少数简短的汇编代码实现。
恶意软件在VMware的I / O端口进行通信,以检索软件版本。
如果这个代码在VMware虚拟机上运行,会执行成功,而把幻数存放到到CPU里的EBX通用寄存器中。一个系统如果是在VMware虚拟机内运行,是十分有效的方式。2.虚拟PC指令
X86指令集中对CPU能理解的指令有数量上的限制,你时常会遇到这样一种情况:你的CPU无法理解一个指令,因此它不能被正确地处理。
灰色文本显示的操作码在Ollydbg中没有得到反汇编程序的认可。
以上的指令是微软Virtual PC的反调试技术的一部分,赛门铁克公司的研究人员曾经记录在案的。这是通过IDA Pro得到的另一个视图,从中我们可以得到我们正在对付一个在正常处理器上非法的Virtual PC指令的线索:
如果目标系统没有运行Virtual PC的话,就会产生异常,并且被恶意软件捕获。但是,如果Virtual PC运行了,就不会有异常生成来说明用户正在使用微软的Virtual PC。
每个CPU有一个本地描述符表寄存器(LDTR), 一个全局描述符表寄存器(GDTR), 一个中断描述符表寄存器. 当一个客操作系统运行时这些必须被移动到不同的位置以避免和主系统的冲突。时常你会看到恶意软件通过汇编指令SLDT,SGDT,SIDT取得这些寄存器的值以侦测这种情况。
恶意软件检测描述符表寄存器的值。
这大概是最易认出的反调试技术,也就是恶意软件扫描自身的进程寻找特定的可能与分析工具有联系的动态链接库(DLLs)。这里被盯上的DLL可以是任何联系到会注入特殊DLL到恶意软件的进程中的调试器或工具(比如沙盒)。
恶意软件检查与Sandboxie和Windbg相关的DLL的存在。
5.产品ID检查
检查寄存器中的Windows产品ID可以提供关于正在运行的系统种类的线索。在过去很多沙盒在它们的操作系统环境中使用了固定的产品ID,你至今有时仍可发现相关的检查。
一个恶意软件样本检查Abubis沙盒的存在。
这只是一些阻止对恶意软件的代 码分析的伎俩。注意这些技巧可以让你的分析过程更高效。
来源:
http://www.05112.com/anquan/wzaq/aqfh/2014/1011/14483.html
- 上一篇: 什么是汇编语言?逆向分析必备语言
- 下一篇: 白盒密码技术(白盒加密)
猜你喜欢
- 2025-05-08 二进制逆向-壳与脱壳入门(二进制逆向是什么)
- 2025-05-08 白盒密码技术(白盒加密)
- 2025-05-08 什么是汇编语言?逆向分析必备语言
- 2025-05-08 逆向基础:软件手动脱壳技术入门(脱壳软件怎么使用)
- 2025-05-08 「逆向分析」快速查找指定代码的几种方法
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)