Ghidra comment add script

init

# -*- coding: utf-8 -*-
import re
from ghidra.program.model.listing import CodeUnit# 获取当前程序和指令迭代器
program = getCurrentProgram()
listing = program.getListing()
instructionIterator = listing.getInstructions(True)# 用于存储唯一的指令类型和操作数类型的集合
instruction_set = set()
operand_set = set()# 定义一个正则表达式来匹配基本操作数类型
operand_pattern = re.compile(r'([A-Za-z]+)')# 遍历所有指令
while instructionIterator.hasNext():instr = instructionIterator.next()mnemonic = instr.getMnemonicString()# 添加指令到集合中instruction_set.add(mnemonic)# 添加操作数到集合中for i in range(instr.getNumOperands()):operand = instr.getDefaultOperandRepresentation(i)match = operand_pattern.match(operand) if match: basic_operand = match.group(1) operand_set.add(basic_operand) # 输出指令类型 
print("\nInstruction types:") 
for instr in sorted(instruction_set): print(instr) # 输出操作数类型 
print("\nOperand types:") 
for operand in sorted(operand_set): print(operand) # 输出脚本完成信息 
print("Script finished!") 

add

 # -*- coding: utf-8 -*-
from ghidra.program.model.listing import CodeUnit
from ghidra.util import Msg# 操作数描述字典
operand_descriptions = {"EBP": u"基指针寄存器","ESP": u"栈指针寄存器"...
}# 指令描述字典
instruction_descriptions = {"PUSH": u"将 {} 入栈","POP": u"将栈顶数据弹出到 {}",...
}# 配置注释类型:EOL, PRE, POST, REPEATABLE, PLATE
COMMENT_TYPE = CodeUnit.EOL_COMMENT  # 可以修改为 CodeUnit.PRE_COMMENT 等# 获取当前程序和指令迭代器
program = getCurrentProgram()
listing = program.getListing()
instructionIterator = listing.getInstructions(True)# 遍历所有指令 
while instructionIterator.hasNext(): instr = instructionIterator.next() mnemonic = instr.getMnemonicString() # 检查并添加指令注释 if mnemonic in instruction_descriptions: operands = [instr.getDefaultOperandRepresentation(i) for i in range(instr.getNumOperands())]description_operands = [operand_descriptions.get(op, op) for op in operands]CommentGenerate = instruction_descriptions[mnemonic].format(*description_operands)# 将注释拆分为多行 CommentGenerate_lines = CommentGenerate.split(", ")formatted_CommentGenerate = "\n".join(CommentGenerate_lines)instr.setComment(COMMENT_TYPE, formatted_CommentGenerate)Msg.info(None, "Added CommentGenerate to {} instruction at {}".format(mnemonic, instr.getAddress()))# 输出脚本完成信息 
Msg.info(None, "Script finished!") 

clean

# -*- coding: utf-8 -*-
from ghidra.program.model.listing import CodeUnit
from ghidra.util import Msg# 获取当前程序和指令迭代器
program = getCurrentProgram()
listing = program.getListing()
instructionIterator = listing.getInstructions(True)# 注释类型列表
comment_types = [CodeUnit.EOL_COMMENT,CodeUnit.PRE_COMMENT,CodeUnit.POST_COMMENT,CodeUnit.REPEATABLE_COMMENT,CodeUnit.PLATE_COMMENT
]# 遍历所有指令并清理注释
while instructionIterator.hasNext():instr = instructionIterator.next()for comment_type in comment_types:if instr.getComment(comment_type) is not None:instr.setComment(comment_type, None)Msg.info(None, "Cleared comment of type {} at {}".format(comment_type, instr.getAddress()))# 输出脚本完成信息
Msg.info(None, "Script finished!")

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL修改最大连接数

在使用PostgreSQL 的时候,经常会遇到这样的错误提示, sorry, too many clients already,这是因为默认PostgreSQL最大连接数是 100, 一般情况下,个人使用时足够的,但是在生产环境,这个连接数是远远不够的&am…

python机器学习5 数据容器

Python中有几个数据容器如下: List,数组,如同Array数组。 Dictionarie,字典,可以通过文字来访问数据。 Sets,序列集,做数学交集、并集等计算时使用。 Tuple,序列&#xff0c…

回归求助 教程分享

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 217/10000 抱个拳,送个礼 更多内容,见微*公号往期文章:通透!!十大回…

NFT如何解决音乐版权的问题

音乐版权问题一直困扰着音乐产业。传统的音乐版权管理模式存在以下问题。需要注意的是,NFT在音乐版权领域仍处于早期发展阶段,存在一些需要解决的问题,例如技术标准不统一、应用场景有限、法律法规不明朗等。但随着技术的进步和市场的完善&am…

【Dison夏令营 Day 18】如何用 Python 中的 Pygame 制作国际象棋游戏

对于 Python 中级程序员来说,国际象棋游戏是一个很酷的项目创意。在熟练使用类的同时,它也是制作图形用户界面应用程序的良好练习。在本教程中,您将学习到 使用 pygame 的基础知识。 学习如何使用 Python 类编码一个国际象棋游戏。 安装和设…

33.异步FIFO IP核的配置、调用与仿真

(1)异步FIFO的配置过程: ps:异步fifo相比较同步fifo少一个实际深度 (2)异步FIFO的调用: module dcfifo (input wr_clk ,input rd_clk ,input [7:0] …

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

防火墙NAT和智能选路实验详解(华为)

目录 实验概述实验拓扑实验要求要求一要求二要求三要求四要求五 实验概述 从我上面一个博客能够了解到NAT和防火墙选路原理 ——>防火墙nat和智能选路,这一章我通过实验来详解防火墙关于nat和智能选路从而能熟练使用和配置防火墙,这里使用的是华为US…

《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

期刊:TPAMI 年份:2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文,即单个图像中像素之间的依赖关系。然而&…

Dify中高质量索引模式时,通过线程池处理chunk过程

本文主要介绍了Dify中高质量索引模式时,如何通过线程池执行器来处理chunk的过程。源码位置:dify\api\core\indexing_runner.py\IndexingRunner._load。核心思想:假设一个数据集中有一个文档,该文档可以拆分为12个段(segment)。如果chunk_size=10,那么分为2批提交给线程池…

Mojo语言的运用

1.Mojo语言概述 1.1什么是Mojo语言? Mojo语言是一种现代的动态编程语言,主要用于Web开发。它结合了多种语言的优点,如JavaScript、Perl和Lua,旨在为开发者提供: 简洁的语法:易于学习和使用,适…

Azcopy Sync同步Azure文件共享

Azcopy Sync同步Azure文件共享 一、工作原理二、安装 AzCopy在 Windows 上在 Linux 上 三、资源准备1. 创建源和目标 Azure 存储账户2. 创建源和目标文件共享3. 确定路径4. 生成源和目的存储账户的共享访问签名(SAS)令牌配置权限示例生成的 URL 四、Azco…

【鸿蒙学习笔记】尺寸设置・width・height・size・margin・padding・

官方文档:尺寸设置 目录标题 width:设置组件自身的宽度height:设置组件自身的高度size:设置高宽尺寸margin:设置组件的外边距padding:设置组件的内边距 width:设置组件自身的宽度 参数为Length…

【Linux杂货铺】3.程序地址空间

1.程序地址空间的引入 fork(&#xff09;函数在调用的时候子如果是子进程则返回0&#xff0c;如果是父进程则返回子进程的pid&#xff0c;在代码中我们分别在子进程和父进程读取全局变量g_val的时候居然出现了俩个不同的值。如下&#xff1a; #include<stdio.h> #includ…

【Linux】软件管理工具 yum

文章目录 概念搜索&#xff1a;yum list安装&#xff1a;yum install卸载&#xff1a;yum remove 概念 在Linux下安装软件&#xff0c;可以下载到程序的源代码&#xff0c;进行编译得到可执行程序&#xff0c;另外这些软件还有依赖其它工具的问题&#xff0c;还得下载编译这些依…

底软驱动 | Linux字符设备驱动开发基础

文章目录 知识整理--Linux字符设备驱动开发基础字符设备基础1从一个最简单的模块源码说起字符设备驱动工作原理字符设备驱动代码实践--给空模块添加驱动壳子应用程序如何调用驱动 字符设备基础2添加读写接口&#xff08;应用和驱动之间的数据交换&#xff09;驱动中如何操控硬件…

WIFI连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下&#xff0c;如何使用阿里云物联网平台&#xff0c;创建一个简单的远程控制小灯示例。 1 实现功能…

整洁架构SOLID-里氏替换原则(LSP)

文章目录 定义LSP继承实践正例反例 LSP软件架构实践反例 小结 定义 1988年&#xff0c;Barbara Liskov在描述如何定义子类型时写下了这样一段话&#xff1a; 这里需要的是一种可替换性&#xff1a;如果对于每个类型是S的对象o1都存在一个类型为T的对象o2&#xff0c;能使操作T…

Meta MobileLLM

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

鸿蒙开发—基础组件

目录 安装介绍 1.Text 2.Image 3.Button 4.Slider 安装介绍 该文章介绍鸿蒙开发中的部分基础组件&#xff0c;适用于鸿蒙开发的初学者。 1.软件下载地址&#xff1a;DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 (huawei.com) 2.安装DevEco Studio&#xff1a;…