序:
学习免杀,不要看那些复杂代码多么多么高级多么多么复杂,稳扎稳打从0开始完全没问题。
底子要求:
会基础语法,免杀和编程不一样,免杀更多看的是思路;比如你学一套c/c++语言,教你怎么开发,所以有什么用呢?c语言最大的作用在系统底层,web做不了,脚本写的麻烦,ui工具换环境就容易崩溃缺失文件,在安全上基本就是逆向病毒样本和免杀能有点作用,其他的你图个啥呢?
1.shellcode加载原理
首先shellcode本身是一段代码从内存中提取出来的二进制程序,可以理解为dll的一个函数,方法,类,随便什么都好,大佬们总喜欢用很抽象的语言解释简单的事,实际就是能执行的程序区域。可能是个API可能是个自定义函数可能是个其他什么的。
看到反汇编,硬编码,看到这个0x48可能基本都明白啥意思了
2.加载shellcode
2.1直接原始加载
首先要设置成数据堆可以进行读写执行,我们把shellcode设置为全局变量就相当于放在了.data段里(堆栈数据等请百度或者学习汇编,懒的可以直接理解为给全局变量加权限,无所谓的)
直接将buf强转,当作函数来用,用函数指针取地址。
生成后测试可以正常上线的
意料之中
2.2内存加载
将shellcode划分到局部变量,成为栈数据,之后申请内存,注意:这里只是申请了shellcode大小的内存并设置为可以读写,还什么都没有做
/*LPVOID VirtualAlloc{
LPVOID lpAddress, // 要分配的内存区域的地址,NULL由系统决定
DWORD dwSize, // 分配的大小
DWORD flAllocationType, // 分配的类型
DWORD flProtect // 该内存的初始保护属性
}; */
最后将shellcode复制到申请的内存,强转为函数运行
测试上线正常
不知道两个杀软犯什么毛病,上线了都没杀,而且查杀还多了个
这里还顺便做了个测试,添加所谓混淆
实际没什么用
2.3回调函数加载
回调函数优点在于可以直接通过函数在R3去调用R0功能,winapi有很多回调函数,这里拿一个进行演示
其实就是用回调函数启动shellcode了,只是形式变了下
正常上线
数字可以过了,但是运行一会还是会被杀
少了两个查杀
3、总结
基本的一些基础知识ok了,后续就是各种免杀方式了,从简单到复杂慢慢来吧。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...