shellcode加载及加壳方法演示
c++
-
常规加载shellcode
-
导入表混淆加载shellcode
-
先申请可读写再修改内存属性加载shellcode
-
shellcode转换
- MAC地址
- UUID
- XOR
go
- 常规加载shellcode
- base64编码后加载shellcode
python
- AES加密后加载shellcode
- base64编码后加载shellcode
加壳
介绍
壳就是软件所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序。
加壳工具通常分为压缩壳和加密壳两类。
-
压缩壳的特点是减小软件体积大小,加密保护不是重点。
-
加密壳种类比较多,不同的壳侧重点不同,一些壳单纯保护程序,另一些壳提供额外的功能,如提供注册机制、使用次数、时间限制等。
演示UPX压缩壳
利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序