让我们假设一些代码如下:
class X:
def myfunc(self):
print "orig"
def new_myfunc(self):
print "new"
X().myfunc()
X.myfunc = new_myfunc
X().myfunc()
其中新功能由作弊者注入。
有些功能可以改变,有些则不能改变。
我想知道如何检测此代码更改
例如,我可以创建一个包含原始功能代码的dict(带有“func_code”),然后检查它们是否被更改
但我如何在每次“导入”时运行检查?有一种方法可以在python中编辑自动加载器吗?
编辑:这是我想做的,但是每次导入都会自动执行,
protection = {'X':'myfunc'}
f = {}
class X:
def myfunc(self):
print "orig"
def new_myfunc(self):
print "new"
#system check
for key,value in protection.iteritems():
protectedFunc = getattr(eval(key), value)
f[key] = { value : protectedFunc.func_code}
#cheater code
X.myfunc = new_myfunc
#system check
for key,value in protection.iteritems():
protectedFunc = getattr(eval(key), value)
if f[key][value] != protectedFunc.func_code:
print 'detected'
#call by my app
X().myfunc()