羽夏壳世界——实现篇

写在前面

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

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

简述

  既然是实现篇了,我就再提一提与本教程配套的代码:

  注意,本教程并不会从零开始教你利用PE结构的知识写一个壳,但我会告诉你我是怎样做的。在开始进入下一篇实现篇正题,我们需要准备一下工具:VS2022(根据你自己喜欢的IDE来,我会使用它作为开发环境)、ASMJIT编译好的开发包,其他的就没啥了。
  ASMJIT是一个生成机器码的C++库,也就是所谓的汇编,它的 GitHub 地址在此,点击即可到它的源码仓库。在开发之前建议看它的 文档 ,不过看起来比较难受,很多功能我并没有看懂多少,不过看懂如何生成汇编并导出十六进制数据就足够了。如果你对ASMJIT的提供的函数使用有疑问,不要问我,我也不会。
  编译ASMJIT对于某些小白可能又是一个新问题,尤其是严重依赖VS的。但是,这个项目有CMakeLists.txt,说明我们可以用CMake将该项目转为VS项目,然后进行编译。至于怎么转成VS项目,怎么编译成功并使用,这个并不是我们实现篇的关注点。
  由于静态库我编译成功但无法让使用它的项目编译成功,故使用了动态链接库的方式进行使用。在托管平台上我提供的代码并没有该DLL,故需要自行编译该动态链接库,然后拷贝到调试目录下,才能够正常运行。
  如下是我的代码实现的一个节区的内存结构,如果感兴趣的话可以自行研究,后面的教程将会介绍每一处的实现细节:

IMAGE_IMPORT_DESCRIPTOR
IMAGE_IMPORT_DESCRIPTOR
IMAGE_THUNK_DATA
IMAGE_THUNK_DATA
IMAGE_THUNK_DATA
IMAGE_IMPORT_BY_NAME
IMAGE_IMPORT_BY_NAME
"Kernel32.dll"
IAT Functions Table
Import Dll's Function Count Table
Buffer of Import Dll Names
Import FuctionNames Table
FirstThunk RVA Table
ShellCode For IAT
ShellCode For IAT Dispatch
TLS Buffer
TLS Buffer Shadow
ShellCode For TLS
ShellCode For TLS Dispatcher
Relocation Table For TLS
Compressed Data Field
ShellCode For Decompression
ShellCode For Loading
GetProcAddress
LoadLibraryA
Kernel32.dll
GetLastError
OpenProcess
CloseHandle
ExitThread
……
27
9
5
36
……
VCRUNTIME140D.dll\0KERNEL32.dll\0……
GetLastError\0OpenProcess\0……
0x20150
0x201F8
0x20D38
0x20EE0
……
OEP (.wing)
Decompress Code Section
XOR-Decode Code Section
Decrypt IAT
Enable TLS Dispatch
Running
ASM
ASM
ASM
0x1601200
0x1608E00
0x1615200
0x161E800
……
0
0
0
0
……
ASM
IMAGE_BASE_RELOCATION
IMAGE_BASE_RELOCATION
Compressed Binary Data
ASM
ASM
WingSection Memory Layout
By. WingSummer (寂静的羽夏)

  有关实现篇的注意事项大概就这么多,下一篇就正式进入实现篇正题。

下一篇

  羽夏壳世界—— PE 解析的实现

posted @   寂静的羽夏  阅读(221)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示