能力值:
( LV2,RANK:10 )
|
-
-
26 楼
实现方法16:
写一个最小的驱动,在它的driverunload过程中从zwopenprocess偏移1个字节处得到ntopenprocess的索引,
然后从keservicedescriptortable中得到crakeme hook的函数地址,在这个地址的偏移0x7处写上e9 82 00
00 00 使驱动程序不做自己的判断,直接跳到原来的ntopenprocess函数。接着在应用层程序中用
openscmanager,createservice,startservice开始我的驱动,controlservice,deleteservice,
closeservicehandle,closeservicehandle停止它。然后用createtoolhelp32snapshot,process32first,
process32next,openprocess得到crakemeapp的进程句柄,然后terminateprocess关闭它,最后关闭它开启的
驱动,OK了。
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
终于写了一个有点样子的驱动了,呵呵!
实现方法17:
写一个应用层程序,利用getmodulehandle("ntdll.dll"),getprocaddress("ZwOpenProcess"),得到
zwopenprocess的地址,然后从它偏移1个字节处得到ntopenprocess的索引,把它传给一个写好的驱动程序,
在这个驱动程序里,首先取得应用层程序中传来的索引,然后利用这个索引从keservicedescriptortable中
得到crakeme hook的函数地址,从这个地址的偏移0x19b0处查到原来的函数地址,回填。接着在应用层程序
中用createtoolhelp32snapshot,process32first,process32next,openprocess得到crakemeapp的进程句柄,
然后terminateprocess关闭它,最后关闭它开启的驱动,OK了。
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
实现方法18:
写一个最小的驱动,在它的driverunload过程中从zwopenprocess偏移1个字节处得到ntopenprocess的索引,
然后从keservicedescriptortable中得到crakeme hook的函数地址,从这个地址的偏移0x19b0处查到原来的
函数地址,回填。接着在应用层程序中用findwindow,getwindowthreadprocessid得到crackmeapp的id,用
openscmanager,createservice,startservice开始我的驱动,controlservice,deleteservice,
closeservicehandle,closeservicehandle停止它。然后用openprocess得到crakemeapp的进程句柄,然后
terminateprocess关闭它,最后关闭它开启的驱动,OK了。
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
了!慢慢看
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
牛啊!慢慢消化!
|
|
|