【文章标题】: 菜鸟的第一次驱动逆向(申请邀请码) 【文章作者】: Root 【作者邮箱】: cppcoffee@gmail.com 【作者QQ号】: 850128000 【下载地址】: 自己搜索下载 【编写语言】: VC9 【使用工具】: IDA 【操作平台】: Windows 【软件介绍】: 国内某防火墙的附带驱动 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 【详细过程】 首先废话下,感谢KOMA大哥的一直鼓励,感谢megadeath前辈的教导,他让我明白了许多东西,无论是技术还是别的方面的。谢谢你们的陪伴。 嘿嘿,IDA初学,由于鄙人菜鸟无知,可能会有很多错误,还望各位高手多多指教。 最近由于兴趣原因在写个人防火墙,对国内某防火墙很向往,就找了个时间将它的附加驱动反汇编下,顺便学习下IDA的操作。 注释并反成C,终于明白这个附加驱动的作用啦: 在DriverEntry中查找未文档化的EPROCESS结构体保存的进程名称的偏移位置,并记录这个名字位置的偏移量。 然后利用Hook ZwOpenProcess检测R3程序是否被调试,将偏移量的父进程的进程名称保存到缓冲区中,等待下次R3程序读取使用。 不过发现这个驱动有两处毛病: 1、对IRP_MJ_DEVICE_CONTROL的参数没进行检测,很可能被传递恶意的缓冲区或者NULL指针,将导致系统蓝屏。 2、MyZwOpenProcess中的RtlUnicodeStringToAnsiString,第三个参数为TRUE,在此处分配了缓冲区,并没有被释放。 嘿嘿,谢谢你们花时间看到这行文字。 -------------------------------------------------------------------------------- 【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢! 2010年11月27日 14:31:29
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课