【文章标题】: 菜鸟的第一次驱动逆向(申请邀请码)
【文章作者】: 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

上传的附件 源驱动文件和逆向源码.rar