首页
社区
课程
招聘
[原创]纪念我的两个第一次
发表于: 2007-10-20 22:49 50594

[原创]纪念我的两个第一次

2007-10-20 22:49
50594
收藏
免费 0
支持
分享
最新回复 (29)
雪    币: 200
活跃值: (10)
能力值: ( 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了。
上传的附件:
2007-11-12 20:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
终于写了一个有点样子的驱动了,呵呵!

实现方法17:
写一个应用层程序,利用getmodulehandle("ntdll.dll"),getprocaddress("ZwOpenProcess"),得到
zwopenprocess的地址,然后从它偏移1个字节处得到ntopenprocess的索引,把它传给一个写好的驱动程序,
在这个驱动程序里,首先取得应用层程序中传来的索引,然后利用这个索引从keservicedescriptortable中
得到crakeme hook的函数地址,从这个地址的偏移0x19b0处查到原来的函数地址,回填。接着在应用层程序
中用createtoolhelp32snapshot,process32first,process32next,openprocess得到crakemeapp的进程句柄,
然后terminateprocess关闭它,最后关闭它开启的驱动,OK了。
上传的附件:
2007-11-16 21:20
0
雪    币: 200
活跃值: (10)
能力值: ( 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了。
上传的附件:
2007-11-16 22:35
0
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
了!慢慢看
2007-12-19 00:32
0
雪    币: 211
活跃值: (350)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
牛啊!慢慢消化!
2008-1-27 17:13
0
游客
登录 | 注册 方可回帖
返回
//