debugging - 如何从ghidra的相应指令中打入x64dbg?

标签 debugging assembly breakpoints ghidra x64dbg

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

1800382b1   4d 8b e0      MOV              R12,rebitData
1800382b4   48 63 f2      MOVSXD           packetSize_,packetSize

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

00007FF8B2FB32B4 | 06                       | ???             
00007FF8B2FB32B5 | E9 80000000              | jmp my.7FF8B2FB333A    
00007FF8B2FB32BA | 45:8BC6                  | mov r8d,r14d        
00007FF8B2FB32BD | EB 7B                    | jmp my.7FF8B2FB333A   
00007FF8B2FB32BF | 3BFB                     | cmp edi,ebx 
00007FF8B2FB32C1 | 73 22                    | jae my.7FF8B2FB32E5 
00007FF8B2FB32C3 | 41:3BDB                  | cmp ebx,r11d 
00007FF8B2FB32C6 | 76 18                    | jbe my.7FF8B2FB32E0 

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

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

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

最佳答案

但是,这不适用于在发布中构建的 ret-sync,仅适用于调试版本。 This is a bug .

  • 对于手动rebase+jump,从x64dbg可以在x64dbg计算器的表达式中输入偏移量(当前偏移量-基偏移量),并询问在反汇编程序中 直接跳转到偏移量。可以计算执行 rebase 或更复杂函数的表达式(例如,offset + sizeof X * Ntimes)。

  • 如果已知最终偏移量,则在 x64dbg 中跳转到所需偏移量的另一种方法是 ctrl+shift+g(转到文件偏移量),如果所需的模块在 CPU 反汇编中。如果不是,则需要转至符号,在 CPU 反汇编中跟随感兴趣的模块,然后转至文件偏移量

关于debugging - 如何从ghidra的相应指令中打入x64dbg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65768385/

相关文章:

c++ - 如何调试堆损坏错误?

debugging - boost 测试 : how to debug tested code?

debugging - 如何禁用 F12 在 Visual Studio 2012 中调试应用程序

string - 在汇编中定义字符串常量的语法是什么?

css - 如何为响应式 CSS 找出合适的最小宽度和最大宽度值?

debugging - 断点是否无法在DartEditor中正常工作?

c++ - 在循环条件 : why is strlen() called every time, 中,但 vector.size() 只被调用一次?

c++ - 如何检查CPUID(EAX=14H,ECX=0)?

java - Eclipse + Spring Boot 中 "throw new SilentExitException()"处的断点

xcode - 在任何控制台输出上使 XCode 中断