第一、我用delphi 7写无form的可执行程序
所有的代码全部都写在 dpr文件里面
没有form 也就无法在option菜单中更改程序图标
所以编译好之后程序的图标就是delphi 7的缺省图标
问题是我现在不想要任何图标
就要是普通的运行在cmd下面的执行程序一样
想请问一下 有什么办法可以实现第二、是有关删除程序的问题
在程序运行的时候 他会释放出另外一个new.exe文件并执行
同时也会在win2000的进程列表中显示出new.exe
在这个时候有什么办法可以在不kill new.exe这个进程的情况下删除new.exe?
为此,我做了一个实验
在程序运行的时候释放一个木马程序 如 srv99.exe 并且运行
现在在进程列表中会显示 srv99.exe 而且我可以 telnet 到 99端口
这个时候我去删除srv99.exe 是被拒绝的
但是使用瑞星可以将文件删除 而删除之后仍然可以 telnet 到 99端口
想在此请教各位 有什么方法可以实现如同瑞星一样
在不终止进程的情况下删除文件?谢谢
所有的代码全部都写在 dpr文件里面
没有form 也就无法在option菜单中更改程序图标
所以编译好之后程序的图标就是delphi 7的缺省图标
问题是我现在不想要任何图标
就要是普通的运行在cmd下面的执行程序一样
想请问一下 有什么办法可以实现第二、是有关删除程序的问题
在程序运行的时候 他会释放出另外一个new.exe文件并执行
同时也会在win2000的进程列表中显示出new.exe
在这个时候有什么办法可以在不kill new.exe这个进程的情况下删除new.exe?
为此,我做了一个实验
在程序运行的时候释放一个木马程序 如 srv99.exe 并且运行
现在在进程列表中会显示 srv99.exe 而且我可以 telnet 到 99端口
这个时候我去删除srv99.exe 是被拒绝的
但是使用瑞星可以将文件删除 而删除之后仍然可以 telnet 到 99端口
想在此请教各位 有什么方法可以实现如同瑞星一样
在不终止进程的情况下删除文件?谢谢
只要对exe本身先执行FreeLibrary操作即可解除exe IMAGE在内存的映射NT下:
关闭了 exe 文件的 IMAGE(硬编码为4),然后用 UnmapViewOfFile 解除了 exe 文件在内存中的映象,接着通过堆栈传递当前程序的路径名缓冲区指针给 DeleteFile
刚看了一下res文件
不知道用什么办法可以修改?
hModule: THandle;
buf: array[0..255] of Char;
hKernel32: THandle;
pExitProcess, pDeleteFileA, pUnmapViewOfFile: Pointer;
begin
hModule := GetModuleHandle(nil);
GetModuleFileName(hModule, buf, sizeof(buf));
CloseHandle(THandle(4));
hKernel32 := GetModuleHandle('KERNEL32');
pExitProcess := GetProcAddress(hKernel32, 'ExitProcess');
pDeleteFileA := GetProcAddress(hKernel32, 'DeleteFileA');
pUnmapViewOfFile := GetProcAddress(hKernel32, 'UnmapViewOfFile');
asm
LEA EAX, buf
PUSH 0
PUSH 0
PUSH EAX
PUSH pExitProcess
PUSH hModule
PUSH pDeleteFileA
PUSH pUnmapViewOfFile
RET
end;
end;C++: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 pExitProcess
PUSH hModule
PUSH pDeleteFileA
PUSH pUnmapViewOfFile
RET
} 该代码在NT中有效,XP下无效记住在开发环境中运行会导致异常98下调用FreeLibrary可直接解除EXE在内存中的映像至于怎么修改资源文件?自己用用搜索引擎,找些基础资料,就不多说了简单的方法,不要删除工程文件中的{$R *.res},直接像你以前一样的方式修改图标