|
[求助]在DeviceIoControl中调用一个函数就无法启动该驱动
我下的ntdll的断,eax为c000007a,不知道这个返回值是什么意思,也没这个函数的解释 |
|
[求助]在DeviceIoControl中调用一个函数就无法启动该驱动
我用的InsDrv,没有错误代码提示,就是启动失败。。。不过还是要谢谢你 |
|
[求助]在DeviceIoControl中调用一个函数就无法启动该驱动
代码: case MY_PROTECTPROCESS_CODE: { g_ProcessId = *(ULONG*)in_buffer; UNICODE_STRING ServiceName_OpenProcess = RTL_CONSTANT_STRING(L"ZwOpenProcess"); LONG ServiceId_OpenProcess = GetServiceId(&ServiceName_OpenProcess); if(ServiceId_OpenProcess < 0) { ntStatus = -1; break; } MySSDTHook(ServiceId_OpenProcess, (ULONG)KrNtOpenProcess, TRUE); MyHideProcess(*(ULONG*)in_buffer); ULONG OrgAdress = GetPspTerminateThreadByPointer(); InlineHook(OrgAdress, (ULONG)KrPspTerminateThreadByPointer, 0); //就是这句代码有问题 Irp->IoStatus.Information = 0; ntStatus = STATUS_SUCCESS; break; } 我将MySSDTHook(ServiceId_OpenProcess, (ULONG)KrNtOpenProcess, TRUE); 这句没问题的代码第2个参数改成(ULONG)KrPspTerminateThreadByPointer后也是无法启动,我将InlineHook(OrgAdress, (ULONG)KrPspTerminateThreadByPointer, 0);第2个参数改成(ULONG)KrNtOpenProcess也无法启动,所以都不知道到底是InlineHook函数的问题还是KrTerminateThreadByPointer的问题,但是就算有问题应该也能启动吧?? 然后InlineHook的代码: void NTAPI InlineHook(ULONG OrgAddress, ULONG NewAddress, ULONG HookOffset) //HookOffset是Hook点距离函数头的偏移 { KIRQL irql; KeAcquireSpinLock(&g_MyHookListLock, &irql); if(!g_pInlineHookList) { g_pInlineHookList = (PINLINE_HOOK_LIST)::ExAllocatePool(PagedPool, sizeof(INLINE_HOOK_LIST)); ::RtlZeroMemory((PVOID)g_pInlineHookList, sizeof(INLINE_HOOK_LIST)); g_pInlineHookList->next = g_pInlineHookList; } PINLINE_HOOK_LIST pHookInfo = (PINLINE_HOOK_LIST)::ExAllocatePool(PagedPool, sizeof(INLINE_HOOK_LIST)); ::RtlCopyMemory((PVOID)pHookInfo->OrgCode, (PVOID)(OrgAddress + HookOffset), CODE_LENGTH); pHookInfo->OrgAddress = OrgAddress; pHookInfo->NewAddress = NewAddress; pHookInfo->InlineOffset = HookOffset; //链表为空,即头节点指向自己 if(g_pInlineHookList->next == g_pInlineHookList) { pHookInfo->next = NULL; } else { pHookInfo->next = g_pInlineHookList->next; } g_pInlineHookList->next = pHookInfo; UCHAR bJmpCode[CODE_LENGTH]={ 0xE9, 0, 0, 0, 0 }; PULONG pJmpArg = (PULONG)(bJmpCode+1); ULONG dwCurrentEIP = ULONG(OrgAddress) + 5; *pJmpArg = (ULONG)NewAddress - dwCurrentEIP; __asm {//去掉内存保护 cli mov eax,cr0 and eax,not 10000h mov cr0,eax } ::RtlCopyMemory((PVOID)(OrgAddress + HookOffset), bJmpCode, CODE_LENGTH); __asm { //恢复内存保护 mov eax,cr0 or eax,10000h mov cr0,eax sti } KeReleaseSpinLock(&g_MyHookListLock, irql); } 而且就算我把该函数体全部注释掉也没用,也是启动失败,而且只要那个调用存在,生成的sys会大1k左右 出了这样的问题实在很无奈。。。。。 |
|
[求助]在DeviceIoControl中调用一个函数就无法启动该驱动
哪部分的代码?是自定义函数的还是DeviceIoControl的处理代码? |
|
[求助]在DeviceIoControl中调用一个函数就无法启动该驱动
我在非调试状态和调试状态都不行,所以说太莫名其妙了 |
|
[求助]请教一个CRACKME 再次请教!!!
通过查看调用堆栈,进行回溯定位代码 |
|
|
|
|
|
[讨论]这样的人技术如何?
看你在什么层次做,普通的钩子很容易记录,你要在驱动做就难点,这个东西不同层次不同效果不同难度对吧。楼主学MFC说话不要这么冲,看雪里没多少人不会查联机手册,前面回答你的人里高手多得是,扫雷算法经典,但是你说写扫雷就能写好商业软件,是不现实的。我写出了五子棋的人工智能算法,没有任何源码帮助,但是我没写出任何一个商业软件,这是事实。。 能用心研究是好事,说话不要冲,你给人感觉确实很漂漂然,你既然诚心来问,人家说了你不喜欢听的话你也应当虚心接受,毕竟这样的代码确实技术含量不高,我想前面回答你问题的人都不是为了喷你才回复,大家都是自己的看法,毕竟看雪牛人太多了,这样的项目对他没有任何技术含量 希望楼主虚心接受,没有侮辱你的意思 |
|
[求助]请问如何编写查看文件是否是pe格式文件
直接map进去不更好? |
|
[求助]OD给EXE增加代码,代码加在什么地方?
看当前的节是否足够写入数据,不够就在PE中新开一个节,注意节属性,写入数据,更改一下OEP |
|
|
|
[求助]如何在驱动和特定进程间共享内存?
谢谢各位关注,我已经换了另一种方法了,就是在驱动中分配内存然后映射到用户空间,然后把该地址传递给APP |
|
[求助]事件对象无法设置受信状态
关键是我用的WinDbg在调试啊,WinDbg调试时系统是被挂起的啊,所以根本还没切换到那个等待的线程啊,再者,等待的线程里有个MessageBox,也没见MessageBox出现。。。。。 |
|
[原创]不知这是不是一个有用的东东?
原来你只是想做按键精灵啊。。。。我以为你要刷游戏里的装备啊之类的数据。。。 |
|
[原创]不知这是不是一个有用的东东?
而且还有问题就是,楼主这样构造出来的都只能是一些合法的操作,用户手动就可以完成了,那么写这个程序到底是什么意义呢?? |
|
[原创]不知这是不是一个有用的东东?
问题没有楼主想的这么简单,好的游戏加密过程你不会让你那么容易找到,而且不知楼主考虑了NP之类的问题没??? |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值