能力值:
( LV12,RANK:1010 )
|
-
-
2 楼
[QUOTE=;]...[/QUOTE]
不断学习,不断进步。
比我当年学MFC时写的程序好多了。呵呵
|
能力值:
( LV8,RANK:130 )
|
-
-
3 楼
呵呵
看到LzOpenProcess~~
所以rku的路径显示不出来~
然后。。。枚举模块的你可以改进一下~
楼主加油。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
看看,谢谢分享!
|
能力值:
( LV12,RANK:441 )
|
-
-
5 楼
嗯……都是公开的方法嘛……只是学习学习……
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
有强大的ntdll.h不用,居然用CToolhelp,无语!
|
能力值:
( LV12,RANK:441 )
|
-
-
7 楼
直接用网上找来的Ntdll.h编译它提示错误,囧
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不错。学习。谢谢楼主的开源。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
不错不错 正好给我们这种小菜学习
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
多谢分享
正在看这方面的东西
|
能力值:
( LV6,RANK:90 )
|
-
-
11 楼
BOOL FastScanProcess( SCAN_PROCESS_LIST & process_list )
{
SCAN_PROCESS_MAP process_map;
PBYTE pBuffer = NULL ;
NTSTATUS status;
ULONG dwCurSize = sizeof( SYSTEM_HANDLE_INFORMATION ) + 4;
ULONG dwNeedSize = 0;
ULONG EProcess;
while( TRUE ){
pBuffer = new BYTE[ dwCurSize ];
status = ZwQuerySystemInformation( SystemHandleInformation,
pBuffer,
dwCurSize,
&dwNeedSize );
if( NT_SUCCESS( status ) )
break;
delete[] pBuffer;
if( status != STATUS_INFO_LENGTH_MISMATCH ){
return FALSE;
}
dwCurSize *= 2;
}
if( NT_SUCCESS( status ) ){
PSYSTEM_HANDLE_INFORMATION phi = ( PSYSTEM_HANDLE_INFORMATION )( pBuffer + 4 );
for( ULONG i = 0; i < *(ULONG*)pBuffer; i++ ){
if( phi[i].ObjectTypeNumber == OB_TYPE_PROCESS ){
if( process_map[ (ULONG)phi[i].Object ] == NULL ){
ProcessInfoPtr pi;
pi.CreateInstance();
if( GetProcessInfo( (ULONG)phi[i].Object,pi ) ){
process_map[ (ULONG)phi[i].Object ] = pi;
process_list.push_back( pi );
}
}
}else if( phi[i].ObjectTypeNumber == OB_TYPE_THREAD ){
EProcess = GetEProcessFromThread( (ULONG)phi[i].Object );
if( EProcess ){
if( process_map[ EProcess ] == NULL ){
ProcessInfoPtr pi;
pi.CreateInstance();
if( GetProcessInfo( EProcess,pi ) ){
process_map[ EProcess ] = pi;
process_list.push_back( pi );
}
}
}
}
}
}
delete[] pBuffer;
return TRUE;
}
DWORD WINAPI DeepScanProcess( LPVOID lp )
{
g_bProcessScanning = TRUE;
g_scan_process_list.clear();
ULONG SystemProcess,ProcessType,PebMask;
__try
{
SystemProcess = GetSystemEprocess();
if( SystemProcess == 0 )
__leave;
ProcessType = GetProcessType( SystemProcess );
PebMask = GetPebMask();
ULONG CurrentAddress;
BYTE pBuffer[4096];
for( ULONG WalkAddress = SystemProcess - 0x03000000; WalkAddress < SystemProcess; WalkAddress += 4096 ){
if( ReadSysMemory( (PVOID)WalkAddress,pBuffer,sizeof(pBuffer) ) ){
for( ULONG i = 0; i < 4092; i++ ){
if( ( ( *(ULONG*)&pBuffer[i] ) & 0xFFFF0000 ) == PebMask ){
CurrentAddress = WalkAddress + i - 0x1b0;
if( IsValidProcess( ProcessType, CurrentAddress ) ){
InsertProcessToList( CurrentAddress );
}
}
}
}
}
}
__finally
{
}
InsertProcessToList( SystemProcess );
g_bProcessScanning = FALSE;
return 0;
}
嘿嘿!
|
能力值:
( LV12,RANK:441 )
|
-
-
12 楼
嗯……问下ls,GetSystemEprocess得到的是PID为4的进程的Eprocess吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
在A用户下运行B用户的程序,如何关闭此进程?
就是在A用户下,利用右键中的打开方式-》选择B用户=》输入密码,然后打开程序。
在A用户下,如何用程序关闭此程序的进程?
TerminateProcess不能关闭
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
很不错,谢谢楼主贡献
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
在A用户下运行B用户的程序,不能关闭此进程
|
能力值:
( LV12,RANK:441 )
|
-
-
17 楼
换一个ws的方法……找到窗体以后直接PostMessage如何?
呵呵……开个玩笑而已,可以把Ntdll卸掉,他自己就崩了……
很显然……根据跟踪发现我程序在执行
ZwAssignProcessToJobObject(hJob, hProcess);
出问题了……所以就结束不掉了……
返回的是STATUS_ACCESS_DENIED
好像访问违规了……汗
所以把那个AzKillProc改一下,加一个TerminateProcess(hProcess,0);就可以了……顺便说一下……你不能用TerminateProcess可能是你的句柄权限不够
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
yangjt 再把程序改一下,重传一下
|
能力值:
( LV12,RANK:441 )
|
-
-
19 楼
额……现在不在自己家里啊……没有VC的编译器啊……其实在ZwClose前加一句就可以哒
TerminateProcess(hProcess,0);
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
谢谢。太好了。
|
能力值:
(RANK:10 )
|
-
-
21 楼
yangjt很慷慨。
|
|
|