问题标签 [ghidra]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
447 浏览

reverse-engineering - Ghidra 地址与作弊引擎不一致(仍需要帮助)

我现在正在练习一些逆向工程,我遇到了一个问题。如果我从 Cheat Engine 复制一个地址,然后想跳到 Ghidra 的同一个地方,我最终会进入一个 veerem 的地方。例如,0x00429D1Fsub [ebx+4],ediCheat Engine 和jge LAB_00 429d2bGhidra 中。我已经听说可以在 Memory Map 窗口中重置基地址并尝试过,但不幸的是它不起作用。此外,Ghidra 中的模式扫描对我不起作用。当我从 Ghidra 的作弊引擎中搜索某种模式的字节时,Ghidra 没有找到该模式,即使它存在。提前感谢您的帮助。

0 投票
0 回答
22 浏览

ghidra - 清除几个功能(带选项)

是否可以在不借助“功能”窗口的脚本的情况下选择和清除多个功能(即右键单击-> 使用选项清除)?目前我只能在列表窗口中一一进行:

清除选项

我想一次性清除明显错误识别/分析的功能,最好直接从“功能”窗口中清除?:

吉德拉功能

如果我不得不求助于脚本,是否有人手边有一个片段?

0 投票
1 回答
426 浏览

msp430 - Ghidra 和 MSP430 反编译器不显示任何功能

我正在试验 Ghidra 并反编译用于 MSP430 FR4133 Launchpad 的代码。我不确定它是否受支持,但 Ghidra 似乎支持 MSP430 设备。

对于一个简单的测试,我在此链接中使用 MSP EXP430FR4133 Launchpad 的示例代码。

此链接包含此目录 MSP-EXP430FR4133_Software_Examples_windows\Firmware\Source\OutOfBox_MSP430FR4133 中的简单源程序。这是一个带有秒表和温度传感器的简单程序。

我决定加载二进制文件夹中的二进制文件。

在此处输入图像描述

然后我选择了 TI MSP430 16-bit,让 Ghidra 做分析。问题是反编译器不提供任何功能。我想知道我是否选择了错误的架构或选项?

在此处输入图像描述

更新 1 我发布了两个额外的图像,它们显示了两个功能,但没有任何意义。

在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
62 浏览

assembly - 如何通过延迟 MOV 操作 [Assembler x86] 覆盖堆栈?

我正在学习如何使用 Ghidra Tool,但我有一个如何解释一个功能的问题。这是简化版:

以这种情况为例:[RBP – 0x40]堆栈的 location 具有以下值:(0xFFFF7710实际上,该值是堆栈中另一个元素的地址……但是对于问题,这无关紧要)。

现在我们将该值的地址存储在寄存器中:

最后,我们执行这两条指令:

堆栈中的最终内容[RBP – 0x40]0xFFFF7720,0x00000020还是0xFFFFFF20?

[RBP – 0x40]是通过最后一个操作覆盖堆栈的所有内容MOV还是仅覆盖最后一个字节?

谢谢。

0 投票
0 回答
33 浏览

assembly - 基于 PE 节标题中的 VirutalAddress 属性的偏移量计算不正确

我用平面汇编器创建了一个简单的 .exe 文件,它实际上什么都不做,只有一条指令

创建后,我在 Ghidra 中打开了可执行文件,它自动将语言检测为PE -> x86:LE:64:default:windows,这对我来说似乎没问题。

现在第一个地址是00400000,根据 MSDN 的 PE 格式(默认 ImageBase),这似乎也很好。

当我现在转到 VirtualAddress 属性时,它应该给我入口函数相对于 ImageBase 的位置,Ghidra 显示以下 4 个字节:00 10 00 00

现在,也许我做的数学不正确,但偏移量计算不应该是: 0x400000 + 0x100000 即0x500000吗?

那么这个偏移量不在我的图像中。当我转到 Ghidra 中的 EntryPoint (主要功能)时,它位于 Offset 0x401000

那么我的数学错了吗?如果我从 VirtualAddress 属性中删除 1 个字节,它正是那个位置,但它只是 3 个字节,但 PE 格式说该属性是 4 个字节。

0 投票
0 回答
76 浏览

ghidra - 为什么 ghidra 跳过一些地址

我有一个这样的。加载 ghidra 并将基地址设置为 0。我发现某些地址已像这样跳过:

在此处输入图像描述

所以是: https ://www.dropbox.com/s/wmea0pcirzopoll/libxxx.so?dl=0

0 投票
0 回答
134 浏览

dependencies - Windows 沙盒依赖项

我正在尝试在 Windows Sandbox 中运行 Ghidra(恶意软件分析软件)。我通过使用 .wsb 文件在沙盒和主机之间创建一个共享目录,将 Ghidra 带到了沙盒环境。当我尝试在沙盒中运行 Ghidra 时,会弹出一个 cmd 提示符,上面写着

未找到 Java 运行时。请参阅 Ghidra 安装指南的故障排除部分。按任意键继续 。. .

Ghidra 依赖于 JDK 11。我尝试将 JDK 11 安装程序带到共享文件夹并在沙盒环境中运行它,但是 Windows 安装程序说

无法打开此安装包。联系应用程序供应商以验证...(已编辑)

似乎其他人在沙盒环境中运行其他应用程序就好了。如何设置要在 Windows Sandbox 中运行的应用程序的依赖项?

0 投票
1 回答
399 浏览

ghidra - 如何更改 Ghidra 中的程序路径

我有一个带有导入二进制文件的 Ghidra 项目,该文件是在计算机 A 上创建的,然后我想将此项目移动到计算机 B。但是,二进制文件的路径与 A 不同。如何更改Ghidra中的路径设置?

已编辑: 错误消息(黑块是计算机 A 中的原始路径。)

0 投票
0 回答
125 浏览

c - 来自 Ghidra 的反编译程序集中的像素转换

我正在反转一个组装函数,我相信它将像素数组(RGB)或光位点(RGGB)转换为最终数组,原始(我认为)编码由每像素 10 位或 12 位组成。我的目标是了解在 c/c++ 操作或自然语言方面在图像格式转换的上下文中发生了什么,并最终以有意义的方式命名变量。

我不明白的操作很少,例如:

在每个样本 10 位的情况下(1 个样本,即 R|G|B):

前两行考虑最强位(>> 0x3f>> 0x1f);但为什么要除以 3 呢?为什么要加最强位?我根本没有得到第 4 行;* -3 * '\n'特别是2U & 0x1f:为什么 31 作为掩码?

在每个样本 12 位的情况下:

& 7将除 3 个最低位之外的所有位归零,但为什么在考虑之前最强位之后呢?

我不明白- uVar5然后的目的*12;这里可能dataSizeBytes不是以字节为单位的数据大小。

>>3是“删除最弱的 2 个位”,但这就是我在这里所理解的。

在这里,我了解了位操作,但我无法提升到更高的水平。

12 位大小写结束。

对于反编译的代码,我提供了这些定义以帮助理解:

undefined* 来自 ghidra,如果我的翻译正确,我还没有检查动态分析。

来自 ghidra 的反编译代码是:(模数重命名和类型定义)

这是原始程序集,但 ghidra 没有抱怨或警告结果。

我可以补充一点,它是适用于 Windows 10 的 AMD64/Intelx64 64 位程序集。

0 投票
2 回答
1215 浏览

debugging - 如何从 ghidra 的相应指令中破解 x64dbg?

我通过ret-sync 同步了 x64dbg 和 ghidra 。我在 ghidra 中发现了一个有趣的点:

在列表视图中;文件my.dll从180000000开始。所以,然后在x64dbg中我为my.dll添加了一个dll中断,当我进入时,我用ctrl+shift+g转到文件偏移量并输入328b4,但我结束了在(第一行):

在 x64dbg 中,文件开始于:00007FF8B2F81000(CPU 选项卡,模块 my.dll,主线程 X,PID Y)。

显然指令是不一样的。(我相信我正确地做了rebase)

我怎样才能使对应的 ghidra -> x64dbg 并在“相同的地方”中断 x64dbg,即相同的指令?