boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
阅读:1749回复:6

SSDT HOOK的一些想法,希望大牛帮忙看看

楼主#
更多 发布于:2008-07-23 09:55
我HOOK SSDT后,常规的就是获取调用该函数的进程,但是这往往不够
我希望获取调用该函数的具体模块名,我的想法是
1、反向跟踪用户态堆栈-》获取函数调用关系【类似windbg的堆栈功能】
这个比较cool,不知可有哪位兄弟研究过没有?貌似比较复杂啊
2、或者当前进程的调用线程以及线程代码位置,根据该位置查询进程模块空间来定位模块
以上想法不知可行不?我感觉第二种应该简单一点,大牛们给点建议吧
好久没有发帖了
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2008-07-25 16:33
估计是我想法比较难实现???还是大牛们都忙于吃草???hoho
还是期待我自己搞定发源码吧
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2008-07-26 09:20
第一个很难实现,第二个很容易做到~~
不过有些时候CurrentThread是会成为ntdll.dll的~~嘿嘿~~
所以需要更好的方法,就是Attack到进程上面,然后利用寄存器读取法,读出XX。
然后自己读取进程空间的ring3下的那个堆栈,完了说完了——我现在网游的反作弊就这么搞的。
没有战争就没有进步 X3工作组 为您提供最好的军火
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地板#
发布于:2008-07-26 09:25
读取某个寄存器,当然这个寄存器里只有调ntdll.dll的那个地址了,没有ntdll.dll做sysentry的地址。你可以仔细研究下。
没有战争就没有进步 X3工作组 为您提供最好的军火
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2008-07-28 20:30
KeGetCurrent->win32startaddress
然后根据进程模块内存分布情况获取调用模块,不知老V看看可否?下面是windbg输出
Thread:815d2020 Process-815d2660 peb-7ffdf000 ldr-00071e90 modList-00071ea4
01000000:C:\WINNT\system32\notepad.exe
77f80000:C:\WINNT\system32\ntdll.dll
76af0000:C:\WINNT\system32\comdlg32.dll
77c50000:C:\WINNT\system32\SHLWAPI.DLL
77f40000:C:\WINNT\system32\GDI32.DLL
77e60000:C:\WINNT\system32\KERNEL32.DLL
77df0000:C:\WINNT\system32\USER32.DLL
796d0000:C:\WINNT\system32\ADVAPI32.DLL
786f0000:C:\WINNT\system32\RPCRT4.DLL
77b30000:C:\WINNT\system32\COMCTL32.DLL
78f90000:C:\WINNT\system32\SHELL32.DLL
78000000:C:\WINNT\system32\MSVCRT.DLL
777c0000:C:\WINNT\system32\WINSPOOL.DRV
79a90000:C:\WINNT\system32\MPR.DLL
75e00000:C:\WINNT\system32\IMM32.DLL
6dd30000:C:\WINNT\system32\INDICDLL.dll
+:C:\WINNT\system32\notepad.exe
kd> dt !_ethread 815d2020
nt!_ETHREAD

   +0x230 StartAddress     : 0x77e687b3
   +0x234 Win32StartAddress : 0x01006420
->
01000000
01006420  为notepad.exe模块调用


Thread:816ddb40 Process-815e8b40 peb-7ffdf000 ldr-00071e90 modList-00071ea4
00400000:C:\WINNT\Explorer.EXE
77f80000:C:\WINNT\system32\ntdll.dll
796d0000:C:\WINNT\system32\ADVAPI32.DLL
77e60000:C:\WINNT\system32\KERNEL32.DLL
786f0000:C:\WINNT\system32\RPCRT4.DLL
77f40000:C:\WINNT\system32\GDI32.DLL
77df0000:C:\WINNT\system32\USER32.DLL
77c50000:C:\WINNT\system32\SHLWAPI.DLL
77b30000:C:\WINNT\system32\COMCTL32.DLL
75e00000:C:\WINNT\system32\IMM32.DLL
782f0000:C:\WINNT\system32\shim.dll
23000000:C:\WINNT\AppPatch\AcLayers.DLL
78f90000:C:\WINNT\system32\SHELL32.dll
77a30000:C:\WINNT\system32\OLE32.DLL
72c50000:C:\WINNT\system32\CLBCATQ.DLL
77990000:C:\WINNT\system32\OLEAUT32.dll
78000000:C:\WINNT\system32\MSVCRT.dll
77810000:C:\WINNT\system32\cscui.dll
77080000:C:\WINNT\system32\CSCDLL.DLL
795b0000:C:\WINNT\system32\SHDOCVW.DLL
76dd0000:C:\WINNT\system32\browseui.dll
794d0000:C:\WINNT\system32\USERENV.DLL
76f60000:C:\WINNT\system32\ntshrui.dll
773a0000:C:\WINNT\system32\ATL.DLL
75100000:C:\WINNT\system32\NETAPI32.DLL
797b0000:C:\WINNT\system32\SECUR32.DLL
75150000:C:\WINNT\system32\NETRAP.DLL
750e0000:C:\WINNT\system32\SAMLIB.DLL
74fb0000:C:\WINNT\system32\WS2_32.DLL
74fa0000:C:\WINNT\system32\WS2HELP.DLL
77930000:C:\WINNT\system32\WLDAP32.DLL
77960000:C:\WINNT\system32\DNSAPI.DLL
74fd0000:C:\WINNT\system32\WSOCK32.DLL
79a90000:C:\WINNT\system32\MPR.DLL
10000000:C:\WINNT\system32\hgfs1.dll
750f0000:C:\WINNT\System32\ntlanman.dll
751a0000:C:\WINNT\System32\NETUI0.DLL
75160000:C:\WINNT\System32\NETUI1.DLL
76ee0000:C:\WINNT\system32\NETSHELL.dll
76620000:C:\WINNT\system32\webcheck.dll
76670000:C:\WINNT\system32\stobject.dll
766e0000:C:\WINNT\system32\BATMETER.DLL
6d990000:C:\WINNT\system32\SETUPAPI.DLL
76690000:C:\WINNT\system32\POWRPROF.DLL
77530000:C:\WINNT\system32\WINMM.DLL
01120000:C:\WINNT\system32\MSI.DLL
77520000:C:\WINNT\system32\wdmaud.drv
773c0000:C:\WINNT\system32\msacm32.drv
773d0000:C:\WINNT\system32\MSACM32.dll
76230000:C:\WINNT\system32\es.dll
784a0000:C:\WINNT\system32\TxfAux.Dll
6dd30000:C:\WINNT\system32\INDICDLL.dll
76bc0000:C:\WINNT\system32\WININET.DLL
766b0000:C:\WINNT\system32\LINKINFO.DLL
76db0000:C:\WINNT\system32\mydocs.dll
77070000:C:\WINNT\system32\CfgMgr32.dll
+:C:\WINNT\explorer.exe
->C:\WINNT\system32\winspool.drv 60

   +0x230 StartAddress     : 0x77e69824  -》Kernel32线程开始地址
   +0x234 Win32StartAddress : 0x76671949

0x76671949  
0x76670000:C:\WINNT\system32\stobject.dll
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2008-07-29 09:50
如果在VISTA下都可以的话,那一般问题就不大了。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2008-07-29 18:48
老V啊?什么寄存器?
怎么得到当前线程的Win32StartAddress地址啊?不会要硬编码吧?找了下好像有个PsGetContextThread什么的,但是又不导出,其他什么的都要一个HANDLE               ThreadHandle的东西,貌似我只有ETHREAD的地址,用ObFindHandleForObject又不成功,郁闷啊  
游客

返回顶部