能力值:
( LV9,RANK:1210 )
|
-
-
2 楼
以前玩过,供参考:
导入函数是解析ntoskrnl导入表填充,肯定要处理。
至于重定位,保守点可以都定位到原始内核,缺点是有时候仍会到执行旧代码。
老V提到过可根据不同区段处理,“你懂的”,我没懂,汗。
我这么弄的: 若重定位项引用的目的地址所在区段为IMAGE_SCN_CNT_CODE,即认为是
代码,使用重载内核定位,定位到重载内核。如:
PAGE:004F9FE3 68 98 9F 4F 00 push offset PsExitSpecialApc(x,x,x,x,x)
PsExitSpecialApc所在的PAGE区段可执行,用重载内核。
例外:
1) 异常处理函数必须定位到原内核:
XpSP2异常分发代码:
KiDispatchException ->
RtlDispatchException ->
RtlIsValidHandler -> ;检测RegistrationPointer->Handler
RtlLookupFunctionTable ;在PsLoadedModuleList搜索Handler所在模块
Handler在xp下为_except_handler3,若定位到重载内核会导致检测失败,SEH不能正常工作.
2) 个别回调函数要处理下,Win7下MiniPacketCallback可能在驱动卸载后执行,不能定位到重加载内核。
可能还有别的问题,我当时只搞了这些。
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
重定位的话肯定要全部定位到重载内核,否则没了意义。。当然主要SSDT的所有函数,
我是重载了NTOS然后HOOK kifastcallentry 中的某几个字节让call ebx全部call到重载的ntos对应的SSDT函数中,当然我认为只要是NTOS导出的函数应该都是可以这样使用的。。问题是我对ntos导入的3个DLL中的函数不太了解。。我没对那些导入函数做处理,但是基本的SSDT的函数调用没什么问题,也就是说SSDT中的函数没调用那3个DLL中的函数。。。
|
能力值:
( LV8,RANK:120 )
|
-
-
4 楼
哇,难得一见楼上的大侠,小时候就听过大名了
|
能力值:
( LV5,RANK:60 )
|
-
-
5 楼
快爆料。。快爆料。。。
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
再次顶起哈哈
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
马克,同求。
|
|
|