|
样本脱壳
OD加载样本explorer.exe,对GetModuleHandleA下断,参数为NULL时即为入口点处对此函数的调用,退出CALL之后可以得到入口为 004016ED。
重新加载样本,对004016ED下内存写入断点,中断后StepOver一步,然后在004016ED下断点,F9运行到入口,DUMP。DUMP之后不关闭OD,让样本处于挂起状态,使用ImportREC修复DUMP出来的文件的导入表。
修复之后DUMP出来的文件用OD加载出错,使用PEDITOR的rebuilder功能重建PE之后即可用OD加载,说明脱壳基本成功,但资源部分仍有问题,无法用Reshacker查看
pcihdd.sys的提取 OD加载样本explorer.exe,设置有新模块加载时中断,F9运行 当ADVAPI32.DLL加载时,对CreateServiceA下断点,F9运行 当CreateServiceA中断时,即可提取出pcihdd.sys
pcihdd.sys基本流程如下
1)检查IDT的09(NPX Segment Overrun)和0E(Page Fault )处理程序的地址,如果09号中断处理程序存在,并且处理程序地址的高8位与0E处理程序高8位不同,则把IDT中0E的高16位设为0。估计是检查0E是不是被HOOK了,我比较龌龊,看不懂这些操作的意思,这样不BSOD?请懂的兄弟跟帖告诉一声
2)通过搜索地址来查找自己的加载地址,查找驱动文件的资源中的1000/1000,并复制到一个全局缓冲区中。
3)创建了\Device\PhysicalHardDisk0及其符号连接\DosDevices\PhysicalHardDisk0
4)只对IRP_MJ_CREATE IRP_MJ_CLOSE IRP_MJ_DEVICE_CONTROL 作出响应
其中IRP_MJ_CREATE中会断开\Device\Harddisk0\DR0上附加的设备。这个操作会使磁盘过滤驱动、文件系统驱动(OS提供的,但一些杀毒软件也通过此渠道进行文件系统监控)及其上的文件系统过滤驱动(大多数文件访问控制和监控都是这个层次的)无效(参见http://blog.csdn.net/joshua_yu/archive/2006/02/04/591636.aspx)
在IRP_MJ_CLOSE 中对恢复DR0上的附加在IRP_MJ_DEVICE_CONTROL中对0xF0003C04作出响应,只是把2)中找到的资源数据解密后返回到应用程序。
解密密钥是通过应用程序传入的一个串(密钥种子?)查表后产生(KEY:0x3f702d98)
[1] [2] 下一页 |