请教下各位,IRP发送数据结构到驱动出了点问题
R3:struct data{
char *ch;
char *ch2;
char *ch3;
};
data da={"00","11","22"};
DeviceIoControl(hDriver,TEST_,&da,MAX_PATH -1,0,0,&u,0);R0: case TEST_:
{
KdPrint(("%x",Irp->AssociatedIrp.SystemBuffer));
break;
}打印出个地址,按理应该打印出数据结构的头地址
我用windbg dd 地址 得出的第一个地址应该是 ch吧? 在dd 应该就能看到"00"了吧? 怎么没看到呢 我错了吗 关于“驱动如何与应用层通信”,在我的驱动模板里已经有很详细的范例了:http://www.vbasm.com/thread-3376-1-1.html
剩下只不过是语言转换的问题罢了。 对 就是语言间的事情, 应该把它定为结构指针 然后+4+4+4+4 是吧 很久都没有玩驱动了,有点忘记了,但是基本概念我还是清楚的。。。
因为指针就是一个数字,等于尺子上的数字,只有结合长度,才能表示一段距离(多少Byte的内存)。
另外我个人感觉是你的结构体定义得有问题,命名长度是12字节,怎么到了下面赋值时只有三字节了。。。
请放弃方便的写法,回归最普通的写法。。。 "命名长度是12字节,怎么到了下面复制时只有三字节了。。。"下面复制?不解这意思 565710420 发表于 2011-11-25 18:50 static/image/common/back.gif
"命名长度是12字节,怎么到了下面复制时只有三字节了。。。"下面复制?不解这意思
不好意思,打错字了,原帖已经修正。
【复制】->【赋值】 本帖最后由 565710420 于 2011-11-25 19:29 编辑
Tesla.Angela 发表于 2011-11-25 19:05 static/image/common/back.gif
不好意思,打错字了,原帖已经修正。
【复制】->【赋值】
呵呵,有个小想法,不知你老能否判断下是否可行
NtOpenProcess函数地址被HOOK 也就是SSDT HOOK
方法1:
被HOOK后 再SSDT HOOK转到我的函数 =崩溃
方法2:
Inline hook其HOOK函数崩溃之
我想 我目的是调试其保护程序 干脆写个OD插件 HOOK本进程ntdll的ZwOpenProcess将参数以IRP发送到我的驱动,然后在我驱动里获取系统函数原始地址调用 565710420 发表于 2011-11-25 19:24 static/image/common/back.gif
呵呵,有个小想法,不知你老能否判断下是否可行
NtOpenProcess函数地址被HOOK 也就是SSDT HOOK
对不起,我想我不太明白您的意思。。。 565710420 发表于 2011-11-25 19:24 static/image/common/back.gif
呵呵,有个小想法,不知你老能否判断下是否可行
NtOpenProcess函数地址被HOOK 也就是SSDT HOOK
崩溃原因很多。看你要过保护,可能原因:
1.方法2。可能驱动保护了其hook,你操作即蓝屏。
2.方法1。驱动不可能不让别人SSDT hook。崩溃是因为你没写好。如果加载驱动立马蓝,可能此种。
3.方法1。还有其他反调试手段,非此地一处,崩溃不产生在此处。如果你OD attach上去才蓝,极有可能此种。 ywledoc 发表于 2011-11-27 14:18 static/image/common/back.gif
崩溃原因很多。看你要过保护,可能原因:
1.方法2。可能驱动保护了其hook,你操作即蓝屏。
2.方法1 ...
我指的崩溃是 出错、方法不行、此法行不通
呵呵 我已经解决的差不多了、上次来紫水论坛时 我在过TP、现在又在搞个变态驱动保护 呵呵
谢谢你们的热心 反调试方面我还没分析 他变态我猥琐的绕过SSDT HOOK{:soso_e182:} 565710420 发表于 2011-11-27 16:18 static/image/common/back.gif
反调试方面我还没分析 他变态我猥琐的绕过SSDT HOOK
有驱动还需要看hook的脸色吗?
其实很多hook都无需恢复,直接绕过即可。无论是ssdt hook、inline hook还是eat hook。。。
关于如何绕过hook,如何强制读写进程内存、如何模拟按键模拟鼠标,论坛上应该有不少,找找吧。。。
页:
[1]