0

例如,考虑以下代码:

call far ptr 90b6h:79c35c2eh
shl dword ptr [ebp+0fh],1
db 67h
daa
push eax
push cs

这个代码块是如何在 C 编程中生成的?我怎样才能去混淆该代码?

4

1 回答 1

5

它不是混淆的 C 代码。如果这来自 C 程序,则它是来自一行左右 C 代码的几行汇编程序。

一旦分解为汇编程序,就很难走另一条路,尤其是在自动化的基础上。虽然您可以获得一些可以按照这些方式执行某些操作的工具,但结果不会是原始 C 代码,而是执行相同操作的不同代码。结果仍然看起来很模糊。

  1. 编译:将高级语言转换为目标代码,可能还剩下中间汇编程序。
  2. 反汇编:汇编源代码的目标代码。这可以通过一些程序或调试器来完成。
  3. 反编译:将编译后的目标代码转换回原始源语言。

您所拥有的是 1 或 2 的汇编器输出。您似乎要的是 3。

于 2011-09-21T01:17:37.213 回答