羽夏壳世界——实现篇
写在前面
此系列是本人一个字一个字码出来的,包括代码实现和效果截图。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。
你如果是从中间插过来看的,请仔细阅读 羽夏壳世界——序 ,方便学习本教程。
简述
既然是实现篇了,我就再提一提与本教程配套的代码:
托管平台 | 链接 |
---|---|
https://gitee.com/wingsummer/WingProtect | |
https://github.com/Wing-summer/WingProtecter |
注意,本教程并不会从零开始教你利用PE
结构的知识写一个壳,但我会告诉你我是怎样做的。在开始进入下一篇实现篇正题,我们需要准备一下工具:VS2022
(根据你自己喜欢的IDE
来,我会使用它作为开发环境)、ASMJIT
编译好的开发包,其他的就没啥了。
ASMJIT
是一个生成机器码的C++
库,也就是所谓的汇编,它的 GitHub 地址在此,点击即可到它的源码仓库。在开发之前建议看它的 文档 ,不过看起来比较难受,很多功能我并没有看懂多少,不过看懂如何生成汇编并导出十六进制数据就足够了。如果你对ASMJIT
的提供的函数使用有疑问,不要问我,我也不会。
编译ASMJIT
对于某些小白可能又是一个新问题,尤其是严重依赖VS
的。但是,这个项目有CMakeLists.txt
,说明我们可以用CMake
将该项目转为VS
项目,然后进行编译。至于怎么转成VS
项目,怎么编译成功并使用,这个并不是我们实现篇的关注点。
由于静态库我编译成功但无法让使用它的项目编译成功,故使用了动态链接库的方式进行使用。在托管平台上我提供的代码并没有该DLL
,故需要自行编译该动态链接库,然后拷贝到调试目录下,才能够正常运行。
如下是我的代码实现的一个节区的内存结构,如果感兴趣的话可以自行研究,后面的教程将会介绍每一处的实现细节:
有关实现篇的注意事项大概就这么多,下一篇就正式进入实现篇正题。
下一篇
本文来自博客园,作者:寂静的羽夏 ,一个热爱计算机技术的菜鸟
转载请注明原文链接:https://www.cnblogs.com/wingsummer/p/16126859.html