我现在想做一个程序,目的是能够取得一个进程的唯一标识符(不管在什么操作系统上);
原来的办法是,根据进程取得该文件所在的路径,然后根据文件的PE格式,取得相应的唯一标识符,
可以实现目的.
现在遇到一个问题是, 虽然可以取得相应的文件路径, 可我的这个程序本身可能没有权限去读文件,所以根本没有办法去分析它的PE格式!
不知各位有没有什么好的办法? 如根据内存可以取得唯一标识符,或更改自己权限什么的?
高分等候....
原来的办法是,根据进程取得该文件所在的路径,然后根据文件的PE格式,取得相应的唯一标识符,
可以实现目的.
现在遇到一个问题是, 虽然可以取得相应的文件路径, 可我的这个程序本身可能没有权限去读文件,所以根本没有办法去分析它的PE格式!
不知各位有没有什么好的办法? 如根据内存可以取得唯一标识符,或更改自己权限什么的?
高分等候....
{
HANDLE hToken; // handle to process token
TOKEN_PRIVILEGES tkp; // pointer to token structure
bool result = OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hToken);
if(!result) //打开进程错误
return result;
result = LookupPrivilegeValue( NULL,
SE_DEBUG_NAME,
&tkp.Privileges[0].Luid);
if(!result) //查看进程权限错误
return result;
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
result = AdjustTokenPrivileges( hToken,
FALSE,
&tkp,
sizeof(TOKEN_PRIVILEGES),
(PTOKEN_PRIVILEGES) NULL,
(PDWORD) NULL);
return result;
}
1. 自己可以给自己的进程增加权限吗? 那病毒进程岂不是无所不能了?
2. 如果局域网上的一些share文件,没有给读权限,那也可以设置权限?
1。可以给你的进程提升权限,当然这个权限肯定不可能超过你进程所属用户权限的范围
2。局域网上的share文件的权限应该是不能设置的,除非你是文件的所有者
谢谢,既然能当前用户能运行起来,肯定有权限; 但是, LookupPrivilegeValue AdjustTokenPrivileges 这些API只有在NT内核上才提供的,win98好像无法实现! (我说的是针对局域网内share的文件)
这好像是个好办法,但现在有很多PE格式的文件编译时,有这么个设置: 禁止取内存,写内存之类的.. (可能是防内存钩子吧)!
就是同一个程序在不同OS上运行起来,产生的进程;