-
-
[旧帖]
[原创]菜鸟的第一次驱动逆向[邀请码已发]
0.00雪花
-
发表于:
2010-11-27 14:36
3275
-
[旧帖] [原创]菜鸟的第一次驱动逆向[邀请码已发]
0.00雪花
【文章标题】: 菜鸟的第一次驱动逆向(申请邀请码)
【文章作者】: 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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!