|
[求助]应用程序控制驱动的问题
只要驱动正常加载了就行,不一定非得通过服务加载啊~ |
|
|
|
[求助]Sleep函数
Sleep(1)太短了没有意义,Windows又不是实时系统,别指望它能那么精确,这个值起码在200以上才有效果吧~想想CPU时间片切换~~ |
|
[讨论]USB手指如何自動RUN程式
在Vista以后微软好像把这个功能给取消了吧~~ |
|
[原创]乱侃Windows NT内核之内存管理
不错,欢迎继续~ |
|
[原创]磁盘整理相关
很不错啊~~ |
|
[原创]简单对抗某个驱动的反调试
话说我在调试DNF的TesSafe时,没发现intxx处的例程有什么实质用处~ 关键数据的传递都还是通过DeviceIoControl传递的,不过传递的数据是加密的,加解密函数如下: void DecryptOrEntryptBuffer(BYTE *Keys, BOOL bEncrypt, BYTE *bufferToDecrypt, int BufferLen) { ULONG i; if ( BufferLen ) { i = 0; if ( BufferLen ) { bufferToDecrypt = bufferToDecrypt; do { if ( bEncrypt ) bufferToDecrypt[i] ^= i; bufferToDecrypt[i] ^= Keys[i & 7]; if ( !bEncrypt ) bufferToDecrypt[i] ^= i; ++i; } while ( i < BufferLen ); } } } 再贴点其它code: #define IOCTL_GETPROCPATH 0x22E4A0 #define IOCTL_SETTRUSTEDPROCESS 0x22E484 //设置可信程序 #define IOCTL_SETPROTECTEDPROCESS 0x22E488 //设置被保护程序 typedef struct _TRUSTED_PROCESS_INFO{ ULONG u1; ULONG u2; ULONG u3; ULONG u4; ULONG ProcessCnt; //offset=0x10 DWORD ProcessId[33]; //offset=0x14 ULONG Key1; //offset=0x98 ULONG Key2; //offset=0x9C }TRUSTED_PROCESS_INFO,*PTRUSTED_PROCESS_INFO; //size=0xA0 typedef struct _PROTECTED_PROCESS_INFO{ DWORD PidToProtect; //offset=0 DWORD u1; DWORD u2; DWORD u3; ULONG Key1; //offset=0x10 ULONG Key2; //offset=0x14 }PROTECTED_PROCESS_INFO,*PPROTECTED_PROCESS_INFO; /* 设置可信任程序,测试不完全正确 参数说明: InputBuffer :存放Pid InputLen :160 OutputBuffer:NULL OutputLen :0 */ BOOL SetTrustedProcessInfo(HANDLE hDevice) { TRUSTED_PROCESS_INFO ProcessInfo; BOOL bRet; DWORD Pid; ULONG Cnt=0; DWORD byteRetned=0; int i=0; char *szTrustedProcName[]={"smss.exe","csrss.exe","winlogon.exe", "services.exe","svchost.exe","alg.exe","lsass.exe"}; int TotalCnt=7; ZeroMemory(&ProcessInfo,sizeof(TRUSTED_PROCESS_INFO)); //下面获取几个进程的PID用做测试 for (i=0;i<TotalCnt;i++) { Pid=GetProcessIdByName(szTrustedProcName[i]); if (Pid) { printf("%s \t\tPid=%d\n",szTrustedProcName[i],Pid); ProcessInfo.ProcessId[Cnt++]=Pid; } } //开始填充缓冲区 ProcessInfo.u1=5; ProcessInfo.u2=1; ProcessInfo.u3=2; ProcessInfo.u4=0; ProcessInfo.ProcessCnt=Cnt; ProcessInfo.Key1=0x12345678; ProcessInfo.Key2=0x11223344; //对缓冲区进行加密,加密的数据内容当然不包括密钥 DecryptOrEntryptBuffer((BYTE*)&ProcessInfo.Key1,TRUE,(BYTE*)&ProcessInfo,sizeof(TRUSTED_PROCESS_INFO)-sizeof(ULONG)*2); printf("The buffer = 0x%08X\n",&ProcessInfo); bRet=DeviceIoControl(hDevice, IOCTL_SETTRUSTEDPROCESS, &ProcessInfo, sizeof(TRUSTED_PROCESS_INFO), NULL, 0, &byteRetned, NULL); printf("The return value=%d\n",bRet); } |
|
[原创]简单对抗某个驱动的反调试
搞定驱动的反调试只需要改3个字节,还有,那个黑名单是ring3通过DeviceIoControl发过去的~ |
|
[求助]请问如何确定当前驱动运行在哪个阶段?
从当前系统的进线程个数试试看~ |
|
好久不来了,还有人记得我不,嘿嘿
记得,很有深度的一个哥们~ |
|
[求助]如何自定义文件格式
结构体会定义吧?一个道理。。。 |
|
[求助]hook NtDeviceIoControlFile
用Zw*是因为要取服务号啊,先搞清楚Nt*和Zw*的区别再说。。。 |
|
[求助]copy-on-write机制问题
不会就搜索啊。。。 |
|
[求助]请问怎么监控APP跟驱动之间的IO_CONTROL_CODE
在发现IRPTrace这个工具之前我都是自己Hook IopxxControlFile来监控的。。。 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值