|
[求助]将一个进程(或线程)暂停后,如何获取这个进程被暂停的时候的EIP指针(即这个线程在被暂停时执行到的那句指令)以及上下文信息保存的contest结构呢?
打错了,是PsSetThreadContext,http://gr8os.googlecode.com/svn-history/r56/trunk/kernel/inc/ps.h |
|
[求助]将一个进程(或线程)暂停后,如何获取这个进程被暂停的时候的EIP指针(即这个线程在被暂停时执行到的那句指令)以及上下文信息保存的contest结构呢?
PsGetThreadContext,PsSetContextThread啊,CONTEXT结构是公开的,你什么时候能学会搜索啊~ |
|
[讨论]能否让驱动程序主动像应用程序发信息,应用程序收到信息后处理?
科班不科班,专业不专业,就那么重要吗?这里很多人都是业余起家,不要把xx当挡箭牌 |
|
[讨论]能否让驱动程序主动像应用程序发信息,应用程序收到信息后处理?
拜托,我也不是专业程序员啊,工作很忙,每周能抽点时间写写代码都算不错了~ |
|
[讨论]能否让驱动程序主动像应用程序发信息,应用程序收到信息后处理?
http://hi.baidu.com/sudami/blog/item/d07e9413f67133015aaf53de.html 搜索啊搜索~~ |
|
[原创]我的第1000帖,发个ring0的MessageBox,有码~~
后来又扩展了一下,自己实现了KernelLoadLibrary和KernelFreeLibrary(也是callback方式),这样就可以任意加载dll,回调的shellcode也改了一下,支持任意个数的参数,随便调用。不过自己申请低端内存填充参数还是很麻烦唉 |
|
[原创]我的第1000帖,发个ring0的MessageBox,有码~~
是没什么区别啊,我就是看那个bin自己写写源码嘛,说是逆的也行,不叫鬼子,叫老毛子? |
|
[讨论]能否让驱动程序主动像应用程序发信息,应用程序收到信息后处理?
那么多好代码好资料你不看,真是可惜了~~ |
|
[求助]SSDT 和Shadow SSDT
第三个问题,你那样搞的话还麻烦了,不如直接替换每张表的基址,这样不管系统怎么切换都逃不出你的手掌心~~ |
|
[求助]SSDT 和Shadow SSDT
正常情况下,ETHREAD中的ServiceTable,要么指向KeServiceDescriptorTable,要么指向KeServiceDescriptorTableShadow,注意这句话啊 ETHREAD->ServiceTable从来不会直接接向GUI的那张表,而是指向整体的KeServiceDescriptorTableShadow,所以你以前可能理解错了,自己用windbg观察就知道了 系统中既有KeServiceDescriptorTable也有KeServiceDescriptorTableShadow,他们各司其职,非GUI线程使用KeServiceDescriptorTable,GUI线程使用KeServiceDescriptorTableShadow,这是Windows的设计。非GUI线程如果要调用GUI服务就会用PsConvertToGuiThread把ETHREAD->ServiceTable切换为KeServiceDescriptorTableShadow,而GUI线程调用普通的Win32服务时并不需要切换,因为KeServiceDescriptorTableShadow中已经有个这张表,所以KeServiceDescriptorTableShadow可以看成是KeServiceDescriptorTable的增强版 KeServiceDescriptorTable中第二张表之所以无效,是因为非GUI线程根本不需要这张表,所以没有填充 你的第三个问题,描述得还是不太清楚啊。到底你要移动的是哪个?其实不管怎么怎么改,只要合乎系统定下的规则就可以 |
|
[求助]弱弱的问个SSDT HOOK的问题(附带完整源码)
帮你调试了一下,分析如下: f8d7b299 bf20b3d7f8 mov edi,0F8D7B320h //注意这里,并不是KeServiceDescriptorTable,而是导入表中指向KeServiceDescriptorTable的指针 f8d7b29e 8b3f mov edi,dword ptr [edi] f8d7b2a0 8b8744020000 mov eax,dword ptr [edi+244h] f8d7b2a6 a340b3d7f8 mov dword ptr ds:[F8D7B340h],eax f8d7b2ab fa cli f8d7b2ac 0f20c0 mov eax,cr0 f8d7b2af 25fffffeff and eax,0FFFEFFFFh f8d7b2b4 0f22c0 mov cr0,eax f8d7b2b7 c787440200000fb3d7f8 [COLOR="Red"]mov dword ptr [edi+244h],0F8D7B30Fh [/COLOR]ds:0023:805533c4=805533c0 执行到f8d7b2b7 ,此时edi应该指向KiServiceTable才对 kd> r edi //看看edi到底指向什么了? edi=80553180 //此时edi+244h=805533c4,该指针指向的内容为805533c0 kd> u 805533c0 nt!KiTimerTableListHead+0x1c0: //看到了吧,实际指向了这儿,你改错地方了,所以蓝屏 805533c0 c03355 sal byte ptr [ebx],55h 805533c3 80c033 add al,33h 805533c6 55 push ebp 805533c7 80f038 xor al,38h 805533ca 0d82f0380d or eax,0D38F082h 805533cf 82d033 adc al,33h 805533d2 55 push ebp 805533d3 80d033 adc al,33h kd> u edi //看看现在edi到底指向哪儿了? nt!KeServiceDescriptorTable: 80553180 3020 xor byte ptr [eax],ah 80553182 50 push eax 80553183 800000 add byte ptr [eax],0 80553186 0000 add byte ptr [eax],al 此时[edi]才是你真正此时想要的KiServiceTable 所以,你的思路没有错,但是编译器给你开了个玩笑,你代码中的KeServiceDescriptorTable只是个引子,而不是你想要的内容~~ 应该改成这个样子: mov edi,KeServiceDescriptorTable mov edi,[edi] //执行这句后,edi才真正指向KeServiceDescriptorTable mov edi,[edi] //edi指向KiServiceTable mov eax,[edi+(091h*4)] //保存原始值 所以,你还是你学会调试驱动吧~~ |
|
[求助]弱弱的问个SSDT HOOK的问题(附带完整源码)
你还是先学学如何调试驱动和分析dump吧,写驱动经常会碰到蓝屏,自己学学怎么处理怎么分析,不能每次蓝了都去问别人吧? |
|
[求助]想问一下RING3程序如何与过滤驱动通信,严重请大家帮忙解决一下
设备本身不具备判断能力,但是它只会收到应该发给它的IRP,比如你ring3程序的DeviceIoControl只会发给CDO,FiDO则只会收到它所附加的设备上流动的IRP 因为共用的是同一个DispatchRoutine,取IoGetCurrentStackLocation()->DeviceObject,判断一下是不是你的CDO就可以了,若是,提取你的ControlCode然后分别进行处理,若不是,则直接下发给FiDO的下一层设备就可以了,我们不管~~ |
|
[求助]SSDT 和Shadow SSDT
好象一直以来我们所说的ShadowSSDT的概念和系统中的KeServiceDescriptorTableShadow有一点出入,我们所说的专指GUI ServiceTable这个表,而它实际上只是KeServiceDescriptorTableShadow的一部分而已 正常情况下,ETHREAD中的ServiceTable,要么指向KeServiceDescriptorTable,要么指向KeServiceDescriptorTableShadow 答问题一:KeServiceDescriptorTableShadow中其实是四张表(后两张无效),第一张和KeServiceDescriptorTable中的那个是一样的,叫做KiServiceTabe,第二张才是真正的GUI ServiceTable,名字叫W32pServiceTable,所以不论是不是GUI线程,它的ServiceTable其实都包含有KiServiceTable这张表,所以调用win32服务当然是没有问题的,比如调用CreateFile时KiFastCallEntry会根据NtCreateFile的ServiceIndex来判断应该使用哪张表,ServiceIndex大于0x1000则用第二张表 答问题二: 有个函数叫做PsConvertToGuiThread,用来完成你所说的工作~~ NTSTATUS PsConvertToGuiThread( VOID ) /*++ Routine Description: This function converts a thread to a GUI thread. This involves giving the thread a larger variable sized stack, and allocating appropriate w32 thread and process objects. */ 答问题三: 你说的是直接修改ETHREAD->ServiceTable这个字段的值吗?可以修改,在系统调用进入KiFastCallEntry时,会从当前线程的KTHREAD中取出这个表然后使用,如果修改的话,保证你提供的地址是有效的而且包含了正确的系统服务表就可以了,有一篇文章叫做《Hide your SSDT Hooks》,就是这么做的~~ |
|
[求助]注入系统进程如何显示界面
+0x078 DesktopInfo : _UNICODE_STRING "WinSta0\Default" OpenDesktop, Then SwitchDesktop ,just try~~ |
|
[求助]ring0 防止自动重启
那就fuck Drx吧~ |
|
[求助]请问这个驱动的模板 有工具生成吗 文件是 cpp 的
C++也可以写驱动的,当然有些地方要注意 |
|
[求助]奇怪了,应用层打开的文件句柄咋扫描不出来?
驱动下访问别的进程中的句柄也要复制过来或Attach过去,其它是一样的,我的代码工作就很好啊 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值