当前位置: 首页 > news >正文

windows 加壳工具代码实现01 - 整体项目流程梳理

目录

流程初始化总结

加壳阶段(用户使用加壳器时)

运行阶段(加壳后的程序被执行时)

一句话总结三者的关系

Stub 壳代码

Stub 壳代码

加壳器


流程初始化总结

加壳阶段(用户使用加壳器时)

  1. 12.GrkProDlg.cpp→ 用户点击“文件加壳”按钮 → 调用 Pack(m_ExeFilePath, 0x45)

  2. Pack.cpp 中的 Pack() 函数(核心调度者)

    1. 调用 InitPE() 初始化 PE 信息

    2. 调用 XorCode() 对原程序代码段加密

    3. LoadLibrary(L"Stub.dll") 加载壳模板

    4. 把关键参数(ImageBase、OEP、加密密钥、加密起始地址等)填入 g_stcParam

    5. 提取 Stub.dll 的代码段内容

    6. 调用 FixReloc() 修复壳代码的重定位

    7. 调用 AddSection() 把壳代码写入目标文件新增的区段

    8. 修改 PE 头中的入口点(OEP)指向壳代码

    9. 生成新的加壳文件 xxx_GrkPatk.exe

  • 注意

    • 此时 Stub.dll只是被用来当“代码模板”,并不是让它运行,而是把它的机器码扣出来用。

运行阶段(加壳后的程序被执行时)

  1. 用户运行加壳后的 xxx_GrkPatk.exe

  2. 系统根据修改后的AddressOfEntryPoint,直接跳转到新区段的 Start() 函数(来自 Stub.cpp)

  3. 执行 Stub.cpp 中的 Start():

    1. 动态解析各种 API(LoadLibraryA、VirtualProtect、MessageBoxA 等)

    2. 弹出 “是否解密打开原有程序” 对话框

    3. 用户点“是”后:

      • 对之前被加密的代码段进行异或解密

      • 修改内存保护属性

      • 跳转到原始程序的 OEP

  4. 原程序正常启动运行


一句话总结三者的关系

  • 12.GrkProDlg.cpp界面,用户操作入口,负责调用加壳功能。

  • Stub.cpp壳的灵魂,定义了加壳后程序启动时要执行的保护代码,最终被打包进目标 exe。

  • Stub.dll壳的载体/模板,Pack.cpp 通过加载它来“复制”壳代码,然后注入到被加壳的程序中。

  • 调用逻辑链条界面 (12.GrkProDlg.cpp) → Pack() 函数 → 加载 Stub.dll → 提取 Stub.cpp 编译后的机器码 → 注入目标程序

Stub 壳代码

  • 壳代码解密跳转到原始程序的OEP程序入口点中

    • Stub.h 壳代码头文件生成全局变量并且生成提供给壳的cpp文件使用

    • Stub.cpp 壳代码生成全局结构变量

    • Stub.cpp 壳代码生成对应的函数 Getkernel32.dll GEtProcAddress xor 等函数

    • Stub.cpp Start初始化函数

    • 将生成的Stub.cpp放入到壳代码中

Stub 壳代码

  • MFC 功能按钮增加

  • 加壳器

  • 加壳器主要功能就是加加密壳的功能给原始程序代码块区段进行加密操作

  • 加壳器也就是对PE结构进行代码块的加密操作

    • 初始化PE结构

    • 异或加密 --- > 壳代码加密

    • 获取区段数据

    • 清空绑定导入表

    • 修复重定位

    • 新增区段

    • 加壳打包函数

http://www.cnnetsun.cn/news/3374622.html

相关文章:

  • 从OpenMV到STM32:激光追踪系统中的视觉识别与PID控制实战解析
  • 终极指南:如何安全免费解锁WeMod完整功能
  • 【目标检测算法】Fast R-CNN:从RoI Pooling到多任务损失的端到端优化
  • 终极Dism++系统优化工具:让Windows运行如新的完整指南
  • c++口算题本
  • MetaWRAP终极指南:简单快速的宏基因组数据分析完整解决方案
  • vRain:解决古籍数字化痛点的专业直排电子书解决方案
  • 如何使用Prisma tRPC Generator实现多租户与软删除功能
  • Vitedge开发环境搭建终极指南:HMR支持与热重载技巧详解
  • 小程序计算机毕设之成人网课资源管理与在线学习平台设计 基于 Android 的终身教育资源服务系统(完整前后端 代码+说明文档+LW,调试定制等)
  • 【信息科学与工程学】计算机科学与自动化——第四五十一篇 数据仓库设计00
  • 摔跤跌倒检测数据集-9,354 张图片 体育安全监测系统 智能运动防护设备 老年人跌倒监护 工业安全监控 智能体育教学 医疗康复辅助
  • ComfyUI深度解析:如何构建最强大的AI内容创作工作流
  • 三分钟掌握ytDownloader:你的全网视频下载全能助手
  • APKMirror客户端:从零开始构建你的Android应用探索工具
  • Real-ESRGAN x4plus Anime 6B常见问题解答:从安装错误到图像 artifacts 解决方案
  • 3个Mac游戏痛点与Xbox One手柄原生驱动终极解决方案
  • 如何用ModTheSpire在5分钟内为《杀戮尖塔》开启无限可能?
  • bokeh-notebooks部署指南:将交互式图表嵌入Web应用的3种方法
  • 免费AI虚拟背景:obs-backgroundremoval终极使用指南
  • OpenCore Legacy Patcher完整指南:5步让你的老Mac重获新生
  • Vitedge缓存策略全攻略:Cloudflare Workers环境下的性能优化终极指南
  • 揭秘Wand-Enhancer:如何通过3大核心技术彻底释放游戏修改器潜能
  • 解密OpCore Simplify:黑苹果EFI配置的智能自动化革命
  • 深度解析现代应用增强框架:Wand-Enhancer核心技术揭秘与实战指南
  • 第五人格一键登录工具:告别繁琐扫码,三秒进入游戏
  • Windows 11一键瘦身指南:如何用Win11Debloat提升51%系统性能
  • 抖音下载终极指南:免费批量下载与去水印秘籍宝典
  • 实战指南:5分钟快速配置Turing智能显示屏Python系统监控项目
  • OpCore-Simplify:终极智能一键配置,彻底告别Hackintosh配置噩梦