壳的加载过程

  • 保存入口参数
  • 获取壳自己所需要使用的API地址
  • 解密原程序各个区块的数据
  • IAT的初始化
  • 重定位项的处理
  • HOOK-API
  • 跳到程序原入口点(OEP)

保存入口参数
    加壳程序初始化时保存各个寄存器的值,外壳程序执行完毕,再恢复各个寄存器的值,通常用pushad/popad,pushfd/popfd指令来对保护与恢复现场环境
获取壳自己所需要使用的API地址
    一般外壳的输入表主要是GetProcAddress,GetModuleHandle和LoadLibrary这几个API函数
    LoadLibrary:将DLL文件映像映射到调用进程的地址空间中
    GetModuleHandle:获得DLL模块的句柄
    GetProcAddress:获得函数的地址
解密原程序各个区块的数据
    按照区块加密按照区块解密
IAT的初始化
    加壳时,壳会自己构造一个输入表,并将PE头中的输入表指针指向自建的输入表。PE装载器对自建的输入表进行填写,原来的输入表由壳来填写。
    壳将新输入表结构从头到尾扫描一遍,对每一个DLL引入的所有函数获取地址,填入IAT表中
重定位项的处理
    加壳的DLL比加壳的EXE修正时多一个重定位表
HOOK-API
    壳一般都修改了原程序的输入表,自己模仿装载器来填充输入表。在填充过程中,外壳就可以填充HOOK-API的代码地址,间接获得程序的控制权
跳到程序原入口点(OEP)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值