64-github

0x01
项目名称:64位加壳框架
功能:可以对64位加壳保护,兼容32位
编译器:vs2019 和 intel XE 2020
编写语言:C++ win32(开发模式:单例模式)
解决方案:一个解决方案,两个项目(“加壳框架”窗口程序和“Stub”动态库)

0x02
需要注意的一些问题:
1、编译64位时,请用intel编译器,intel编译器支持x64内联汇编,如果不想使用intel编译器,那么源码中用到的x64内联汇编就要自行处理掉,或者变换为C/C++,或者使用64位纯汇编,或者使用shellcode来替代。
2、编译Stub.dll时,要编译成发布版(Release),关掉SDL检查,关掉安全检查。想要调试程序,Stub.dll也要编译成发布版,调试时候可以把“加壳框架”中的“Stub"引用去掉,然后把Stub项目移除,”加壳框架“只需要加载Stub.dll的发布版即可。
3、Stub的运行库要和加壳框架的运行库一致。
4、字符集可以使用unicode和多字符集,最好使用unicode,使用多字符集的话有些地方需要改动。
5、支持对发布版的exe加密,不支持调试版的exe加密。

0x03
加壳流程:
外壳引导段放到Stub动态库中,负责加壳的功能模块由加壳框架的Pack类来承担。
其他说明:
这个加壳框架实现了IAT加密,有几个反调试的功能和实现了一个反虚拟的功能。具体参考代码。