我想使用 Radare2 来了解 C 是如何组装成程序集的,但我在布局方面遇到了问题。我觉得是V!模式将非常方便,因为您可以在指令指针在程序中移动时观察寄存器更新,但我不了解布局。
似乎当我添加一个窗口(如这张照片中的 Stack 或 Registers)时,它出现在屏幕外,我必须尝试关闭不同的窗口和拆分窗口,直到布局合适为止。是否有一种简单的方法可以准确更改每个窗口中的内容?
我知道“X”关闭一个窗口,“z”将当前窗口切换到最前面,“-”/“|” 分割一个窗口。
我曾尝试查看帮助,但似乎无法找出与此问题相关的任何其他命令。
经过几天的努力,我想向社区询问:)
我有两个exe文件。两者大小相同且相当大(约 80MB)。
我设法使用 Cutter (Radare2 GUI) 反编译这些文件,但考虑到文件大小,几乎不可能遍历每一种方法。
使用十六进制编辑器(Hex Fiend),我设法获得应用补丁的每个偏移位置。现在我试图用 Cutter 找到这些偏移量来反编译这些位置。
问题是:如何?当我在 Cutter 中打开 Hexdump 时,似乎一切都未就位,我可能需要偏移。在 Cutter 的加载屏幕上设置偏移量似乎没有做任何事情。难道是我用错了?
例子:
妖魔
Offset Hex Data Text
474942-474956 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)
刀具
Offset Hex Data Text
0x0060713E-0x0060714D 47 65 74 4D 6F 64 75 6C 65 48 61 6E 64 6C 65 41 GetModuleHandleA
Run Code Online (Sandbox Code Playgroud)
474942是0x73F3E,但是距离0x0060713E很远
也许我需要其他工具?任何帮助表示赞赏!
我正在尝试在我的 Windows 计算机上安装 Radare2。如果情况发生变化的话,我确实已经启动并运行了适用于 Linux 的 Windows 子系统。我已经从他们的网站尝试了 git 技术:
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
Run Code Online (Sandbox Code Playgroud)
根据我所做的事情,这会发生奇怪的事情。有一些以 # 符号开头的注释解释了发生了什么。
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
Run Code Online (Sandbox Code Playgroud)
此时,我决定尝试使用 Windows 二进制文件。我转到下载页面并下载了 Windows 二进制文件,然后将其解压到我的 AppData 程序文件夹中。然后我打开该文件夹并双击radare2.exe. 这使得任务栏上出现了一个快速的提示,就像一个窗口试图打开一样,但它也立即关闭了。
此时,我怀疑 Radare2 源代码中的错误导致它几乎立即崩溃。是这样吗?或者我需要做一些不同的事情才能让它运行?
- - -解决了 - - -
我进行了一些实验,包括使用 git clone 方法安装到 Linux 虚拟机。我发现 Windows 二进制文件是实现此目的的方法。要使用它,请解压下载的二进制文件,然后在radare2目录中打开CMD/PowerShell,然后运行bin/radare2.exe或bin/r2.bat. 不过,您需要手动将它们添加到路径中。
我想使用radare2 获得二进制文件(恶意软件)的完整控制流程图。
我从 SO 的另一个问题中关注了这篇文章。我想问是否ag有另一个命令可以提供整个二进制文件的控制流图,而不仅仅是一个函数的图。
我想在radare2中搜索该类型的ASM模式
pop, mov, mov
这是三个连续的指令:第一个以pop开头,第二个以mov开头,第三个也是。
有一个 Radare2 的相关问题(https://github.com/radareorg/radare2/issues/13322),并说“itss alrady在/c中实现”,但/c现在需要搜索加密材料。
我在 Linux 上使用radare2 4.5.0。
我应该使用 GDB 还是 Radare2 来反转可执行文件(我是初学者)?我尝试用 C 编程,但出现了 SegFault。我想对其进行逆向工程以获得装配经验并查看我在哪里获得 SegFault。
我目前正在使用 Radare2 从 PE 文件中提取操作码。目前,我正在尝试使用 API 中的“pd”命令:“pd n @ offset: Print n opcodes disassembled”。我想知道是否有一种方法可以计算/找出我处理的每个文件的“n”到底是什么。谢谢
我对gcc如何编码相对跳跃感到有点困惑.我有以下内容:
int main(void)
{
__asm__ __volatile__(
"jmp label\n"
"label:\n"
"nop\n"
);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
构建this(gcc -c -o test.o test.c)显示以下(objdump -M intel -d test.o):
0000000000000000 <main>:
0: 55 push rbp
1: 48 89 e5 mov rbp,rsp
4: eb 00 jmp 6 <label>
0000000000000006 <label>:
6: 90 nop
...
Run Code Online (Sandbox Code Playgroud)
rasm2 -d eb00显示jmp 2,这意味着正在以2的偏移量执行跳转.现在,我已经理解相对跳跃的偏移量被添加到当前值eip,该值应该指向下一条指令(即nop).这种编码让我觉得偏移是相对于jmp自身的地址.不应该jmp被编码为jmp 0,因为nop已经在label?
radare2 ×8
disassembly ×4
assembly ×3
debugging ×1
decompiler ×1
gdb ×1
ghidra ×1
hexdump ×1
objdump ×1
windows-subsystem-for-linux ×1
x86 ×1
x86-64 ×1