1 知识背景,需要具备基本的C/C++编程功能,能阅读c/++项目工程,了解注入的过程 ,了解基本的安全编程

2 需要的东东 注入的驱动及的程序,以及需要注入的dll

3 相关的工具 windbg win7x64虚拟机 pchunter64.exe procxp.exe

3 问题描述 在win7x64用我们自己的工具生成的程序,启动以后打开,视频,音频,播放时没声音 ,期望是有声音的

4 bug定位,bug 相关的代码主要是两大块,一个是驱动,一个是dll. 驱动在进程创建的时候把dll注入到进程中。首先测试生成不同选项的程序,测试在什么选项下会触发这个bug,最后定位到一个和注入 功能有关,这个注入功能有个flag标记,去掉这个flag在测试,ok . 查找整个解决方案里,那些定位用到了这个宏,排除不相关的,最后定位到一个ShouldOpenProcessBeDenied 函数,这个函数是决定是否拒绝打开这个进程,把日志打开运行,查看日志,大意是 注入 pid 0xXXX c:\windows\system32\audiodg.exd 打开 pid:0xXXX C:\Program Files (x86)\Internet Explorer\iexplorer.exe 失败,渴望权限0x00000040 ,对应PROCESS_DUP_HANDLE , 现在知道大概原因,iexplorer 在保护桌面里,外部的audiodg.exe 要打开iexplorer.exe ,需要一个PROCESS_DUP_HANDLE的权限。而这个权限在被驱动中被移除了

  然后因为有注入OpenProcess NtOpenProcess NtAlpcOpenSenderProcess,需要看一下audiodg 打开ie时候,走了那个分支,返回的错误是多少,重新对ShouldOpenProcessBeDenied函数下断点,运行,中断后查看堆栈,然后看到外层栈有调用openProcess,而且发现这个函数没有被hook,用的是原始的ntdll中的函数。

  现在问题是这个函数为什么没有hook上。

  是注入的问题还是dll的问题(注入后移除了),用procxp 扫描audiodg.exe 看不到模块,接着用pchunter扫描,看到模块都是微软自己的模块,并没有注入的模块。安装公司其他产品,其中有一款看到有注入的dll库。(不好意思,不愿透露公司的东西,略)

  到底哪里有问题,在dll中添加断点,杀掉audiodg.exe,win+r +audiodg.exe,断下来,发现注入后背卸载了。调用了LdrUnloadDll ,上层函数FreeLibary , Hook FreeLibary ,定义个全局变量,检查到调用这个模块的程序若是audiodg.exe ,并且是要卸载的模块是xx.dll的话,返回真。额,没调用。强制结束,看样子这样不行。试试,LdrUnloadDll,重启,还是不行,太多了,都走不动。

  然后把这个dll改成另外一个注入的dll名,重启后,发现注入了。要是当时能反过来测试一下,就更好了,后来反过来测的结果是仍然不能注入。看来驱动注入的时候有问题。 InjectLibary入口处添加代码 若有程序名中包含audiodg.exe ,就中断下载,表示要往这个audiodg.exe 中注入dll库。 注入过程可参考 http://bbs.pediy.com/thread-208082.htm ,总得来说就是在目标进程中申请一块空间,放自定义的NtTestAlert的代码shellcode , 用来hook NTDLL中的NtTestAlert代码,自定义的NtTestAlert 通过自定义函数注入函数调用LdrLoadDll 加载dll.

  代码成功注入后,需要切进程,先通过.process 0 0 ,查找到目标进程的EPROCESS , 然后通过!process /i /p EPROCESS 值,回车后提示按g,运行,在次停在后,加载符号,hook NtTestAlert就可以调试了

  调试到NtLoadDll函数,发现调用失败,返回值0xC0000428 , STATUS_INVALID_IMAGE_HASH  means Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. 好像是数字签名有关系,要关个什么标志,现在还不清楚。

总结:问题总是负责的,一个表面现象像是露出水面的冰山。解决问题应该是有个思维链的,指导你最终找到根本原因,而不是总是去解决表面问题。

  

  

转载于:https://www.cnblogs.com/haovcf/p/6741310.html

我所遇见的bug 系列1 win7在生成的程序里,播放音频时没声音相关推荐

  1. win7 耳塞插入,显示“插头已塞入插孔”。 但,就是以扬声器播放,耳塞没声音

    win7 耳塞插入,显示"插头已塞入插孔". 但,就是以扬声器播放,耳塞没声音.百度一大波设置也没用,一直以为电脑坏了,但身为一个学计算机的大学生,实在不好意思去修.每天带两台电脑 ...

  2. win7计算机管理中设备管理器其他设备pcl感叹号 没声音,Win7设备管理器驱动出现感叹号怎么办?...

    驱动程序是电脑中比较重要的硬件组成部分,如果出现问题,就会影响相应功能的使用,严重可导致电脑瘫痪,如果发现设备管理器中驱动出现黄色感叹号,要及时进行解决,下面我们就看一下Win7设备管理器驱动出现感叹 ...

  3. win7计算机管理中设备管理器其他设备pcl感叹号 没声音,win7系统设备管理器驱动显示黄色感叹号的解决方法...

    今天小编告诉大家如何处理win7系统设备管理器驱动显示黄色感叹号的问题,可能很多用户都不知道怎么处理win7系统设备管理器驱动显示黄色感叹号的问题,但当我们遇到win7系统设备管理器驱动显示黄色感叹号 ...

  4. 每日一皮:当最棒的程序员遇见了 Bug ...

    当最棒的程序员遇见了Bug 就是遇上最配合的Bug 但其实一般角色是反过来的 ...... 往期推荐 每日一皮:两个实习生的结对编程... 每日一皮:给老板演示刚做好的功能... 每日一皮:第一次用C ...

  5. uview Checkbox 复选框勾选,删除某一项遇见的bug,复用导致的问题

    uview Checkbox 复选框勾选,删除某一项遇见的bug 如下图,所示,正常新建了子任务123,1跟3勾选. 紧接着删除子任务2,发现原本子任务3勾选消失了 查看里面保存勾选的值,的的确确有两 ...

  6. 线程模型、pthread 系列函数 和 简单多线程服务器端程序

    一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 "线程实现"建立在&qu ...

  7. 学生专用计算机怎么没声音,win7麦克风没声音怎么设置_电脑麦克风没声音怎么办...

    win7麦克风没声音怎么设置 使用Windows 7一段时间,发现在与别人聊天时麦克风没有声音,在网上也发现不少人遇到这样的情况,其实这个问题并不是什么难题,我们只需对声音的设置进行修改就能重现麦克风 ...

  8. W7程序计算机面板介绍,win7系统隐藏任意程序运行界面的详细步骤

    win7系统使用久了,好多网友反馈说win7系统隐藏任意程序运行界面的问题,非常不方便.有什么办法可以永久解决win7系统隐藏任意程序运行界面的问题,面对win7系统隐藏任意程序运行界面的图文步骤非常 ...

  9. win7为什么没有计算机,教你win7如何快速找出电脑没声音问题所在-win7之家

    在使用电脑的时候总是会遇到各种各样的问题,最近有不少用户发现电脑没声音,音箱和耳机都是没有声音的,这种现象是经常发生的事情,但是导致这种现象的原因也是很多的,如果要一一的排除的话又要浪费会很多时间又不 ...

  10. Win7 如何访问XP系统里的网上邻居?

    Win7 如何访问XP系统里的网上邻居? [ 标签:win7,xp系统 ] 现有两台电脑,一台XP,一台WIN7,共用一个无线路由器(两者都是经无线网络连接路由器).可以从XP里访问WIN7里的共享文 ...

最新文章

  1. [IS-IS] IS-IS路由协议的基本知识及配置
  2. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...
  3. DataTables提示:DataTables warning: table id=queueInfo_table - Requested unknown parameter 'type' for r
  4. SpringBoot 上传多个文件
  5. python server.py_python manage.py runserver报错
  6. JMS和AWS SQS的更多高级内容
  7. CSU 1416 Practical Number
  8. 玩转Git三剑客01:Git基础
  9. ubuntu16.04下编译安装Autoware
  10. paip.提升用户体验---WEB程序页面的手机及平板浏览器兼容支持
  11. FileUpload类中FileUpload1.FileName和FileUpload1.PostedFile.FileName的区别
  12. 施耐德 m340 编程手册_施耐德推出开放自动化平台,开启“软件驱动自动化”时代...
  13. Bugku CTF 抄错的字符 WP
  14. HTML5表单新特征简介与举例
  15. Python3批量修改图片像素
  16. 坚果O1S画面竟然出现折边?对比同价位当贝D3X,坚果O1S值得入手吗?
  17. C# GridView綁定RadioButtonList
  18. node php v2ex,vue2.0写的V2EX社区
  19. 怎样制作非商务的精美的PPT
  20. Discuz!NT高并发解决方案整理

热门文章

  1. Python基础知识day2
  2. 跑三小时的monkey测试该怎么算_Android命令Monkey压力测试,详解
  3. 安卓java模拟器跳过付费,不用花钱买android手机,电脑端Android模拟器安装使用教程...
  4. ChucK初步(7)
  5. 人生如烟花,只要曾经绚烂过,便不枉此生
  6. rtx服务器限制文件传输,rtx 服务器 文件传输 配置
  7. POJ-1436___Horizontally Visible Segments —— 线段树
  8. JavaScript实现简单星星闪烁特效
  9. Unicable技术在卫星接收方案设计中的应用
  10. 七牛云存储使用经历到底怎么样