LyScriptTools 扩展Script类API手册
纯脚本类的功能实现都是调用的x64dbg命令,目前由于run_command_exec()命令无法返回参数,故通过中转eax寄存器实现了取值,目前只能取出整数类型的参数。
| Script 类内函数名 | 函数作用 |
|---|---|
| party(addr) | 获取模块的模式编号, addr = 0则是用户模块,1则是系统模块 |
| base(addr) | 获取模块基址 |
| size(addr) | 返回模块大小 |
| hash(addr) | 返回模块hash |
| entry(addr) | 返回模块入口 |
| system(addr) | 如果addr是系统模块则为true否则则是false |
| user(addr) | 如果是用户模块则返回true 否则为false |
| main() | 返回主模块基地址 |
| rva(addr) | 如果addr不在模块则返回0,否则返回addr所位于模块的RVA偏移 |
| offset(addr) | 获取地址所对应的文件偏移量,如果不在模块则返回0 |
| isexport(addr) | 判断该地址是否是从模块导出的函数 |
| valid(addr) | 判断addr是否有效,有效则返回True |
| base(addr) | 或者当前addr的基址 |
| size(addr) | 获取当前addr内存的大小 |
| iscode(addr) | 判断当前 addr是否是可执行页面,成功返回TRUE |
| decodepointer(ptr) | 解密指针,相当于调用了DecodePointer ptr |
| ReadByte(addr/eg) | 从addr或者寄存器中读取一个字节内存并且返回 |
| Byte(addr) | 从addr或者寄存器中读取一个字节内存并且返回 |
| ReadWord(addr) | 读取两个字节 |
| ReadDDword(addr) | 读取四个字节 |
| ReadQword(addr) | 读取8个字节,但是只能是64位程序方可使用 |
| ReadPtr(addr) | 从地址中读取指针(4/8字节)并返回读取的指针值 |
| ReadPointer(addr) | 从地址中读取指针(4/8字节)并返回读取的指针值 |
| len(addr) | 获取addr处的指令长度 |
| iscond(addr) | 判断当前addr位置是否是条件指令 |
| isbranch(addr) | 判断当前地址是否是分支指令 |
| isret(addr) | 判断是否是ret指令 |
| iscall(addr) | 判断是否是call指令 |
| ismem(addr) | 判断是否是内存操作数 |
| isnop(addr) | 判断是否是nop |
| isunusual(addr) | 判断当前地址是否指示为异常地址 |
| branchdest(addr) | 将指令的分支目标位于addr处 |
| branchexec(addr) | 如果分支要执行 |
| imm(addr) | 获取当前指令位置的立即数 |
| brtrue(addr) | 下一条指令的地址 |
| next(addr) | 获取addr的下一条地址 |
| prev(addr) | 获取addr上一条低地址 |
| iscallsystem(addr) | 判断当前指令是否是系统模块指令 |
| get(index) | 获取当前函数堆栈中的第index个参数 |
| set(index,value) | 设置的索引位置的值 |
| firstchance() | 最后一个异常是否为第一次机会异常 |
| addr() | 最后一个异常地址 |
| code() | 最后一个异常代码 |
| flags() | 最后一个异常标志 |
| infocount() | 上次异常信息计数 |
| info(index) | 最后一个异常信息 |
如上是一些常用的脚本命令的封装,他们的调用方式如下面代码中所示。
from LyScript32 import MyDebug
from LyScriptTools32 import DebugControl
from LyScriptTools32 import Script
# 有符号整数转无符号数
def long_to_ulong(inter, is_64=False):
if is_64 == False:
return inter & ((1 << 32) - 1)
else:
return inter & ((1 << 64) - 1)
# 无符号整数转有符号数
def ulong_to_long(inter, is_64=False):
if is_64 == False:
return (inter & ((1 << 31) - 1)) - (inter & (1 << 31))
else:
return (inter & ((1 << 63) - 1)) - (inter & (1 << 63))
if __name__ == "__main__":
dbg = MyDebug()
connect_flag = dbg.connect()
print("连接状态: {}".format(connect_flag))
# 定义堆栈类
control = DebugControl(dbg)
script = Script(dbg)
# 得到EIP
eip = control.get_eip()
size = script.size(eip)
print("当前模块大小: {}".format(hex(size)))
entry = script.entry(eip)
print("当前模块入口: {}".format(hex(entry)))
# 得到hash值,默认有符号需要转换
hash = script.hash(eip)
print("有符号hash值: {}".format(hash))
hash = long_to_ulong(script.hash(eip))
print("无符号hash值: {}".format(hex(hash)))
dbg.close()
LyScriptTools 扩展Script类API手册的更多相关文章
- Swiper说明&&API手册 【中文手册Swiper】
原文地址:http://www.cnblogs.com/scavengers/p/3760449.html 示例: <link rel="stylesheet" href= ...
- Swiper 中文API手册(share)
本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...
- Swiper.js 中文API手册
本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...
- Swiper说明&&API手册
最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.ph ...
- Swiper说明及API手册说明
最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.ph ...
- DOM扩展:DOM API的进一步增强[总结篇-下]
本文承接<DOM扩展:DOM API的进一步增强[总结篇-上]>,继续总结DOM扩展相关的功能和API. 3.6 插入标记 DOM1级中的接口已经提供了向文档中插入内容的接口,但是在给文档 ...
- codeigniter框架扩展核心类---实现前台后台视图的分离
1. 扩展核心类,主要作用就是扩展系统现在的功能. 为前台增加独立的视图文件夹: a. 自定义路径常量 :在application ->config/ constants.php中增加 /*m ...
- ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号
写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...
- ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(7)之扩展基类和区域创建以及文本编辑配置
一.扩展基类和区域创建 (1)在应用之前,我们先在表现层创建一个公共的系统扩展文件来(SystemExtension)存放我们需要延伸和扩展的方法类. 在常规的项目系统操作中,我们都需要用到增删查改的 ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
随机推荐
- BBS项目(五):xss攻击 上传图片问题 文章编辑、删除功能 用户头像修改 扩展部分
目录 添加文章功能完善 富文本编辑器上传图片问题 文章编辑功能 文章删除功能 用户头像修改 扩展部分 补充 项目总结 添加文章功能完善 下载第三方模块: pip install bs4 pip ins ...
- Grafana--Min step与Resolution
问题: 今天在统计机房请求量的时候,发现时间选择12 hours时还是正常的,但是选择24 hours时就有一些线条出不来,数据也有缺失,如下: 12 hours 24 hours 问了同事,说是数据 ...
- 高数 | Dirichlet 积分
在分析学中,Dirichlet 积分 是如下形式的 无穷限积分 \[\int_{0}^{+\infty} \frac{\sin x}{x} \mathrm{~d} x \] 它是条件收敛的,且收敛到 ...
- windows不安装虚拟机如何使用Linux系统作为开发工具?
哈喽,大家好,我是仲一.作为嵌入式开发程序员,常常需要在Linux环境下编译一些代码.安装虚拟机比较方便,但是,太占用内存了.性能不好的电脑开了一台虚拟机后,可能就干不了其他事情了.安装双系统也比较麻 ...
- mixin混合
多个组件有相同的逻辑,抽离出来 mixin并不是完美的解决方案,会有一些问题 vue3提出composition api旨在解决这些问题
- 使用 Sealos 将 ChatGLM3 接入 FastGPT,打造完全私有化 AI 客服
FastGPT 是一款专为客服问答场景而定制的开箱即用的 AI 知识库问答系统.该系统具备可视化工作流功能,允许用户灵活地设计复杂的问答流程,几乎能满足各种客服需求. 在国内市场环境下,离线部署对于企 ...
- 05_删除链表的倒数第N个节点
删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: ...
- 使用 FormatMessage 格式化 Windows 错误码.md
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-formatmessage #include <str ...
- Feign 进行rpc 调用时使用ribbon负载均衡源码解析
转载请注明出处: Feign客户端接口的动态代理生成是基于JDK的动态代理来实现的,那么在所有的方法调用的时候最终都会走InvocationHandler接口的实现,默认就是ReflectiveFei ...
- 配置Maven项目时无法找到依赖
1.问题 在配置pom.xml文件时,关于plugin插件配置时,遭遇许多类似 未找到插件 'maven-clean-plugin:3.1.0' 未找到插件 'org.apache.maven.plu ...