纯脚本类的功能实现都是调用的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. 升讯威在线客服系统:与QQ、微信的区别和优势

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 请访问:https://kf.shengxunwei.com 文章目录列 ...

  2. 【HZERO】权限管理

    Hzero数据权限介绍 https://open.hand-china.com/community/detail/625872021372407808#3.4 开发建议 Permission注解属性介 ...

  3. Three.js 入门

    Demo代码地址: https://gitee.com/s0611163/three.js-demo Three.js Three.js下载 从GitHub上下载一个Release版本,https:/ ...

  4. Python使用pandas库读取txt文件中的Json数据,并导出到csv文件

    使用的是 Python 3 代码: #!/usr/bin/python # -*- coding: gbk -*- # JSON数据导出到csv文件 import json import pandas ...

  5. AC(AtCoder) Library 文档翻译

    AC(AtCoder) Library Document下载使用 如何安装 首先在 Github 上找到 ac-library 仓库.下载最新版本 解压 zip 文件后将 atcoder ,放置GCC ...

  6. 【每日一题】16.Treepath (LCA + DP)

    补题链接:Here 题意总结:寻找有多少条两个点之间偶数路径 看完题,很容易想到在树型中,同一层的节点必然是偶数路径到达,还有就是每隔两层的节点一样可以到达,所以我就理所应当的写了如下代码 using ...

  7. Serverless 时代开启,云计算进入业务创新主战场

    作者 | 于洪涛 "我们希望让用户做得更少而收获更多,通过 Serverless 化,让企业使用云服务像用电一样简单." Serverless 化正在成为全新的软件研发范式,阿里云 ...

  8. vscode报错Already included file name ‘xxx‘ differs from file name ‘xxx‘ only in casing的解决方法:

    场景:我们创建了一个文件是小写开头的,又改成大写开头的. 比如: relationDemo.vue 改成 RelationDemo.vue 原因:缓存的判重逻辑是不区分大小写导致的.在这种情况下,vs ...

  9. ClickHouse的Join算法

    ClickHouse的Join算法 ClickHouse是一款开源的列式分析型数据库(OLAP),专为需要超低延迟分析查询大量数据的场景而生.为了实现分析应用可能达到的最佳性能,分析型数据库(OLAP ...

  10. SV task and function

    内容 system verilog过程语句:自增和自减操作符 逻辑比较操作符 逻辑值为1bit inside语句 变量类型转换 强制类型转换:$cast() 变量位宽转换 变量符号位转换 for循环语 ...