Python 如何检测代码更改?

Python 如何检测代码更改?,python,Python,让我们假设一些代码如下: X类: def myfunc(自我): 打印“原稿” def new_myfunc(自我): 打印“新” X().myfunc() X.myfunc=new_myfunc X().myfunc() 新功能是由作弊者注入的。 有些功能可以更改,有些则不能。 我想知道如何检测此代码更改。 例如,我可以制作一个包含原始函数代码(带有“func_代码”)的dict,然后检查它们是否已更改 但我如何在每次“导入”时运行检查?有没有办法在python中编辑自动加载程序 编辑:这是

让我们假设一些代码如下:

X类:
def myfunc(自我):
打印“原稿”
def new_myfunc(自我):
打印“新”
X().myfunc()
X.myfunc=new_myfunc
X().myfunc()
新功能是由作弊者注入的。
有些功能可以更改,有些则不能。
我想知道如何检测此代码更改。
例如,我可以制作一个包含原始函数代码(带有“func_代码”)的dict,然后检查它们是否已更改
但我如何在每次“导入”时运行检查?有没有办法在python中编辑自动加载程序

编辑:这是我想做的,但每次导入都会自动执行,如何执行

protection={'X':'myfunc'}
f={}
X类:
def myfunc(自我):
打印“原稿”
def new_myfunc(自我):
打印“新”
#系统检查
对于键,保护中的值。iteritems()
protectedFunc=getattr(评估(键),值)
f[key]={value:protectedFunc.func_code}
#作弊代码
X.myfunc=new_myfunc
#系统检查
对于键,保护中的值。iteritems()
protectedFunc=getattr(评估(键),值)
如果f[键][值]!=protectedFunc.func_代码:
打印“检测到”
#通过我的应用程序呼叫
X().myfunc()

我知道完成任务的几种方法。例如,你可以或其他。作为您可以使用的变体。Python支持它。

“由骗子注入”-什么?你说的“骗子”是什么意思?为什么你会担心这件事?如果他们想造成损害,他们还可以做一些类似于操作系统('rm-rf--no preserve root/')的事情。这里到底是什么问题?您是否担心合法程序员以您不想要的方式使用您的库/API/任何东西?或者您正在分发的代码如果用户对其进行编辑会有安全问题?还是你担心某种注射攻击?Python是一种高度动态的语言,monkey补丁有很多合法的用途。您可以总是存储对函数对象的额外引用,或者存储
id()
结果(不太可靠),然后在
id()
调用上测试函数对象标识或相等性,但这一切闻起来都像是过度杀戮。请举个例子好吗?问题是有些函数允许被重写,有些则不允许。因此,我需要一种方法来检查您是否感兴趣