社区
非技术类
帖子详情
各位老大,有个简单却又有趣的问题
uk
2002-03-11 08:47:43
请问如何让一个exe文件只能运行一次后,就再也不能运行?
...全文
97
7
打赏
收藏
各位老大,有个简单却又有趣的问题
请问如何让一个exe文件只能运行一次后,就再也不能运行?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
uk
2002-03-11
打赏
举报
回复
我想将原有EXE程序内容改掉,让他不能再运行!
gdjonak
2002-03-11
打赏
举报
回复
用系统的原子表。。
ghost_shl
2002-03-11
打赏
举报
回复
向注册表里写东东
temujen
2002-03-11
打赏
举报
回复
呵呵,你小子究竟想干什么?想让人不说话,最好的办法就是让他永远说不了话,这个是电视剧里太滥的情节了.
vcfor
2002-03-11
打赏
举报
回复
有没有用,你试过没有?
whz_time
2002-03-11
打赏
举报
回复
你可以在程序退出的时候将程序删除,我这有点资料:
进程退出前删除自身EXE
下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手.下面就分析一些他的这段代码.
这段代码在PROCESS没有结束前就将启动PROCESS的EXE文件删除了.
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;
}
现在,我们先看一下堆栈中的东西
偏移 内容
24 0
20 0
16 offset buf
12 address of ExitProcess
8 module
4 address of DeleteFile
0 address of UnmapViewOfFile
调用RET返回到了UnmapViewOfFile,也就是栈里的偏移0所指的地方.当进入UnmapViewOfFile的流程时,栈里见到的是返回地址DeleteFile和HMODUL module.也就是说调用完毕后返回到了DeleteFile的入口地址.当返回到DeleteFile时,看到了ExitProcess的地址,也就是返回地址.和参数EAX,而EAX则是buffer.buffer存的是EXE的文件名.由GetModuleFileName(module, buf, sizeof buf)返回得到.执行了DeleteFile后,就返回到了ExitProcess的函数入口.并且参数为0而返回地址也是0.0是个非法地址.如果返回到地址0则会出错.而调用ExitProcess则应该不会返回.
这段代码的精妙之处在于:
1.如果有文件的HANDLE打开,文件删除就会失败,所以,CloseHandle(HANDLE(4));是十分巧妙的一手.HANDLE4是OS的硬编码,对应于EXE的IMAGE.在缺省情况下,OS假定没有任何调用会关闭IMAGE SECTION的HANDLE,而现在,该HANDLE被关闭了.删除文件就解除了文件对应的一个句柄.
2.由于UnmapViewOfFile解除了另外一个对应IMAGE的HANDLE,而且解除了IMAGE在内存的映射.所以,后面的任何代码都不可以引用IMAGE映射地址内的任何代码.否则就OS会报错.而现在的代码在UnmapViewOfFile后则刚好没有引用到任何IMAGE内的代码.
3.在ExitProcess之前,EXE文件就被删除了.也就是说,进程尚在,而主线程所在的EXE文件已经没了.(WINNT/9X都保护这些被映射到内存的WIN32 IMAGE不被删除.)
Gary Nebbett果然是WIN系列平台的顶尖高手之一.能写出如此代码.独辟蹊径啊:)
uk
2002-03-11
打赏
举报
回复
还有什么高见?
有趣
的海盗分金
问题
(博弈论)
本文探讨了经典的海盗分金
问题
,通过博弈论视角解析如何在绝对理性条件下,首个海盗如何设计分配方案既能确保生存又能利益最大化。文章深入剖析了每位海盗的心理预期,最终得出最优策略。
程序员跳槽面试看见公司
老大
也来面试,网友:
老大
比你更尴尬
一名程序员在阿里面试时,意外地在休息室遇到了他的上司,两人正巧都准备跳槽。这一尴尬又
有趣
的场景引发了关于职场跳槽文化的讨论。
程序员跳槽支付宝:面试遇
老大
太尴尬,网友:我觉得还行
本文探讨了程序员跳槽的策略及注意事项,强调了稳定性的重要性,并分享了一位程序员跳槽到支付宝时遇到前任领导的
有趣
经历。
抱歉,今年我劝各位真的别轻易离职!
今天想跟大家说几句心里话,算是有感而发吧。希望我的读者看完都能重视起来。给大家分享一个读者的留言。“博主大大你好,我最近遇到一件事,我为了我女朋友裸辞了,目前我还处在失业状态,但是她还是和其他男生跑了,跑之前说了一句,你真的是废物,没钱谈什么恋爱,我该怎么办,我唯一的工作也没了,我好绝望,我想赚钱但又无从下手!”我的回复少年我以前像你一样迷茫,焦虑,不知所措,但我没有放弃,我知道我这辈子还长,我想...
活在微软2
本文记述了一位作者在微软的工作经历,特别是加入了一个名为“饭团”的小组后的
有趣
故事。成员包括瑞军
老大
、Lynn、Wei、Shawn等人,他们在忙碌的工作之余,享受着团队带来的快乐时光。
非技术类
1,663
社区成员
58,947
社区内容
发帖
与我相关
我的任务
非技术类
VC/MFC 非技术类
复制链接
扫一扫
分享
社区描述
VC/MFC 非技术类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章