首页
社区
课程
招聘
[原创][公开源代码]集合了无数大牛们的代码,打造自己的山寨版IceSword(KsBinSword)
发表于: 2008-12-6 12:36 1175296

[原创][公开源代码]集合了无数大牛们的代码,打造自己的山寨版IceSword(KsBinSword)

2008-12-6 12:36
1175296
收藏
免费 7
支持
分享
最新回复 (840)
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
576
感谢lz:
正在用你的代码(上周下载的)做一个小的监视器自己用,你的代码我用VC6编译了,应用改为 sdk的了(不过还没改完,只取了一两个来注册表,进程),不想用mfc。去掉了换肤(本人对界面不感冒,喜欢简单),驱动用VC6编译时有几个小的问题,忘了在那里了(注意警告),好象有个别变量没付值就用,用VC6编译时就知道了(没有直接用你的工程,我全都是另建工程,改的时候忘了位置了)。应用方面控件可以减少,例如listview只用三个就行,可以增减列实现。扫描进程时第一列图标时有的加上,没有的可不显示图标(自绘图标没意义)。
其它:例如取进程(先用驱动,不行改用其它方法,取消对话框提示)。
我的系统是 xp3,调试确实有过兰屏重启,应当和驱动有关(或应用调用驱动出错)。正在处理驱动,加些出错处理。
注册表监视部分有问题,有应用似乎一直不停的进行,不能取消。拖慢了系统,似乎没放到一个线程里,这部分还没有弄,只是用你的程序。
例如以下代码更改,两个单击似乎简单了,因为相同部分放到了第一个函数中,还有就是改为 ANSI方式编译,因此去掉了 "L"标记(你的代码中很多api加上W,害得我去掉都花了很多时间),改为 _T宏,支持UNICODE编译,下面的函数加上了处理“smss.exe” “csrss.exe” “winlogon.exe” 路径是"\??\c:..."的问题,呵呵,贴出来
//CProcess 就是你的Page1,不好意思,全都改名了
void CProcess::SetProcessToList(TCHAR* cName,DWORD dwID)
{
        TCHAR *pBuffer=0,*lpBuffer,cID[MAX_PATH], cPath[MAX_PATH],*pc[4];
  int i,j,len1,len;
        struct LANGANDCODEPAGE {
                WORD wLanguage;
                WORD wCodePage;
        } *lpTranslate;
        UINT cbTranslateLen,uBytes;

        //hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,ProTem.pid);
        HANDLE hProcess=pCMySystem->My_OpenProcess(PROCESS_ALL_ACCESS,0,dwID,TRUE,(LPDWORD)0);       
        pc[0]=cName;
        D_sprintf(cID,_T("%d"),dwID);
        pc[1]=cID;

        len=GetModuleFileNameEx(hProcess,NULL,cPath,MAX_PATH);
        if(len){
                if(len&&cPath[1]!=':'){
                        TCHAR c[260],*p1=_T("SystemRoot");
                        len1=strlen(p1);
                        memcpy(c,cPath+1,len1);
                        c[len1]=0;
                        if(!lstrcmpi(p1,c)){//smss.exe
                                lstrcpy(c,cPath);
                                GetWindowsDirectory(cPath,MAX_PATH);
                                lstrcat(cPath,c+len1+1);
                        }else{ //csrss.exe winlogon.exe \??\c:
                                for(i=0;i<len;i++){
                                        if(cPath[i+1]==':'){
                                                for(j=0;i<len+1;i++,j++){
                                                        cPath[j]=cPath[i];
                                                }
                                                break;
                                        }
                                }
                        }
                }
                pc[2]=cPath;
        }else
                pc[2]=_T("");
       
        len=GetFileVersionInfoSizeA(cPath,NULL);
        if(len){
                pBuffer=new TCHAR[len+1];
                if(GetFileVersionInfo(cPath,NULL,len,pBuffer)){
                        TCHAR c[MAX_PATH];
                        VerQueryValue(pBuffer,_T("\\VarFileInfo\\Translation"),(LPVOID*)&lpTranslate,&cbTranslateLen);
                        D_sprintf(c,_T("\\StringFileInfo\\%04x%04x\\CompanyName"),
                                      lpTranslate[0].wLanguage,lpTranslate[0].wCodePage);
                        VerQueryValue(pBuffer,c,(LPVOID*)&lpBuffer,&uBytes);
                }
                pc[3]=lpBuffer;
        }else
                pc[3]=_T("");
               
        //进程
        pCList->InsertFileIcon(pCList->hProList,pCList->hProListIcon,cPath);
        pCList->InsertDataToList(pCList->hProList,pCList->hProListColNum,pc,i);
  if(pBuffer)
                delete[]pBuffer;
        CloseHandle(hProcess);
}

//单击,驱动法列举进程事件
void CProcess::GetProcessForDrive()
{
        HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        if(hSnapshot==INVALID_HANDLE_VALUE) return;

        int i;
        DWORD dwOldProtect;
        MODULEENTRY32 mInfo;
        PROCESSENTRY32 pInfo;
        SProcess ProTem;       

        pInfo.dwSize=sizeof(PROCESSENTRY32);
        HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
       
        mInfo.dwSize=sizeof(MODULEENTRY32);
       
        //清空
        DelProcessList();
       
        int ProNum=0,nTryNum=0;       
       
        void* ProN;
        if(pCMySystem->hHandle==(HANDLE)-1){
                //DMsgBox(_T("建立设备链接失败!"));
                GetProcess();
                return;
        }

Again_:
        ProNum=pCMySystem->GetProNum(pCMySystem-> hHandle);
        ProN=(void*)malloc(ProNum*sizeof(SProcess));
        if(!ProN){
                pCMySystem->ClearDeviceIoControl(pCMySystem->hHandle,IOCTL_KSBINSWORD_CLEARPROCESS);
                DMsgBox(_T("内存不足!"));
                return;
        }
        memset(ProN,0,ProNum*sizeof(SProcess));
        VirtualProtect(ProN,ProNum*sizeof(SProcess),PAGE_READWRITE,&dwOldProtect);
        DWORD ErrCode=pCMySystem->GetPro(pCMySystem->hHandle,ProN,(2*ProNum)*sizeof(SProcess));
        if(998==ErrCode){
                nTryNum++;
                if(nTryNum>4){       
                        //DMsgBox(_T("用普通方法列举进程获取正确的进程列表 !"));
                        GetProcess();
                  return;
                }
                Sleep(2000);
    goto Again_;
        }

        for(i=0;i<ProNum-1;i++){               
                ProTem=*((SProcess*)(ProN)+i);
                SetProcessToList((TCHAR*)ProTem.name,ProTem.pid);
        }
        free(ProN);
        //ListView_SortItems(pCList->hProList,(PFNLVCOMPARE)ListStrCmp,(LPARAM)i-1);
}

////单击,普通方法列举进程
void CProcess::GetProcess()
{
        HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        if(hSnapshot==INVALID_HANDLE_VALUE){return;}

        int  i;
        PROCESSENTRY32 pInfo;
        MODULEENTRY32 mInfo;

        pInfo.dwSize=sizeof(PROCESSENTRY32);
        //HINSTANCE hInstance=(HINSTANCE)GetModuleHandle(NULL);
        mInfo.dwSize=sizeof(MODULEENTRY32);
        HANDLE hSnapshotInner;

        //清空
        DelProcessList();

        for(BOOL bRet=Process32First(hSnapshot,&pInfo);bRet;bRet=Process32Next(hSnapshot,&pInfo),i++){
                if(!lstrcmp(pInfo.szExeFile,_T("[System Process]"))||!lstrcmp(pInfo.szExeFile,_T("System"))){
                        //m_ProImageList.Add(hKenny);
                }else{
                        hSnapshotInner=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pInfo.th32ProcessID);
                        Module32First(hSnapshotInner,&mInfo);
                }
                SetProcessToList((TCHAR*)pInfo.szExeFile,pInfo.th32ProcessID);
        }
}
2009-10-23 13:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
577
太强大啊,先收藏起来学习一下,感谢LZ了
2009-10-24 01:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
578
非常非常好。。。。。。。。。。。。。。。
2009-11-4 09:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
579
好帖子。。怎么找不到收藏。。
2009-11-6 08:01
0
雪    币: 69
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
580
呵呵。这也行啊。学习了
2009-11-7 17:58
0
雪    币: 130
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
581
研究一下,顶
正在学习内核编程
2009-11-11 10:27
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
582
支持一下,,,,,,
2009-11-17 12:46
0
雪    币: 71
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
583
佩服楼主!以后研究一番了!
2009-11-22 00:06
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
584
顶 攒!!!!  

对版主无私的开源精神表示崇高的敬意!
2009-12-15 12:14
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
585
支持楼主,看看
2009-12-16 17:23
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
586
支持楼主,再完善下功能,能当反黑工具用了。。。
2009-12-17 15:59
0
雪    币: 236
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
587
很强大,很好
2009-12-20 21:16
0
雪    币: 232
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
588
呃。不错啊。呵呵,收下慢慢研究,感谢分享。
2009-12-24 05:13
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
589
研究中 谢谢 SHARE.
2009-12-25 18:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
590
mark 研究
2009-12-26 15:45
0
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
591
留名,
很不错的源码,
2009-12-26 16:39
0
雪    币: 205
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
592
好东西,赞一个
2009-12-28 01:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
593
我来晚了....
2009-12-29 19:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
594
谢谢共享!!
2009-12-31 15:48
0
雪    币: 94
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
595
支持下。
2009-12-31 18:08
0
雪    币: 204
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
596
赞一下,楼主真慷慨,十分感谢
2010-1-3 11:45
0
雪    币: 1458
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
597
初学者只能看看了
2010-1-3 13:17
0
雪    币: 2548
活跃值: (965)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
598
感谢楼主。。。。。
2010-1-6 18:55
0
雪    币: 101
活跃值: (144)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
599
猛料  做个标志

收下研究
2010-1-23 11:40
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
600
学习一下。谢谢分享
2010-1-24 19:43
0
游客
登录 | 注册 方可回帖
返回
//