LyScriptTools 反汇编类API接口手册
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接口手册的更多相关文章
- ionic 访问odoo11之具体业务类api接口
在前面测试通过odoo登录的功能,这次的问题重点是如何访问后台具体的业务类的接口呢?这次就以我们在odoo中安装的lunch模块为例,目标是获取lunch.alert的数据,如下图 具体过程接上次文章 ...
- onps栈使用说明(1)——API接口手册
1. 底层API 由协议栈底层提供的api,用于涉及底层操作的一些功能实现,这些api接口函数的原型定义分布于不同的文件,它们被统一include进了onps.h中: open_npstack_loa ...
- Http下的各种操作类.WebApi系列~通过HttpClient来调用Web Api接口
1.WebApi系列~通过HttpClient来调用Web Api接口 http://www.cnblogs.com/lori/p/4045413.html HttpClient使用详解(java版本 ...
- Java8新特性(三)——Optional类、接口方法与新时间日期API
一.Optional容器类 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. 查看结构图可以看到有如下常用方法: of(T)—— ...
- C# 请求Web Api 接口,返回的json数据直接反序列化为实体类
须要的引用的dll类: Newtonsoft.Json.dll.System.Net.Http.dll.System.Net.Http.Formatting.dll Web Api接口为GET形式: ...
- Google地图接口API之Google地图 API 参考手册(七)
Google 地图API 参考手册 地图 构造函数/对象 描述 Map() 在指定的 HTML 容器中创建新的地图,该容器通常是一个DIV元素. 叠加层 构造函数/对象 描述 Marker 创建一个标 ...
- 微服务手册:API接口9个生命节点,构建全生命周期管理
互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习. 对于API,在日常的工作中是接触最多的东西,特别是我们软件这一行,基本就是家常便饭了,在百度百 ...
- F5 api接口开发实战手册(二)
F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)
环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试
环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...
随机推荐
- 销售订单BAPI增强
一.需求背景 在销售订单批导时,需要调用BAPI:BAPI_SALESORDER_CREATEFROMDAT2维护成本中心字段, 二.增强实现 BAPI中没有该字段,需要通过增强的方式导入.通过BAP ...
- 在 macOS 通过 SSH 访问 Windows 的 WSL2 Ubuntu
配置 Windows 和 WSL2,使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu. 一.Win10 安装 WSL2 Ubuntu 注意,是安装 WSL2,方法参考这个 WSL2 配置 C ...
- Excel的列数如何用数字表示?
本文介绍在Excel表格文件中,用数字而非字母来表示列号的方法. 在日常生活.工作中,我们不免经常使用各种.各类Excel表格文件:而在Excel表格文件中,微软Office是默认用数字表示行 ...
- RPC与Http的区别
一.远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Pro ...
- 机器学习-线性分类-SVM支持向量机算法-12
目录 1. 铺垫 感知器算法模型 2. SVM 算法思想 3. 硬分割SVM总结 支持向量机(Support Vector Machine, SVM)本身是一个二元分类算法,是对感知器算法模型的一种扩 ...
- 13个构建RESTful API的最佳实践
前言 Facebook.GitHub.Google和其他许多巨头都需要一种方法来服务和消费数据.在今天的开发环境中,RESTful API仍然是服务和消费数据的最佳选择之一. 但你是否考虑过学习行业标 ...
- React技巧之设置input值
原文链接:https://bobbyhadz.com/blog/react-set-input-value-on-button-click 作者:Borislav Hadzhiev 正文从这开始~ 总 ...
- 【scikit-learn基础】--『回归模型评估』之误差分析
模型评估在统计学和机器学习中具有至关重要,它帮助我们主要目标是量化模型预测新数据的能力. 在这个数据充斥的时代,没有评估的模型就如同盲人摸象,可能带来误导和误判.模型评估不仅是一种方法,更是一种保障, ...
- VSCODE中GIT配置
1.问题:无法正常提交 问题描述 *使用vscode提交就会一直卡住**. 参考方案链接:VS CODE GIT 500 问题处理-pudn.com 根据这位博主的描述,应当是设置的这里选择的默认选项 ...
- 【js】 Object.prototype.toString.call()
1,Object.prototype.toString这个方法的作用是什么 判断数据类型 2,为什么要用这个方法 是因为 js 中 一般的类型判断 对于 null,数组,对象 , 都会返回一样的结 ...