-
-
[求助]自删除代码的疑问。
-
发表于:
2005-6-25 05:02
6148
-
以下是Gary Nebbett的经典代码
int main(int argc, char *argv[])
{
HMODULE module = GetModuleHandle(0);
CHAR buf[MAX_PATH];
GetModuleFileName(module, buf, sizeof buf);
CloseHandle(HANDLE(4));
__asm {
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
在nt,2k下面是可以用。 但xp下却不行。
主要的关键是在CloseHandle((HANDLE)4); 其中4是file mapping的硬编码
在文件handle被打开的时候是无法删除的, 可以用这个代码关闭handle
,然后卸载文件内存镜像但stack仍然可以访问从而掉用deletefile来删除。
然后在中xp这个硬件编码好象变了。 有其他的硬编码或者用api来实现?
有什么好的办法吗。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!