【windows核心编程】注入DLL时BUG排除与调试

DLL注入排除bug的思路步骤。

  • 1、在VS中监视输入err,hr检查DLL是否注入成功
  • 2、OD断点loadlibraryW,loadlibraryA是否已经注入成功,eax是否有值。
  • 3、检查路径是否是中文+空格的路径
  • 4、检查注入的DLL是否是当前项目的DLL

OD查看DLL注入模块是否成功

1、将运行注入DLL的exe,将DLL注入到exe中。

2、打开OD-附加被注入的exe进程,然后【查找】-【所有模块中的名称】

3、在loadlibrary处F2下断点,如果不确定是A版本或者是W版本,那么loadlibraryA,loadlibraryW都可以进行下断。

4、点C返回反汇编窗口, 按F7使程序运行,可以在OD窗口-堆栈窗口看到DLL注入成功

5、查看EAX的值是否发生变化,如果为0则表示加载不成功。

VS调试远程线程注入的DLL

1、先编译DLL后,在DLL项目中的属性,【命令】改成注入的exe路径,【调试器类型】调理成混合。

2、VS代码处下断点,没有加载运行本地调试时候的断点状态是感叹号。

3、运行DLL注入的EXE,则看到断点已经被激活

路径是中文+空格的路径,使用DIR /X查看长文件名的短名称

在编写windows批处理脚本的时候,有时候文件或目录中的空格会引起问题,下面这个命令可以查看长文件名的短名称。

C:\>dir /x
 驱动器 C 中的卷没有标签。
 卷的序列号是 4C49-DDA8

 C:\ 的目录

2010-01-12  10:28                 3                                  1.bat
2009-06-17  09:42                 0                                  AUTOEXEC.BAT
2010-01-11  08:57            26,624                              Book1.xls
2010-01-11  08:16             8,454   BOOK1~1.XLS  Book1.xlsx
2010-01-11  08:57            26,624                              Book3.xls
2009-06-17  09:42                 0                                  CONFIG.SYS
2010-02-03  16:56                          DOCUME~1     Documents and Settings
2009-12-29  16:56                                                    Drivers
2010-02-20  15:32                          PROGRA~1     Program Files
2010-01-19  17:09                                                    TEMP
2010-02-20  15:33                                                    WINDOWS
               6 个文件         61,705 字节
               5 个目录 21,022,588,928 可用字节


  /X          显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。

参考:
dir /x 查看长文件名的短名称
http://blog.chinaunix.net/uid-20423564-id-1949345.html

posted @ 2017-03-10 10:27  17bdw  阅读(1900)  评论(0编辑  收藏  举报