三个nop的玄机

2014-2-10 Nie.Meining Debug

最近百度卫士宣传力度挺大,春节在家闲来无事下载了一个看看。第一印象感觉界面简约,功能干净不臃肿,是我喜欢的风格。首先在x86环境下看看hook点:

1.png

跟360、金山卫士、QQ管家等其它主动防御一样,hook点选择了系统调用的分发函数KiSystemServiceRepeat。而且hook方式跟QQ管家很像,将mov edi, esp; cmp esi, xxx; 这两条指令替换成了三个nop和一个jmp,但是他们之间的区别是,QQ管家是先nop再jmp,百度卫士是先jmp再nop。其实这个顺序是有玄机的!(以前逆向过QQ管家,感谢sysnap大牛点拨)

阅读全文>>

评论(547) 浏览(213564)

[转帖]Install Xen 4.3.1 on Ubuntu 12.04 LTS from source

2014-1-24 Nie.Meining Life

原帖地址:http://dcvan24.wordpress.com/2014/01/24/install-xen-4-3-1-on-ubuntu-12-04-lts-from-source/

转帖原因:原网址被墙了,查阅不方便。

正文开始:

-----------------------------------------------------------------------------------------------------------------------------

阅读全文>>

评论(0) 浏览(777)

内核呓语系列6 —— 中断和异常

2014-1-21 Nie.Meining Coding

前面讲了系统调用对于一些不支持快速系统调用的情况,实际上就是通过中断进入内核的。linux是int 80h,windows是int 2eh。然后通过IDT中指定的中断服务例程(例如KiSystemService)进行系统服务分发。

中断和异常,一个主要是异步触发(如硬件I/O中断,当然也不排斥int 2eh这种软件中断),一个主要是同步触发(如除0异常),但由于系统的处理方式是相同的,所以经常被看作是一个东西。通常32及以上的中断号留给了中断,32以下的除了2号是NMI不可屏蔽中断以外,都留给了异常。这一篇不对中断的硬件原理做说明,仅围绕内核相关的东西展开介绍。

首先需要说明的是,对于多核处理器,每个核都有自己的IDT,因此无论是添加新的中断还是做IDT hook都得注意这个问题。此外还需要注意由于中断的优先级很高,不少操作是受限的。这里就涉及到IRQL的问题了。相信很多写驱动的朋友都碰到过IRQL_NOT_LESS_OR_EQUAL蓝屏的问题……

Windows将APIC的中断优先级映射到了自己的一套IRQL中断请求级上。任何时刻CPU都必然处于某个级别:

阅读全文>>

评论(8) 浏览(23296)

[分析引擎开发笔记]监控粒度

2014-1-11 Nie.Meining Life

分析引擎基于硬件模拟器,本身不存在控制权转移的问题,但若是对每个tb都进行全套解析(例如识别当前线程、当前进程等)还是会带来很多不必要的开销。监控粒度是平衡性能和准确度的关键。今天改进了一下,仅在处理线程切换的关键tb中进行全套解析操作,其它时候只处理行为捕获。性能提高了不少。

评论(0) 浏览(1371)

内核呓语系列5 —— 系统调用Hook

2014-1-10 Nie.Meining Coding

上次写了一堆系统调用的相关东西,相信不少研究过rootkit或主动防御的朋友都是从SSDT/ShadowSSDT hook开始的,本篇就针对系统调用监控这方面展开讲讲。

主动防御技术一般通过拦截系统调用实现,在Windows中特别流行,Linux中比较少。除了Windows用户多,需求量大以外,还有一个原因是Linux中做系统调用监控其实不太方便提取上层行为,因为Linux把一切都的当作文件的理念导致你极有可能拦截到一大堆sys_read/sys_write,却很难知道样本究竟在干什么。尤其是一些以linux为内核的其它操作系统,往往在样本行为和系统调用之间还夹了一层虚拟机,例如Android的Dalvik。最初做Android监控时就遇到了这个问题,因此不得不采用了一些特别的手段。截图说明一下:

nhyy5_1.png

阅读全文>>

评论(0) 浏览(42223)

Powered by emlog