今天刚发现 py 文件可以自己改变自己的内容,感觉可以用这个写出很好玩的东西!

2014-05-01 18:01:03 +08:00
 MarioLuisGarcia
一个简单的例子。

vim test.py

f = open('test.py', 'a')
f.write("print 'hello world'\n") # \n to start a new line to avoid syntax error
3576 次点击
所在节点    分享发现
13 条回复
Tink
2014-05-01 18:10:22 +08:00
运行中的文件也能改嚒?比如一个死循环,运行中也能修改内容?
koykoi
2014-05-01 18:32:21 +08:00
已经编译成pyc执行了吧 当然可以改
phyng
2014-05-01 18:41:36 +08:00
楼主可以试试两个py文件互相修改互相调用¯﹃¯
lululau
2014-05-01 18:44:10 +08:00
都可以改的啊

test.c:

FILE *f = fopen("./test", "a");
fprintf(f, "\nhello world\n");
fclose(f);
phuslu
2014-05-01 18:57:38 +08:00
Monad
2014-05-01 19:13:52 +08:00
试试写一个输出自己内容的py
yakiang
2014-05-01 19:54:23 +08:00
quine
loading
2014-05-01 20:22:58 +08:00
你们自我进化吗?
alexapollo
2014-05-01 20:24:32 +08:00
@phuslu 大神的这个密码看不懂啊……
phuslu
2014-05-01 20:43:52 +08:00
@alexapollo 啊,不好意思,写了一个类似的 gist 的,发现贴出来以后没有显示,我再试下啊。

https://gist.github.com/phuslu/9cf138e5ee4ea67ea425
phuslu
2014-05-01 20:45:14 +08:00
Mutoo
2014-05-02 00:07:20 +08:00
冯诺依曼的储存程序体系一直都是这样的。程序即储存在存储介质上的数据。
数据可以被改写,于是程序也可以。
这导致了黑客可以利用不严格的指针检查越过数组边界改写栈空间附近程序。
当一个有root权限程序在运行时被以这种方法修改的时候,黑客可以做任何他想做的事。
hitsmaxft
2014-05-02 08:33:13 +08:00
@phuslu 不用贴raw格式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX