windbg:如何确定汇编语言指令或指令集的操作码

逆向工程 风袋
2021-07-05 23:05:14

我正在处理一项使用 rop 链执行漏洞利用的任务。虽然我了解 rop 背后的基础知识,但我不知道如何转换指令,例如

xchg eax, esp; retn;

到他们的操作码。

我尝试使用:

0:005> a
input> xchg eax,esp

但是给出的地址只是指向我的程序中一种完全不同的指令。我相信这是一个添加命令。

2个回答

RTA是一种易于使用的工具,允许您输入操作码或助记符,并将它们从一种转换为另一种。

在下面的示例中,我在右侧输入XCHG EAX,ESPRETN,RTA 生成94C3在左侧:

RTA

另一方面,如果您真的想使用 WinDbg,则需要执行以下操作:

  1. 将目标加载到 WinDbg
  2. 键入aEnter进入输入模式
  3. 键入您的助记符(例如,xchg eax,esp),Enter
  4. 再按Enter一次退出输入模式
  5. 键入u,Enter以显示您刚刚组装的拆解

请参阅下面的示例:

0:000> a
778e05a6 xchg eax,esp
xchg eax,esp
778e05a7 

0:000> u
ntdll!LdrVerifyImageMatchesChecksum+0x633:
778e05a6 94              xchg    eax,esp

您可以使用汇编程序。或者像这样的在线汇编程序 或者你可以使用 Ida 的 Edit-->Patch program-->Assemble submenu 如果你使用 Ida。