能力值:
(RANK:650 )
|
-
-
2 楼
找个你能断在DriverEntry的驱动
找到call 进来的地方, 下断
猜的,没试过
|
能力值:
( LV5,RANK:70 )
|
-
-
3 楼
easy,driver entry就是驱动入口点
打开SI类内核调试工具,把入口点改成int3
|
能力值:
( LV12,RANK:660 )
|
-
-
4 楼
oo小姐说的好像可行,试试看看;
morning,用SI如何将未被加载的driver入口点改为INT 3?
|
能力值:
( LV5,RANK:70 )
|
-
-
5 楼
用PE工具看入口点地址,用UE改
驱动一加载,SI就跳出来了
|
能力值:
( LV12,RANK:660 )
|
-
-
6 楼
最初由 morning 发布 用PE工具看入口点地址,用UE改
驱动一加载,SI就跳出来了
我一开始就是用这种方法,结果用KmdManager加载的时候失败了,是不是要改CRC?
|
能力值:
( LV5,RANK:70 )
|
-
-
7 楼
int3将引起一个异常,如果KmdManager对初始化异常进行了处理,那么驱动异常就不会由系统来处理了
你可以用系统的驱动加载例程来加载驱动,以便系统抛出异常,
记得先开SI,否则就只能看bugcheck画面了
|
能力值:
( LV12,RANK:660 )
|
-
-
8 楼
最初由 morning 发布 int3将引起一个异常,如果KmdManager对初始化异常进行了处理,那么驱动异常就不会由系统来处理了
你可以用系统的驱动加载例程来加载驱动,以便系统抛出异常,
记得先开SI,否则就只能看bugcheck画面了
嗯,有道理,应该是KmdManager处理的异常,使我的Windbg没有机会接管,多谢指教!
|
能力值:
( LV12,RANK:660 )
|
-
-
9 楼
最初由 morning 发布 int3将引起一个异常,如果KmdManager对初始化异常进行了处理,那么驱动异常就不会由系统来处理了
你可以用系统的驱动加载例程来加载驱动,以便系统抛出异常,
记得先开SI,否则就只能看bugcheck画面了
用了几个工具,自己也写了一个来加载,仍然没有被调试器拦到,你是怎样做的?
|
能力值:
( LV8,RANK:130 )
|
-
-
10 楼
SI默认就是i3here drv的(当int3中断的地址大于2g时断下),你试试不要用windbg,装个SI并设置成boot或system启动,断下来后用eb恢复原来的代码,然后g =eip-1就可以了
|
能力值:
( LV12,RANK:370 )
|
-
-
11 楼
直接改入口为int3会使驱动非法的。。。
操作系统加载驱动时会检测pe文件的checksum
所以你应该在修改入口点后更新一下checksum
用softice调试必须要下断点bpint3
用visual softice的话就简单一点,不需要改入口,直接用bpload下断点,就会在驱动程序载入后断在入口了
|
能力值:
( LV12,RANK:770 )
|
-
-
12 楼
xIkUg说的很详细了.
cc断下之后,记的要恢复原来驱动入口的代码.
这样就完美了...
不然蓝屏很难看!
偶通常都是在DriverEntry 设置一个DbgPrint call
然后 si断下.
就断在驱动中.... 然后在bc清理.
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
一直用shooo的方法
楼上的诸位讨论的是不是太老土了
把exe的东西往sys套
|
能力值:
( LV8,RANK:130 )
|
-
-
14 楼
最初由 girl 发布 一直用shooo的方法
楼上的诸位讨论的是不是太老土了
把exe的东西往sys套
这里都是做过驱动开发的,要看清再回帖啊
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
我一般先反汇编一下驱动,找找驱动前面调用的函数,
比如说 PsGetVerion, IoCreateDevice等,
然后就断这些函数了。
牛人可以跟踪一下系统加载驱动的过程,在进入口点的时候设置断点
就更很方便了。
|
能力值:
( LV5,RANK:70 )
|
-
-
16 楼
最初由 girl 发布 一直用shooo的方法
楼上的诸位讨论的是不是太老土了
把exe的东西往sys套 exe和sys本质上是一样的,有牛人曾把exe做成双模式的
我一直都是作USB设备驱动的,也做过文件系统驱动 我调试的时候,因为是配合设备调试的,所以一连上设备,驱动就被加载,马上SI的黑脸就出来了
如果是编写的,最标准的方法是 DbgBreakPoint();
xIkUg的checksum的说法来自哪里呢?我好像没遇到过
|
能力值:
( LV12,RANK:660 )
|
-
-
17 楼
多谢各位的帮忙,改入口为CC,再用PEID的插件搞定改好的SYS的checksum就可以加载了,这时不论你用什么R0调试器都可以拦到,改回代码之后就可以正常调试了,很方便。
|
能力值:
( LV3,RANK:20 )
|
-
-
18 楼
设断在"窥甲",inline hook的那个位置也可以,呵呵
另外如果用蜗牛,可以考虑模块+入口
不过断上一般没有啥用,能静态分析的就静态了
不能的动态估计也不好搞掉反调试:)
|
能力值:
( LV6,RANK:90 )
|
-
-
19 楼
说下我的方法:sys也是一种pe文件.我的做法就是先查看sys的入口rva然后在windbg刚开始的时候使用命令bu sysname+rva的方法下断,你可以试试.不过前提是你要有sys文件,如果没有sys文件.你可以在起sys加载后lm找到内存影象然后在memory窗口找到然后就是一个pe文件了.你找到它的rva再进行重启下断.主要是这段时间我也在分析一个别人的驱动呵呵...
我说的环境是windbg+vmware...兄台可以尝试下.
|
能力值:
( LV6,RANK:90 )
|
-
-
20 楼
比如:
加入有一个驱动名字叫做vsdatant.sys,用pe工具查看到起入口rva是2c8ec那么我在windbg调试连调虚拟机时仅用bu vsdatant+2c8ec命令就可以在此驱动加载的时候断在入口处了...
|
能力值:
( LV12,RANK:660 )
|
-
-
21 楼
嗯,多谢buguty兄弟的建议,不错的方法,用WinDbg的话也可以用bu drivername!DriverEntry,来断在目标驱动入口,不过buguty兄弟的方法更灵活,感谢。
|
能力值:
( LV3,RANK:20 )
|
-
-
22 楼
"用蜗牛,可以考虑模块+入口"晕,怎么不谢谢我啊,呵呵
|
能力值:
( LV12,RANK:660 )
|
-
-
23 楼
最初由 linestyle 发布 "用蜗牛,可以考虑模块+入口"晕,怎么不谢谢我啊,呵呵
呵呵,感谢linestyle... 等...
这下全都有了啊!
|
能力值:
( LV3,RANK:20 )
|
-
-
24 楼
最初由 prince 发布 呵呵,感谢linestyle... 等... 这下全都有了啊!
不必客气,呵呵
顺便说一下vsdatant.sys是za的防火墙驱动,呵呵
|
能力值:
( LV6,RANK:90 )
|
-
-
25 楼
但是如果驱动不是你写的话你就没有调试符号就无法使用vsdatant!DriverEntry.对于没有调试符号的只有用vsdatant+entryrva之类的方法.
|
|
|