python字节码检测框架

equip的Python项目详细描述


equip是一个小库,它有助于python字节码检测。它的api 被设计为小而灵活的,以使各种可能的仪器。

仪表是围绕在 要检测的程序的字节码。但是,开发者不需要知道 关于python字节码的任何信息。

下面的示例演示如何编写一个简单的工具来打印所有 程序中调用的方法及其参数:

import sys
import equip
from equip import Instrumentation, MethodVisitor, SimpleRewriter

BEFORE_CODE = """
print ">> START"
print "[CALL] {file_name}::{method_name}:{lineno}", {arguments}
print "<< END"
"""

class MethodInstr(MethodVisitor):
  def __init__(self):
    MethodVisitor.__init__(self)

  def visit(self, meth_decl):
    rewriter = SimpleRewriter(meth_decl)
    rewriter.insert_before(BEFORE_CODE)

instr_visitor = MethodInstr()
instr = Instrumentation(sys.argv[1])
if not instr.prepare_program():
  return
instr.apply(instr_visitor, rewrite=True)

此程序需要到要检测的程序的路径,并将编译源代码 生成要插入的字节码。所有字节码都将加载到其表示中, 并且将对所有方法声明调用MethodInstrvisitor。

当需要更改(即代码实际上需要检测)时, Instrumentation将覆盖pyc文件。

之后运行检测程序不需要任何东西,只要按照您的方式执行它 通常都可以。如果注入的代码具有外部依赖项,则可以简单地修改 PYTHONPATH指向所需的模块。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在eclipse中查找测试类   sql JAVA如何将数组传递到@NamedNativeQuery   Java通用列表   java JnetPcap:从脱机文件读取非常慢   从java读取Arduino上的LED状态   java NetBeans在安装JAXRPC插件后不会启动   java我只能连接到数据库一次   java如何将Eclipse的自动插入分号移动到光标之前?   java Kotlin Lint测试失败,即使它在生产环境中工作   在java代码中使用python库   安卓 java。lang.IllegalArgumentException:baseUrl必须以/结尾,同时对GET方法使用改型2.1.0   java如何理解servlet中的参数值?   java按子类导入父类包限定符的内部接口   在LibGDX中,在程序运行时更改fixture定义   javajavax。servlet。LocalStrings缺少资源   java如何使用FCM令牌向Android中的特定用户发送通知?   actionscript 3 Flex与Java GWT的集成   java无法解析hibernate。cfg。xml   使用相同的正则表达式时,Python和Java正则表达式的行为不同