我是下载的这篇帖子的源程序,http://bbs.pediy.com/showthread.php?t=65391
但是在我的机子上(32位win xp)编译通过后,一运行总是在WriteProcessMemory这里出错,GetLastError返回5 。
这个程序中,进程的权限已经提升,OpenProcee 和 VirtualAlloc也都没有问题(GetLastError都返回0),但是一到WriteProcessMemory就错,真是崩溃死了。下面贴一下关键代码:
BOOL grant_priv(char *priv) {
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!LookupPrivilegeValue(NULL, priv, &tkp.Privileges[0].Luid))
return FALSE;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return FALSE;
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL))
return FALSE;
CloseHandle(hToken);
return TRUE;
}
bRet = grant_priv("SeDebugPrivilege"); //提升权限
hProc = OpenProcess(PROCESS_ALL_ACCESS| PROCESS_VM_OPERATION| PROCESS_VM_READ | PROCESS_VM_WRITE,
FALSE,
1008); //1008是进程id 这个数字在我机子上(某次启动)是lsass.exe进程的。
pRemoteAddr = (PSTR)VirtualAllocEx(hProc, NULL, len + 1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
bRet = WriteProcessMemory(hProc, pRemoteAddr, argv[3], len+1 , NULL);
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法