【文章标题】: 91手机助手附带驱动分析
【文章作者】: Root
【作者邮箱】: cppcoffee@gmail.com
【下载地址】: 附件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  最近由于项目需要,要得到IPhone的通信协议.看到了91手机助手可以跟IPhone进行通信,得出的结果...还是和大众一样,调用APPLE提供的DLL,没办法,只能继续整理IPhone协议的思路了.
  看到91手机助手上面有个驱动,利用礼拜天休息的时间看看有啥奥秘,嘿嘿.也是为了增加实战经验值:)
  分析如下:
  驱动刚开始注册一个程序通知例程 PsSetCreateProcessNotifyRoutine,检测外部是否有 EVENT 事件传输.如果有,则将刚创建的进程名字保存到全局缓冲区中.并将外部的 EVENT 设置有信号状态.等着 R3 应用层来采用 IRP_MJ_DEVICE_CONTROL 读取.
  获取 PED 的进程名偏移.保存到全局的变量中.后面将使用到这个偏移值.
  接着 HOOK ZwCreateFile 并设置全局的 HOOK 是否成功的 BOOLEAN 标志(这里的标志位也可用 R3 来进行读取).
  在自己的 ZwCreateFile 中检测是否有 iTunes.exe 进程访问 Temporary Files 目录的 Firmware\\ 路径,如果访问了,则设置另外一个事件.并等待用户处理结束.
  在 IRP_MJ_DEVICE_CONTROL 传递了两个 EVENT 进来,一个是用来刚创建进程的时候,保存进程名字后而通知 R3 用的.
  最后要说的是,虽然是CHECK编译的驱动,未曾使用的变量有些多.也许是因为作者没注意到吧.
  不足之处,请大家多多指教 :)
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2011年03月12日 23:46:24

上传的附件 91Assistant.rar