美文网首页
MFC_PEShell

MFC_PEShell

作者: MagicalGuy | 来源:发表于2018-10-11 00:21 被阅读0次

windowos PE文件壳

实现功能:
1、能够向目标程序添加代码
2、加密压缩代码段
3、能够运行
4、密码弹框

附加功能:
1、修复重定位
2、加密压缩
4、花指令,混淆
5、反调试,动态非对称加密

加壳后的程序:
1保存寄存器环境
2初始化壳需要的一些函数
3解压和解密代码和数据
4修复 IAT
5修复重定位
6恢复寄存器环境
7跳转到原始 OEP

image.png

加壳大概流程:
1、读取被加壳程序,分析PE信息
2、将被加壳程序的NT头拷贝到stub中
3、加密代码段
4、将被加壳程序的OEP设置到新区段的stub入口函数中
(去处被加壳程序的重定位属性)
5、拷贝之前需要修复stub的重定位数据
6、拷贝stub.dll的代码段到被加壳程序的新区段中
7、压缩
8、保存

压缩流程:
获取.TEXT段属性和缓冲区
利用文件偏移和文件大小获取到缓冲区
aplib函数求压缩大小并开辟缓冲区
aplib进行压缩
压缩后存入目标缓冲区,并进行文件对齐
修改文件大小和text区段文件大小、其他区段PointtoRawData
释放掉多余的缓冲区

image.png

重定位:
在生成程序的时候,很多涉及到地址的代码,都使用一个绝对的虚拟内存地址(这个虚拟内存地址是假设程序加载到0x400000的地方时才能够使用的),但是当程序的加载基址产生变化的时候,新的加载基址和默认的加载基址就不一样了,那些涉及到地址的代码就不能运行了,此时就需要将那些涉及到地址的代码,把他们的操作数修改(去掉默认加载基址,再加上新的加载基址)才能够使程序运行起来.
新的加载基址-默认加载基址+指令中的操作数指针字节数

后续工作:
1、调试好随机基址重定位问题
2、调试好TLS处理问题
3、加密IAT,修复IAT
4、增加边运行边解密,运行完加密
5、实现全部区段压缩加密

image.png image.png image.png image.png

输入正确密码便能正常执行

项目请见于:https://github.com/MagicalGuy

相关文章

  • MFC_PEShell

    windowos PE文件壳 实现功能:1、能够向目标程序添加代码2、加密压缩代码段3、能够运行4、密码弹框 附加...

网友评论

      本文标题:MFC_PEShell

      本文链接:https://www.haomeiwen.com/subject/xheyaftx.html