首页
社区
课程
招聘
[求助]自删除代码的疑问。
发表于: 2005-6-25 05:02 6148

[求助]自删除代码的疑问。

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来实现?
有什么好的办法吗。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
自删除不是正道建议不要用,否则软件应用范围受影响
2005-7-6 10:41
0
雪    币: 267
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
不是正途的东西才好玩啊.

自删除的文章很多的.方法也很多的.

1.新建一个 BAT 文件,然后循环等待自身程序的退出后,再自删除 BAT 文件.
2.用 WIN 的安装配置文件,设置下次启动的时候删除
3.再翻翻书吧.
2005-7-13 05:48
0
游客
登录 | 注册 方可回帖
返回
//