LyScriptTools模块实在LyScript模块反汇编基础上封装而成,其提供了更多的反汇编方法,可以更好的控制x64dbg完成自动化反汇编任务,API参考手册如下。

is系列函数: 该系列是反汇编模块中的判断语句,主要用于验证当前或指定一个内存地址指令类型,如果是返回true否则返回false,该函数默认不传参数使用的是当前EIP所指向的位置,传入参数(十进制)则对指定位置进行判断。

from LyScript32 import MyDebug
from LyScriptTools32 import Module
from LyScriptTools32 import Disassemble if __name__ == "__main__":
dbg = MyDebug()
connect_flag = dbg.connect()
print("连接状态: {}".format(connect_flag)) # 反汇编类
dasm = Disassemble(dbg) ref = dasm.is_jmp()
print("是否是JMP: {}".format(ref)) dbg.close()

实现效果如下:

为了防止通用方法不够用,LyScriptTools中提供了自定义方法is_它可以判断任何类型的指令前缀,此处必须传递两个参数没有缺省值。

from LyScript32 import MyDebug
from LyScriptTools32 import Module
from LyScriptTools32 import Disassemble if __name__ == "__main__":
dbg = MyDebug()
connect_flag = dbg.connect()
print("连接状态: {}".format(connect_flag)) # 反汇编类
dasm = Disassemble(dbg) eip = dbg.get_register("eip") ref = dasm.is_(eip,"cmp") print("是否是CMP: {}".format(ref)) dbg.close()

验证效果如下:

详细反汇编API参数列表如下:

from LyScriptTools32 import Disassemble

如下API定义中,地址后面带有0说明可以指定缺省值,缺省值默认取当前EIP位置。

Disassemble 类内函数名 函数作用
is_call(address=0) 是否是跳转指令
is_jmp(address=0) 是否是jmp
is_ret(address=0) 是否是ret
is_nop(address=0 ) 是否是nop
is_cond(address=0) 是否是条件跳转指令
is_cmp(address=0) 是否cmp比较指令
is_test(address=0 ) 是否是test比较指令
is_(address,cond) 自定义判断条件
get_assembly(address=0) 得到指定位置汇编指令,不填写默认获取EIP位置处
get_opcode(address=0) 得到指定位置机器码
get_disasm_operand_size(address=0) 获取反汇编代码长度
assemble_code_size(assemble) 计算用户传入汇编指令长度
get_assemble_code(assemble) 用户传入汇编指令返回机器码
write_assemble(address,assemble) 将汇编指令写出到指定内存位置
get_disasm_code(address,size) 反汇编指定行数
get_disasm_one_code(address = 0) 向下反汇编一行
get_disasm_operand_code(address=0) 得到当前内存地址反汇编代码的操作数
get_disasm_next(eip) 获取当前EIP指令的下一条指令
get_disasm_prev(eip) 获取当前EIP指令的上一条指令

我们来举一个使用案例,其实和模块调用原理是一样的,调用时先初始化,然后就可以使用内部的函数了。

from LyScript32 import MyDebug
from LyScriptTools32 import Module
from LyScriptTools32 import Disassemble if __name__ == "__main__":
dbg = MyDebug()
connect_flag = dbg.connect()
print("连接状态: {}".format(connect_flag)) # 反汇编类
dasm = Disassemble(dbg) ref = dasm.is_jmp()
print("是否是JMP: {}".format(ref)) dbg.close()

LyScriptTools 反汇编类API接口手册的更多相关文章

  1. ionic 访问odoo11之具体业务类api接口

    在前面测试通过odoo登录的功能,这次的问题重点是如何访问后台具体的业务类的接口呢?这次就以我们在odoo中安装的lunch模块为例,目标是获取lunch.alert的数据,如下图 具体过程接上次文章 ...

  2. onps栈使用说明(1)——API接口手册

    1. 底层API 由协议栈底层提供的api,用于涉及底层操作的一些功能实现,这些api接口函数的原型定义分布于不同的文件,它们被统一include进了onps.h中: open_npstack_loa ...

  3. Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口

    1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...

  4. Java8新特性(三)——Optional类、接口方法与新时间日期API

    一.Optional容器类 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 查看结构图可以看到有如下常用方法: of(T)—— ...

  5. C# 请求Web Api 接口,返回的json数据直接反序列化为实体类

    须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...

  6. Google地图接口API之Google地图 API 参考手册(七)

    Google 地图API 参考手册 地图 构造函数/对象 描述 Map() 在指定的 HTML 容器中创建新的地图,该容器通常是一个DIV元素. 叠加层 构造函数/对象 描述 Marker 创建一个标 ...

  7. 微服务手册:API接口9个生命节点,构建全生命周期管理

    互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习. 对于API,在日常的工作中是接触最多的东西,特别是我们软件这一行,基本就是家常便饭了,在百度百 ...

  8. F5 api接口开发实战手册(二)

    F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...

  9. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  10. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

随机推荐

  1. 神经网络优化篇:详解动量梯度下降法(Gradient descent with Momentum)

    动量梯度下降法 还有一种算法叫做Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新的权重. 例如,如果 ...

  2. 核心工具之 ideavim

    对于个人的核心工具集的选择,因为编程中熟练使用主力IDE能够大大提高效率,所以IDE是一个必选项.而IDE与VIM结合的插件,对于VIM使用者,常常是一个必选项. 在Jetbrains系列工具中,插件 ...

  3. 【每日一题】40. 旅游 (树形DP解决树的最大独立集)

    补题链接:Here 算法涉及:树形DP寻找树上最大独立集 一开始想到是利用 树形DP 找树的直径问题,但这里由于可以利用走过的点衍生,所以不符合树的直径问题 查询了一下资料这道题是属于: 树的最大独立 ...

  4. Codeforces Round #722 (Div. 2) A~D题解

    补题链接:Here 1529A. Eshag Loves Big Arrays [题意描述] 给定一个长度为 \(n\) 的正整数数组 \(a\) ,现在可执行若干次操作(可为 \(0\)) 具体操作 ...

  5. LightOJ 1094

    题意:就是求一个树的直径,也就是求任意两点的最大距离. 做法:跑两遍DFS,详见代码. #include<iostream> #include<cstdio> #include ...

  6. 无向图求桥 UVA 796

    ***桥的概念:无向连通图中,如果删除某边后,图变 成不连通,则称该边为桥.*** ***一条边(u,v)是桥,当且仅当(u,v)为树枝边,且 满足dfn(u)<low(v)(前提是其没有重边) ...

  7. 如何将一个JAR包添加到Java应用程序的Boot Classpath中?

    1. 在启动脚本中使用-bootstrap或-Xbootclasspath选项 这两个选项的使用方式如下: -bootstrap选项: java -bootstrap /path/to/your.ja ...

  8. 8. exporter

    一.已经实现的收集器 1.1 可收集的内存指标 1.2 可收集的jetty指标 二.自定义收集 2.1 summer 2.2 histogram 三.架构设计 exporter作为Prometheus ...

  9. linux环境C语言实现:h265与pcm封装成AVI格式

    ​ 前言 不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封 ...

  10. [转帖]JVM系列之:再谈java中的safepoint

    https://zhuanlan.zhihu.com/p/171625395 safepoint是什么 java程序里面有很多很多的java线程,每个java线程又有自己的stack,并且共享了hea ...