【python】反射和动态加载

1、概念理解

反射: 可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作,主要干了四件事:
(1)查看对象属性在不在
(2)获取对象属性
(3)设置对象属性
(4)删除对象属性
这是对对象自身的一些处理。

动态加载:常用的方法就是importlib.import_module,程序中 用到包的时候才会把包导入进来,这是对外部包的处理。

2. 代码实现

2.1 反射

自定义一个类

from typing import Optional


class Atiaisi():
    def __init__(self):
        self.name = "atiais"
        self.sex = "male"
        self.height = '190'
        self.weight = '75'

    def speak(self, msg: Optional[str] = 'nothing'):
        print(f"{self.name} say: {msg}")

    def run(self):
        print("huuuuuuuuuuuuuuuuu")


a = Atiaisi()
2.1.1 hasattr: 查看类中的属性是否存在,存在返回True,不存在返回False
bool_name = hasattr(a, 'name')
print("对象中是否有name属性: ", bool_name)
bool_speak = hasattr(a, 'speak')
print("对象中是否有speak属性: ", bool_speak)
bool_speak111111 = hasattr(a, 'speak111111')
print("对象中是否有speak111111属性: ", bool_speak111111)

运行结果:
在这里插入图片描述

2.1.2 getattr: 获取类的属性
name = getattr(a, 'name')
print("获取对象中的name值: ", name)
speak = getattr(a, 'speak')
print("获取对象中的speak值: ", speak)
speak("hello everyone!")

运行结果:
在这里插入图片描述

2.1.3 setattr: 设置类的属性
setattr(a, "name", "ATIAISI")
a.speak('come on!')
setattr(a, "age", 18)
print("对象属性:", a.__dict__)

运行结果:
在这里插入图片描述

2.1.4 delattr: 删除类的属性
delattr(a, 'sex')
print("查看对象属性:", a.__dict__)
delattr(a, 'name')
print("再次查看对象属性:", a.__dict__)
print("查看对象的name属性还在不在:", a.name)

运行结果:
从运行结果可以看出,当删掉实例属性之后再调用会发生属性不存在报错。
在这里插入图片描述

2.2 动态导入

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import importlib


a = importlib.import_module('02_URL标准化.02_StandardizedURL')
print(a.standard_url('http://1.1.1.1//1111111'))

b = importlib.import_module('.02_StandardizedURL', package='02_URL标准化')
print(a.standard_url('http://1.1.1.1//2222222'))

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python shellcode 加载器是一个程序,它能够从字节串中动态加载和执行二进制代码。这种技术通常用于绕过安全措施,因为它可以避免将可疑代码写入硬盘驱动器或在文件中进行存储,而是将其保存在内存中直接执行。 ### 回答2: Python shellcode加载器是一种用Python编写的程序,用于加载和执行Shellcode(一段机器码,通常用于执行系统级操作)的工具。Shellcode加载器通常用于渗透测试、恶意软件开发或安全研究等领域。 Python shellcode加载器的实现主要包括以下几个步骤: 1. 解析Shellcode:加载器首先需要解析Shellcode,将其转换为可执行的格式。这包括解析Shellcode的字节序列、指令等。 2. 构建可执行载体:加载器需要构建一个可执行的载体程序,用于将Shellcode加载到内存中执行。这个载体程序可以是Python脚本,也可以是其他编程语言编写的程序。 3. 加载和执行Shellcode:加载器将Shellcode加载到内存中,并在适当的内存位置执行Shellcode。为了提高Shellcode的执行效率和稳定性,加载器通常会在内存中申请合适大小的空间,并将Shellcode复制到这个地址。 4. 执行后续操作:一旦Shellcode执行完成,加载器可以根据需要进行后续操作,如输出结果、清理内存等。 Python shellcode加载器的优点在于使用简便、跨平台性好以及Python本身的强大功能。通过使用Python的相关库和模块,可以方便地实现Shellcode加载器,并完成Shellcode的加载和执行。此外,Python shellcode加载器还可以与其他工具或环境配合使用,如反射DLL注入、远程执行等,提供更多的功能和灵活性。 总而言之,Python shellcode加载器是一种用Python编写的工具,用于加载和执行Shellcode的程序。它能够方便地解析、加载和执行Shellcode,并提供了更多的灵活性和功能扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值