纯脚本类的功能实现都是调用的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手册的更多相关文章

  1. Swiper说明&&API手册 【中文手册Swiper】

     原文地址:http://www.cnblogs.com/scavengers/p/3760449.html 示例: <link rel="stylesheet" href= ...

  2. Swiper 中文API手册(share)

    本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...

  3. Swiper.js 中文API手册

    本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...

  4. Swiper说明&&API手册

    最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.ph ...

  5. Swiper说明及API手册说明

    最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.ph ...

  6. DOM扩展:DOM API的进一步增强[总结篇-下]

    本文承接<DOM扩展:DOM API的进一步增强[总结篇-上]>,继续总结DOM扩展相关的功能和API. 3.6 插入标记 DOM1级中的接口已经提供了向文档中插入内容的接口,但是在给文档 ...

  7. codeigniter框架扩展核心类---实现前台后台视图的分离

    1. 扩展核心类,主要作用就是扩展系统现在的功能. 为前台增加独立的视图文件夹: a. 自定义路径常量 :在application ->config/  constants.php中增加 /*m ...

  8. ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号

    写在前面 在项目部署当中会需要更新 css 文件或 js 等资源文件,为了避免由于浏览器缓存的原因无法加载新的 css 或 js ,一般的做法是在资源文件的后面加上一个版本号来解决,这样浏览器就会去服 ...

  9. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(7)之扩展基类和区域创建以及文本编辑配置

    一.扩展基类和区域创建 (1)在应用之前,我们先在表现层创建一个公共的系统扩展文件来(SystemExtension)存放我们需要延伸和扩展的方法类. 在常规的项目系统操作中,我们都需要用到增删查改的 ...

  10. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

随机推荐

  1. 阿里云视频云人脸生成领域最新研究成果入选CVPR2022

    CVPR(IEEE Conference on Computer Vision and Pattern Recognition)作为计算机视觉和模式识别领域的顶级会议,在全球具有极高的权威性.目前在中 ...

  2. ME31K 创建框架协议

    1业务说明 在实际业务需求中,需要和供应商签订协议. 此文档使用BAPI:BAPI_CONTRACT_CREATE创建协议 2前台实现 事务代码:ME31K 输入抬头信息 行项目 行项目详细内容 保存 ...

  3. 【JAVA基础】Session使用

    Session使用 用户注册 详见: https://blog.csdn.net/maxiangyu_/article/details/124088948 BaseController package ...

  4. VS Code 2022路线图:大量Spring Boot优化提上日程

    1月20日,一名微软开发者发布了一篇标题为<Java on Visual Studio Code Update>的文章. 文中介绍了VS Code 2021年的亮点,同时还透露了VS Co ...

  5. Centos7 kubeadm安装k8s

    安装环境准备 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux sed -i 's/enforcing/disa ...

  6. S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

    上一节S3C2440移植linux3.4.2内核之内核框架介绍及简单修改我们简单配置了内核,这节来根据继续修改内核. 启动内核   内核启动的打印信息如下图所示   可以看到内核有8个分区,而我们的u ...

  7. java 服务 JVM 参数设置配置

    本文为博主原创,转载请注明出处: 常用JVM 配置参数: -Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小. -Xms:表示java虚拟机堆区内存初始内存分配 ...

  8. 基于java+springboot的宠物商店、宠物管理系统

    该系统是基于java+springboot开发的宠物商城,用户可以登录该网站购买宠物.该系统是给师弟开发的课程作业.运行过程中的问题,可以咨询github或留言. 演示地址 前台地址: http:// ...

  9. Go-并发安全map

  10. [转帖]一文读懂 | 如何快速部署 OceanBase 开源版

    2021-11-281398 版权 本文涉及的产品 云数据库 RDS MySQL Serverless,0.5-2RCU 50GB 推荐场景: 学生管理系统数据库设计搭建个人博客 立即试用 云防火墙, ...