0

我正在研究一个名为 VMProtect 的代码虚拟化解决方案,它创建一个带有虚拟指令集的自定义堆栈机器来混淆代码。我想做的是将每个虚拟机指令处理程序(其中大部分由基于堆栈的操作组成)提升到 LLVM IR,然后应用优化并重新编译。

我将为此使用 llvm 的 IRBuilder。

我的一些问题是:

  1. 如何在 IR 中表示 push/pop
  2. 像这样的处理程序在 IR 中会是什么样子
  mov     rdx, [rbp] ; get virtual stack operand
  add     rbp, 8         ; add to stack pointer
  mov     [rax+rdi], rdx ; move to scratch space

4

0 回答 0