羽夏壳世界——花指令的实现

写在前面

  此系列是本人一个字一个字码出来的,包括代码实现和效果截图。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我

你如果是从中间插过来看的,请仔细阅读 羽夏壳世界——序 ,方便学习本教程。

花指令原理

  在学习指令的原理之前,我建议你学一下硬编码,相关博文可以参考 羽夏笔记——硬编码(32位) 或者官方的 Intel白皮书。
  花指令的原理十分简单,本篇可能是我写过最短的文章。花指令无非就是干扰人的视线以及静态分析器的,在英文为JunkCode,即垃圾代码,下面我以32位为例,写一个示例看看:

  这是啥,什么乱七八糟的,看不明白,如果我执行完跳转之后,代码就成这样了:

  这会就可以明显的看清楚它的真面目了,就是传参调用puts函数。我们可以用nop指令清楚干扰视线的花指令,会和正常阅读代码差不多了。

花指令的实现

  上面的例子已经把花指令的原理和简单的实现都给介绍了,下面我们来看看该项目代码的花指令相关代码:

#define FakeProtect(a) a.embed(WingProtectFakeCode, SizeofWingProtectFakeCode);

#define WingProtectFakeCode "\xEB\xCWingProtect\xEB"

  别看这是一条简单的字符串内联宏,用起来可是相当的恶心人,如下是效果:

  上面的代码就是调用了一个简单的Sleep函数,它的真实面目如下图所示:

  有关花指令的实现,就到此结束了。

下一篇

  羽夏壳世界——实现篇小结

posted @ 2022-04-12 10:55  寂静的羽夏  阅读(216)  评论(0编辑  收藏  举报