2
我需要寫入正在執行的可執行文件,但是我無法打開它進行寫入。例如:ETXTBSY以及如何覆蓋它
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
int fd = open(argv[0], O_RDWR);
if (fd == -1) perror(NULL);
return 0;
}
% uname -rs FreeBSD 8.0-STABLE % ./example_ETXTBSY Text file busy
有some explanations到底是什麼ETXTBSY在Linux中,但儘管如此,是否有可能重寫這個錯誤?
P.S.
我不想寫病毒。
我需要動態修改可執行文件:在它的結束物理更換/添加/刪除一些字節。 – 2009-12-12 13:00:44
然後你需要使用ptrace() – 2009-12-12 13:01:12
不,他也可以使用'unlink'方法 - 他只需要打開現有的可執行文件以便首先閱讀,這樣他就可以將內容複製到新文件中,然後再編寫改變它。 – caf 2009-12-12 23:56:12