给一个从CSDN找到的代码
#include windows.h//这里自己加上括号
VOID ManagerRun(LPCSTR exe,LPCSTR param,INT nShow=SW_SHOW)
{ //注意:会跳出提示。
SHELLEXECUTEINFO ShExecInfo
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO)
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS
ShExecInfo.hwnd = NULL
ShExecInfo.lpVerb = "runas"
ShExecInfo.lpFile = exe
ShExecInfo.lpParameters = param
ShExecInfo.lpDirectory = NULL
ShExecInfo.nShow = nShow
ShExecInfo.hInstApp = NULL
BOOL ret = ShellExecuteEx(&ShExecInfo)
//等不及了,不等了。
CloseHandle(ShExecInfo.hProcess)
return
}
int main(int argc,char *argv[])
{
if(argc == 1) //初次运行,即双击EXE
{
ShowWindow(GetConsoleWindow(),SW_HIDE)
ManagerRun(argv[0],"2")
return 1
}else if(argc == 2) //再次运行,即上面那个ManagerRun
{
/*你的程序主代码在此*/
}
return 0
}
0666:第一个 0 表示这个数是 八进制
第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
第三个 6 表示其它用户有读写权限,但没有执行权限
6 的 二进制就是 0110
第 1 位在权限中总是为 0
第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读
第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
如果不使用系统级漏洞,这个是不可能 *** 作。所谓栈内存溢出攻击是使用了系统漏洞,而且在不同电脑上效果也大相径庭,所谓管理员权限地址是不存在的,没有这个说法,只有虚拟地址和实地址
就算你获得了管理员权限,也无法随便删除系统文件,要删除系统文件需要做很多工作,没有一个高权限驱动或服务也是没办法的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)