【发布时间】:2021-04-22 09:19:31
【问题描述】:
我通过ret-sync 同步了 x64dbg 和 ghidra。我在 ghidra 中发现了一个有趣的点:
1800382b1 4d 8b e0 MOV R12,rebitData
1800382b4 48 63 f2 MOVSXD packetSize_,packetSize
在列表视图中; 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)。
显然说明是不一样的。 (我相信我正确地做了变基)
我怎样才能使对应的 ghidra -> x64dbg 并在“相同的地方”(即相同的指令)中断 x64dbg?
【问题讨论】:
-
这个问题也可能更适合 RE 堆栈交换,但你已经知道了,所以我假设你是故意把它贴在这里的?
-
@FlorianMagin 是的,我知道。但是在这里调试与反转的选择是任意的,因此我选择使其更通用并选择调试,这在 SO 上更好。我认识到 ghidra 的使用可能会强烈建议反转或最终分析。
-
啊,很好的推理,并且更清楚地说明了您的问题的重点是什么。我同意如果重点放在一般调试方面,那么 SO 可能更适合。
标签: debugging assembly breakpoints ghidra x64dbg