LyScriptTools 模块类API接口手册

简介: LyScriptTools工具包是在LyScript模块基础上封装的工具包,其主要是二次封装LyScript插件实现的一些新功能,或者将特定功能组件拆分开形成的独立模块,此类模块可实现更加精细化的功能控制,在实际开发中推荐使用此种方式调用。

LyScriptTools工具包是在LyScript模块基础上封装的工具包,其主要是二次封装LyScript插件实现的一些新功能,或者将特定功能组件拆分开形成的独立模块,此类模块可实现更加精细化的功能控制,在实际开发中推荐使用此种方式调用。

获取被调试进程信息: 得到当前被调试进程详细参数,包括路径,名称,入口地址,基地址,长度等。

from LyScript32 import MyDebug
from LyScriptTools32 import Module

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()

    # 连接到调试器
    connect_flag = dbg.connect()
    print("连接状态: {}".format(connect_flag))

    # 类定义,并传入调试器对象
    module = Module(dbg)

    # 得到当前被调试程序完整路径
    full_path = module.get_local_full_path()
    print("完整路径: {}".format(full_path))

    # 得到进程名字
    local_name = module.get_local_program_name()
    print("调试名称: {}".format(local_name))

    # 得到长度
    local_size = module.get_local_program_size()
    print("程序长度: {}".format(local_size))

    # 得到基地址
    local_base = module.get_local_program_base()
    print("基地址: {}".format(hex(local_base)))

    # 得到入口地址
    local_oep = module.get_local_program_entry()
    print("入口地址: {}".format(hex(local_oep)))

    dbg.close()

得到当前被调试进程基本信息:

image.png

根据模块地址或名称得到基地址: 根据模块名或者模块地址互相获取指定模块的入口地址,基地址,名称等。

from LyScript32 import MyDebug
from LyScriptTools32 import Module

if __name__ == "__main__":
    # 初始化
    dbg = MyDebug()

    # 连接到调试器
    connect_flag = dbg.connect()
    print("连接状态: {}".format(connect_flag))

    # 类定义,并传入调试器对象
    module = Module(dbg)

    # 验证是否导入了user32.dll
    is_import = module.check_module_imported("user32.dll")
    print("是否导入: {}".format(is_import))

    # 根据基地址得到模块名
    module_name = module.get_name_from_module("1985413120")
    print("根据基地址得到模块名: {}".format(module_name))

    # 根据模块名得到基地址
    module_base = module.get_base_from_module("kernelbase.dll")
    print("根据模块名得到基地址: {}".format(hex(module_base)))

    # 根据模块名得到OEP基地址
    module_oep = module.get_oep_from_module("win32project1.exe")
    print("OEP: {}".format(hex(module_oep)))

    dbg.close()

运行效果如下:

image.png

如上只是两个最基本的演示,LySctiptTools中关于模块的封装函数有很多,具体可归纳为如下表:

Module类内函数名 函数作用
get_local_full_path() 得到程序自身完整路径
get_local_program_name() 获得加载程序的文件名
get_local_program_size() 得到被加载程序的大小
get_local_program_base() 得到基地址
get_local_program_entry() 得到入口地址
check_module_imported(module_name) 验证程序是否导入了指定模块
get_name_from_module(address) 根据基地址得到模块名
get_base_from_module(module_name) 根据模块名得到基地址
get_oep_from_module(module_name) 根据模块名得到模块OEP入口
get_all_module_information() 得到所有模块信息
get_module_base(module_name) 得到特定模块基地址
get_local_base() 得到当前OEP位置处模块基地址
get_local_size() 获取当前OEP位置长度
get_local_protect() 获取当前OEP位置保护属性
get_module_from_function(module,function) 获取指定模块中指定函数内存地址
get_base_from_address(address) 根据传入地址得到模块首地址,开头4D 5A
get_base_address() 得到当前.text节基地址
get_base_from_name(module_name) 根据名字得到模块基地址
get_oep_from_name(module_name) 传入模块名得到OEP位置
get_oep_from_address(address) 传入模块地址得到OEP位置
get_module_from_import(module_name) 得到指定模块的导入表
get_import_inside_function(module_name,function_name) 检查指定模块内是否存在特定导入函数
get_import_iatva(module_name,function_name) 根据导入函数名得到函数iat_va地址
get_import_iatrva(module_name,function_name) 根据导入函数名得到函数iat_rva地址
get_module_from_export(module_name) 传入模块名,获取模块导出表
get_module_export_va(module_name,function_name) 传入模块名以及导出函数名,得到va地址
get_module_export_rva(module_name,function_name) 传入模块名以及导出函数,得到rva地址
get_local_section() 得到程序节表信息
get_local_address_from_section(section_name) 根据节名称得到地址
get_local_size_from_section(section_name) 根据节名称得到节大小
get_local_section_from_address(address) 根据地址得到节名称
目录
相关文章
|
14天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
21天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
1月前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。
|
1月前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
1月前
|
安全 API 数据安全/隐私保护
API接口知识小结
应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
|
1天前
|
Java API Android开发
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
6 0
|
4天前
|
XML JSON API
快速淘宝商品详情页面API接口传输 php
PI(Application Programming Interface,应用程序接口)是一组预定义的函数、协议和工具,用于构建软件应用程序之间的交互。它允许不同的软件系统和应用通过统一的接口进行数据交换和通信
|
8天前
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
201 2
|
13天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
22天前
|
XML API 网络架构
API 常用的接口类型都有哪些?
在软件开发的宏大舞台上,接口充当着不可或缺的角色,确保了不同的软件模块能够高效、无缝地沟通和协作。